X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Ftargets%2Fxorg-vmwgfx%2Fvmw_ioctl.c;h=7625d2fb8f9aa3383de19240ccd05c39065b7e85;hb=437c748bf5072d2bded77a00c74c51cdb8b510e5;hp=96ee4ff82b4c7a6f94e5ed4e099de8d5fa727627;hpb=880e3fb09b538f6f0b6fad2db7e0e10e9df43555;p=mesa.git diff --git a/src/gallium/targets/xorg-vmwgfx/vmw_ioctl.c b/src/gallium/targets/xorg-vmwgfx/vmw_ioctl.c index 96ee4ff82b4..7625d2fb8f9 100644 --- a/src/gallium/targets/xorg-vmwgfx/vmw_ioctl.c +++ b/src/gallium/targets/xorg-vmwgfx/vmw_ioctl.c @@ -165,7 +165,7 @@ vmw_ioctl_buffer_create(struct vmw_customizer *vmw, uint32_t size, unsigned *han struct drm_vmw_dmabuf_rep *rep = &arg.rep; int ret; - buf = xcalloc(1, sizeof(*buf)); + buf = calloc(1, sizeof(*buf)); if (!buf) goto err; @@ -192,7 +192,7 @@ vmw_ioctl_buffer_create(struct vmw_customizer *vmw, uint32_t size, unsigned *han return buf; err_free: - xfree(buf); + free(buf); err: return NULL; } @@ -211,7 +211,7 @@ vmw_ioctl_buffer_destroy(struct vmw_customizer *vmw, struct vmw_dma_buffer *buf) arg.handle = buf->handle; drmCommandWrite(vmw->fd, DRM_VMW_UNREF_DMABUF, &arg, sizeof(arg)); - xfree(buf); + free(buf); } void * @@ -240,3 +240,21 @@ vmw_ioctl_buffer_unmap(struct vmw_customizer *vmw, struct vmw_dma_buffer *buf) { --buf->map_count; } + +int +vmw_ioctl_update_layout(struct vmw_customizer *vmw, uint32_t num, struct vmw_rect *rects) +{ + struct drm_vmw_update_layout_arg ul_arg; + int ret; + + assert(sizeof(struct vmw_rect) == sizeof(struct drm_vmw_rect)); + + memset(&ul_arg, 0, sizeof(ul_arg)); + ul_arg.num_outputs = num; + ul_arg.rects = (uint64_t)(uintptr_t)rects; + + ret = drmCommandWriteRead(vmw->fd, DRM_VMW_UPDATE_LAYOUT, + &ul_arg, sizeof(ul_arg)); + + return ret; +}