From b5827db2eaf739b4fa620326a92561ee096df5f7 Mon Sep 17 00:00:00 2001 From: Charmaine Lee Date: Fri, 27 Oct 2017 15:41:37 -0700 Subject: [PATCH] winsys/drm: enable intra_surface_copy if HW_CAP2 is supported With drm version 2_15, we can inquire for support of HW_CAP2. If it is supported, we can enable intra_surface_copy support. Reviewed-by: Brian Paul Reviewed-by: Sinclair Yeh Reviewed-by: Deepak Rawat --- src/gallium/winsys/svga/drm/vmw_screen_ioctl.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/gallium/winsys/svga/drm/vmw_screen_ioctl.c b/src/gallium/winsys/svga/drm/vmw_screen_ioctl.c index 7d5aa007572..67d3df29c43 100644 --- a/src/gallium/winsys/svga/drm/vmw_screen_ioctl.c +++ b/src/gallium/winsys/svga/drm/vmw_screen_ioctl.c @@ -1018,14 +1018,9 @@ vmw_ioctl_init(struct vmw_winsys_screen *vws) if (vws->base.have_gb_objects && !drm_gb_capable) goto out_no_3d; - /* - * CAP2 functionality is not yet in vmwgfx. Till then, avoiding - * this code path. - */ - vws->base.have_intra_surface_copy = FALSE; - vws->base.have_vgpu10 = FALSE; vws->base.have_sm4_1 = FALSE; + vws->base.have_intra_surface_copy = FALSE; if (vws->base.have_gb_objects) { memset(&gp_arg, 0, sizeof(gp_arg)); @@ -1074,6 +1069,14 @@ vmw_ioctl_init(struct vmw_winsys_screen *vws) } if (vws->ioctl.have_drm_2_15) { + memset(&gp_arg, 0, sizeof(gp_arg)); + gp_arg.param = DRM_VMW_PARAM_HW_CAPS2; + ret = drmCommandWriteRead(vws->ioctl.drm_fd, DRM_VMW_GET_PARAM, + &gp_arg, sizeof(gp_arg)); + if (ret == 0 && gp_arg.value != 0) { + vws->base.have_intra_surface_copy = TRUE; + } + memset(&gp_arg, 0, sizeof(gp_arg)); gp_arg.param = DRM_VMW_PARAM_SM4_1; ret = drmCommandWriteRead(vws->ioctl.drm_fd, DRM_VMW_GET_PARAM, -- 2.30.2