[Mesa-dev] [PATCH 04/16] svga: use untyped surface formats in most cases

Brian Paul brianp at vmware.com
Tue Jun 28 23:52:08 UTC 2016


This allows us to do copies between different, but compatible, surface
formats such as RGBA8_UNORM, RGBA8_SINT, RGBA8_UINT, etc. for
GL_ARB_copy_image.
---
 src/gallium/drivers/svga/svga_resource_texture.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/svga/svga_resource_texture.c b/src/gallium/drivers/svga/svga_resource_texture.c
index 0e21f5e..14fe220 100644
--- a/src/gallium/drivers/svga/svga_resource_texture.c
+++ b/src/gallium/drivers/svga/svga_resource_texture.c
@@ -949,10 +949,13 @@ svga_texture_create(struct pipe_screen *screen,
     * 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 &&
-       (util_format_is_srgb(template->format) ||
-        format_has_depth(template->format))) {
+   if (svgascreen->sws->have_vgpu10
+       && ((bindings & (PIPE_BIND_SHARED |
+                        PIPE_BIND_DISPLAY_TARGET |
+                        PIPE_BIND_SCANOUT)) == 0)) {
       SVGA3dSurfaceFormat typeless = svga_typeless_format(tex->key.format);
       if (0) {
          debug_printf("Convert resource type %s -> %s (bind 0x%x)\n",
-- 
1.9.1



More information about the mesa-dev mailing list