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);