summaryrefslogtreecommitdiff
path: root/src/gallium/winsys/svga
diff options
context:
space:
mode:
authorNeha Bhende <bhenden@vmware.com>2021-12-15 16:44:44 -0800
committerMarge Bot <emma+marge@anholt.net>2022-01-18 23:50:36 +0000
commitdc512f11ea29758742d199fc278e98d7f0a005b6 (patch)
treea8883504d1565d5224ba876481443ec1673e7c0e /src/gallium/winsys/svga
parent391a8bbc7738ac9326e246ee9500e05e086ff339 (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')
-rw-r--r--src/gallium/winsys/svga/drm/vmw_screen.h1
-rw-r--r--src/gallium/winsys/svga/drm/vmw_screen_ioctl.c12
-rw-r--r--src/gallium/winsys/svga/drm/vmwgfx_drm.h3
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