diff options
author | Neha Bhende <bhenden@vmware.com> | 2021-12-15 16:44:44 -0800 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2022-01-18 23:50:36 +0000 |
commit | dc512f11ea29758742d199fc278e98d7f0a005b6 (patch) | |
tree | a8883504d1565d5224ba876481443ec1673e7c0e /src/gallium/winsys/svga/drm | |
parent | 391a8bbc7738ac9326e246ee9500e05e086ff339 (diff) |
svga: Add utility to check for GL43 support
GL43 support in SVGA driver requires vmwgfx kernel version 2.20 and
GL43 capable SVGA device.
Reviewed-by: Charmaine Lee <charmainel@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14270>
Diffstat (limited to 'src/gallium/winsys/svga/drm')
-rw-r--r-- | src/gallium/winsys/svga/drm/vmw_screen.h | 1 | ||||
-rw-r--r-- | src/gallium/winsys/svga/drm/vmw_screen_ioctl.c | 12 | ||||
-rw-r--r-- | src/gallium/winsys/svga/drm/vmwgfx_drm.h | 3 |
3 files changed, 15 insertions, 1 deletions
diff --git a/src/gallium/winsys/svga/drm/vmw_screen.h b/src/gallium/winsys/svga/drm/vmw_screen.h index 1708921302d..127ef16d6e3 100644 --- a/src/gallium/winsys/svga/drm/vmw_screen.h +++ b/src/gallium/winsys/svga/drm/vmw_screen.h @@ -82,6 +82,7 @@ struct vmw_winsys_screen boolean have_drm_2_17; boolean have_drm_2_18; boolean have_drm_2_19; + boolean have_drm_2_20; } ioctl; struct { diff --git a/src/gallium/winsys/svga/drm/vmw_screen_ioctl.c b/src/gallium/winsys/svga/drm/vmw_screen_ioctl.c index c470b7ba572..3e952a96778 100644 --- a/src/gallium/winsys/svga/drm/vmw_screen_ioctl.c +++ b/src/gallium/winsys/svga/drm/vmw_screen_ioctl.c @@ -1005,6 +1005,8 @@ vmw_ioctl_init(struct vmw_winsys_screen *vws) (version->version_major == 2 && version->version_minor > 17); vws->ioctl.have_drm_2_19 = version->version_major > 2 || (version->version_major == 2 && version->version_minor > 18); + vws->ioctl.have_drm_2_20 = version->version_major > 2 || + (version->version_major == 2 && version->version_minor > 19); vws->ioctl.drm_execbuf_version = vws->ioctl.have_drm_2_9 ? 2 : 1; @@ -1125,6 +1127,16 @@ vmw_ioctl_init(struct vmw_winsys_screen *vws) } } + if (vws->ioctl.have_drm_2_20 && vws->base.have_sm5) { + memset(&gp_arg, 0, sizeof(gp_arg)); + gp_arg.param = DRM_VMW_PARAM_GL43; + 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_gl43 = TRUE; + } + } + memset(&gp_arg, 0, sizeof(gp_arg)); gp_arg.param = DRM_VMW_PARAM_3D_CAPS_SIZE; ret = drmCommandWriteRead(vws->ioctl.drm_fd, DRM_VMW_GET_PARAM, diff --git a/src/gallium/winsys/svga/drm/vmwgfx_drm.h b/src/gallium/winsys/svga/drm/vmwgfx_drm.h index 9078775feb5..05763d834fb 100644 --- a/src/gallium/winsys/svga/drm/vmwgfx_drm.h +++ b/src/gallium/winsys/svga/drm/vmwgfx_drm.h @@ -1,6 +1,6 @@ /************************************************************************** * - * Copyright © 2009-2015 VMware, Inc., Palo Alto, CA., USA + * Copyright © 2009-2021 VMware, Inc., Palo Alto, CA., USA * All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -110,6 +110,7 @@ extern "C" { #define DRM_VMW_PARAM_HW_CAPS2 13 #define DRM_VMW_PARAM_SM4_1 14 #define DRM_VMW_PARAM_SM5 15 +#define DRM_VMW_PARAM_GL43 16 /** * enum drm_vmw_handle_type - handle type for ref ioctls |