summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDeepak Rawat <drawat@vmware.com>2018-08-09 16:07:42 -0700
committerDeepak Rawat <drawat@vmware.com>2018-08-09 16:34:05 -0700
commita68f0904fadc9ae10a7355eb4da1b444fd1ec124 (patch)
tree589a307278aaeed3cb019b847dc00313c2432f44
parent14b59c6d8d1ef32f4fba4a502c2c209f7443c213 (diff)
vmwgfx: Add SM4_1 flag
A boolean flag in device private structure to specify if the device support SM4_1. Signed-off-by: Deepak Rawat <drawat@vmware.com> Reviewed-by: Sinclair Yeh <syeh@vmware.com> Reviewed-by: Brian Paul <brianp@vmware.com> Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com> Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
-rw-r--r--vmwgfx_drv.c18
-rw-r--r--vmwgfx_drv.h1
2 files changed, 17 insertions, 2 deletions
diff --git a/vmwgfx_drv.c b/vmwgfx_drv.c
index 45aeccf..265e77d 100644
--- a/vmwgfx_drv.c
+++ b/vmwgfx_drv.c
@@ -934,9 +934,23 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset)
if (ret)
goto out_no_fifo;
+ if (dev_priv->has_dx) {
+ /*
+ * SVGA_CAP2_DX2 (DefineGBSurface_v3) is needed for SM4_1
+ * support
+ */
+ if ((dev_priv->capabilities2 & SVGA_CAP2_DX2) != 0) {
+ vmw_write(dev_priv, SVGA_REG_DEV_CAP,
+ SVGA3D_DEVCAP_SM41);
+ dev_priv->has_sm4_1 = vmw_read(dev_priv,
+ SVGA_REG_DEV_CAP);
+ }
+ }
+
DRM_INFO("DX: %s\n", dev_priv->has_dx ? "yes." : "no.");
- DRM_INFO("Atomic: %s\n",
- (dev->driver->driver_features & DRIVER_ATOMIC) ? "yes" : "no");
+ DRM_INFO("Atomic: %s\n", (dev->driver->driver_features & DRIVER_ATOMIC)
+ ? "yes." : "no.");
+ DRM_INFO("SM4_1: %s\n", dev_priv->has_sm4_1 ? "yes." : "no.");
snprintf(host_log, sizeof(host_log), "vmwgfx: %s-%s",
VMWGFX_REPO, VMWGFX_GIT_VERSION);
diff --git a/vmwgfx_drv.h b/vmwgfx_drv.h
index 5884b44..4db863d 100644
--- a/vmwgfx_drv.h
+++ b/vmwgfx_drv.h
@@ -397,6 +397,7 @@ struct vmw_private {
spinlock_t cap_lock;
bool has_dx;
bool assume_16bpp;
+ bool has_sm4_1;
/*
* VGA registers.