summaryrefslogtreecommitdiff
path: root/src/gallium/targets/xorg-vmwgfx/vmw_ioctl.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/targets/xorg-vmwgfx/vmw_ioctl.c')
-rw-r--r--src/gallium/targets/xorg-vmwgfx/vmw_ioctl.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/gallium/targets/xorg-vmwgfx/vmw_ioctl.c b/src/gallium/targets/xorg-vmwgfx/vmw_ioctl.c
index 96ee4ff82b..7c799b5827 100644
--- a/src/gallium/targets/xorg-vmwgfx/vmw_ioctl.c
+++ b/src/gallium/targets/xorg-vmwgfx/vmw_ioctl.c
@@ -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;
+}