Revert "svga: use untyped surface formats in most cases"
authorCharmaine Lee <charmainel@vmware.com>
Wed, 26 Oct 2016 22:46:49 +0000 (15:46 -0700)
committerBrian Paul <brianp@vmware.com>
Thu, 3 Nov 2016 20:29:23 +0000 (14:29 -0600)
Using untyped surface formats causes huge performance degradation on Fusion.
This reverts commit eb0ced74f6decd1bf1e111b162e1389bede89af6 until
the backend has a better solution to address typeless surface formats.

src/gallium/drivers/svga/svga_resource_texture.c

index e16f73583c7327dba7b3a184b66613c16472b333..89909336e9136725de52c8af407300bd4bb8a6cc 100644 (file)
@@ -1072,17 +1072,14 @@ svga_texture_create(struct pipe_screen *screen,
       goto fail;
    }
 
-   /* The actual allocation is done with a typeless format.  Typeless
+   /* Use typeless formats for sRGB and depth resources.  Typeless
     * formats can be reinterpreted as other formats.  For example,
     * SVGA3D_R8G8B8A8_UNORM_TYPELESS can be interpreted as
     * SVGA3D_R8G8B8A8_UNORM_SRGB or SVGA3D_R8G8B8A8_UNORM.
-    * Do not use typeless formats for SHARED, DISPLAY_TARGET or SCANOUT
-    * buffers.
     */
-   if (svgascreen->sws->have_vgpu10
-       && ((bindings & (PIPE_BIND_SHARED |
-                        PIPE_BIND_DISPLAY_TARGET |
-                        PIPE_BIND_SCANOUT)) == 0)) {
+   if (svgascreen->sws->have_vgpu10 &&
+       (util_format_is_srgb(template->format) ||
+        format_has_depth(template->format))) {
       SVGA3dSurfaceFormat typeless = svga_typeless_format(tex->key.format);
       if (0) {
          debug_printf("Convert resource type %s -> %s (bind 0x%x)\n",