On 04/16/2013 05:21 PM, Eric Anholt wrote:
The next commit introduces what is apparently our first one, which tripped
over this in glReadPixels.
---
  src/mesa/drivers/dri/intel/intel_blit.c |   21 ++++++++++++++-------
  1 file changed, 14 insertions(+), 7 deletions(-)

Commit message here should be "16 byte-per-pixel formats"...

diff --git a/src/mesa/drivers/dri/intel/intel_blit.c 
b/src/mesa/drivers/dri/intel/intel_blit.c
index 1f3fad5..cc2fa70 100644
--- a/src/mesa/drivers/dri/intel/intel_blit.c
+++ b/src/mesa/drivers/dri/intel/intel_blit.c
@@ -150,15 +150,22 @@ intelEmitCopyBlit(struct intel_context *intel,
     if (src_pitch % 4 != 0 || dst_pitch % 4 != 0)
        return false;

-   /* For big formats (such as floating point), do the copy using 32bpp and
-    * multiply the coordinates.
+   /* For big formats (such as floating point), do the copy using 16 or 32bpp
+    * and multiply the coordinates.
      */
     if (cpp > 4) {
-      assert(cpp % 4 == 0);
-      dst_x *= cpp / 4;
-      dst_x2 *= cpp / 4;
-      src_x *= cpp / 4;
-      cpp = 4;
+      if (cpp % 4 == 2) {
+         dst_x *= cpp / 2;
+         dst_x2 *= cpp / 2;
+         src_x *= cpp / 2;
+         cpp = 2;
+      } else {
+         assert(cpp % 4 == 0);
+         dst_x *= cpp / 4;
+         dst_x2 *= cpp / 4;
+         src_x *= cpp / 4;
+         cpp = 4;
+      }
     }

     BR13 = br13_for_cpp(cpp) | translate_raster_op(logic_op) << 16;


_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to