[Mesa-dev] [PATCH] i965: Don't use tiled_memcpy to download from RGBX or BGRX surfaces

Jason Ekstrand jason at jlekstrand.net
Mon Feb 2 09:53:43 PST 2015


Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=88841
---
 src/mesa/drivers/dri/i965/intel_pixel_read.c | 7 +++++++
 src/mesa/drivers/dri/i965/intel_tex_image.c  | 7 +++++++
 2 files changed, 14 insertions(+)

diff --git a/src/mesa/drivers/dri/i965/intel_pixel_read.c b/src/mesa/drivers/dri/i965/intel_pixel_read.c
index f3ab05c..df22a63 100644
--- a/src/mesa/drivers/dri/i965/intel_pixel_read.c
+++ b/src/mesa/drivers/dri/i965/intel_pixel_read.c
@@ -132,6 +132,13 @@ intel_readpixels_tiled_memcpy(struct gl_context * ctx,
    if (rb->NumSamples > 1)
       return false;
 
+   /* We can't handle copying from RGBX or BGRX because the tiled_memcpy
+    * function doesn't set the last channel to 1.
+    */
+   if (rb->Format == MESA_FORMAT_B8G8R8X8_UNORM ||
+       rb->Format == MESA_FORMAT_R8G8B8X8_UNORM)
+      return false;
+
    if (!intel_get_memcpy(rb->Format, format, type, &mem_copy, &cpp))
       return false;
 
diff --git a/src/mesa/drivers/dri/i965/intel_tex_image.c b/src/mesa/drivers/dri/i965/intel_tex_image.c
index 53efbbb..6eebfc4 100644
--- a/src/mesa/drivers/dri/i965/intel_tex_image.c
+++ b/src/mesa/drivers/dri/i965/intel_tex_image.c
@@ -392,6 +392,13 @@ intel_gettexsubimage_tiled_memcpy(struct gl_context *ctx,
        packing->Invert)
       return false;
 
+   /* We can't handle copying from RGBX or BGRX because the tiled_memcpy
+    * function doesn't set the last channel to 1.
+    */
+   if (texImage->TexFormat == MESA_FORMAT_B8G8R8X8_UNORM ||
+       texImage->TexFormat == MESA_FORMAT_R8G8B8X8_UNORM)
+      return false;
+
    if (!intel_get_memcpy(texImage->TexFormat, format, type, &mem_copy, &cpp))
       return false;
 
-- 
2.2.2



More information about the mesa-dev mailing list