Mesa (master): intel: check for single memcpy() in memcpy_get_tex_image()

Brian Paul brianp at kemper.freedesktop.org
Thu Oct 29 17:04:57 UTC 2009


Module: Mesa
Branch: master
Commit: ea414e331802e49d59eb2ddd2466d58a383bc931
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ea414e331802e49d59eb2ddd2466d58a383bc931

Author: Brian Paul <brianp at vmware.com>
Date:   Thu Oct 29 11:04:11 2009 -0600

intel: check for single memcpy() in memcpy_get_tex_image()

---

 src/mesa/drivers/dri/intel/intel_tex_image.c |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_tex_image.c b/src/mesa/drivers/dri/intel/intel_tex_image.c
index c861fc5..6301444 100644
--- a/src/mesa/drivers/dri/intel/intel_tex_image.c
+++ b/src/mesa/drivers/dri/intel/intel_tex_image.c
@@ -696,11 +696,16 @@ memcpy_get_tex_image(GLcontext *ctx, GLenum target, GLint level,
          const GLint srcRowStride = texImage->RowStride * bpp;
          GLuint row;
 
-         for (row = 0; row < texImage->Height; row++) {
-            memcpy(dst, src, bytesPerRow);
-            dst += dstRowStride;
-            src += srcRowStride;
-         }         
+         if (bytesPerRow == dstRowStride && bytesPerRow == dstRowStride) {
+            memcpy(dst, src, bytesPerRow * texImage->Height);
+         }
+         else {
+            for (row = 0; row < texImage->Height; row++) {
+               memcpy(dst, src, bytesPerRow);
+               dst += dstRowStride;
+               src += srcRowStride;
+            }
+         }
       }
 
       if (_mesa_is_bufferobj(pack->BufferObj)) {




More information about the mesa-commit mailing list