svga: implement sRGB rendering for imported surfaces
authorNeha Bhende <bhenden@vmware.com>
Thu, 27 Apr 2017 17:05:35 +0000 (10:05 -0700)
committerBrian Paul <brianp@vmware.com>
Sat, 29 Apr 2017 03:03:06 +0000 (21:03 -0600)
If texture is imported and templ format is sRGB, use compatible sRGB format
to the imported texture format while creating surface view.

tested with MTT piglit, glretrace, viewperf and conform

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Charmaine Lee <charmainel@vmware.com>
src/gallium/drivers/svga/svga_surface.c

index fdc6ba4e4daa478c69e948d6c4c5e33f93e84b7e..04173266ff0c279aea53844b43a64e853438237b 100644 (file)
@@ -305,10 +305,17 @@ svga_create_surface_view(struct pipe_context *pipe,
       bind = PIPE_BIND_RENDER_TARGET;
    }
 
-   if (tex->imported)
+   if (tex->imported) {
+      /* imported resource (a window) */
       format = tex->key.format;
-   else
+      if (util_format_is_srgb(surf_tmpl->format)) {
+         /* sRGB rendering to window */
+         format = svga_linear_to_srgb(format);
+      }
+   }
+   else {
       format = svga_translate_format(ss, surf_tmpl->format, bind);
+   }
 
    assert(format != SVGA3D_FORMAT_INVALID);