winsys/svga: Add an environment variable to force host-backed operation
authorThomas Hellstrom <thellstrom@vmware.com>
Tue, 26 Mar 2019 20:36:04 +0000 (21:36 +0100)
committerThomas Hellstrom <thellstrom@vmware.com>
Thu, 2 May 2019 07:50:22 +0000 (09:50 +0200)
The vmwgfx kernel module has a compatibility mode for user-space that is
not guest-backed resource aware. Add an environment variable to facilitate
testing of this mode on guest-backed aware kernels: if the environment
variable SVGA_FORCE_HOST_BACKED is defined, the driver will use host-backed
operation.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Deepak Rawat <drawat@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
src/gallium/winsys/svga/drm/vmw_screen_ioctl.c

index 0ec8c1abe11c3ffba2e0e88ccb18cbef6a3623b5..cdfe284c4c81d3e7e54db9a60ba1f07735c77b76 100644 (file)
@@ -967,6 +967,7 @@ vmw_ioctl_init(struct vmw_winsys_screen *vws)
    drmVersionPtr version;
    boolean drm_gb_capable;
    boolean have_drm_2_5;
+   const char *getenv_val;
 
    VMW_FUNC;
 
@@ -1006,17 +1007,21 @@ vmw_ioctl_init(struct vmw_winsys_screen *vws)
       goto out_no_3d;
    }
    vws->ioctl.hwversion = gp_arg.value;
-
-   memset(&gp_arg, 0, sizeof(gp_arg));
-   gp_arg.param = DRM_VMW_PARAM_HW_CAPS;
-   ret = drmCommandWriteRead(vws->ioctl.drm_fd, DRM_VMW_GET_PARAM,
-                             &gp_arg, sizeof(gp_arg));
+   getenv_val = getenv("SVGA_FORCE_HOST_BACKED");
+   if (!getenv_val || strcmp(getenv_val, "0") == 0) {
+      memset(&gp_arg, 0, sizeof(gp_arg));
+      gp_arg.param = DRM_VMW_PARAM_HW_CAPS;
+      ret = drmCommandWriteRead(vws->ioctl.drm_fd, DRM_VMW_GET_PARAM,
+                                &gp_arg, sizeof(gp_arg));
+   } else {
+      ret = -EINVAL;
+   }
    if (ret)
       vws->base.have_gb_objects = FALSE;
    else
       vws->base.have_gb_objects =
          !!(gp_arg.value & (uint64_t) SVGA_CAP_GBOBJECTS);
-   
+
    if (vws->base.have_gb_objects && !drm_gb_capable)
       goto out_no_3d;