aboutsummaryrefslogtreecommitdiffstats
path: root/src/mesa/swrast/s_drawpix.c
diff options
context:
space:
mode:
authorDave Airlie <[email protected]>2015-08-25 14:36:01 +1000
committerDave Airlie <[email protected]>2015-09-02 09:16:43 +1000
commit0ad3a475ef81dad3baf607d749b91dfa1700ca23 (patch)
treea9232bc66a31900353ab3d0a1135333c8b6f9299 /src/mesa/swrast/s_drawpix.c
parent60aea3011525de8bf6506e08c913cbe24cc17767 (diff)
mesa: fix SwapBytes handling in numerous places
In a number of places the SwapBytes handling didn't handle cases with GL_(UN)PACK_ALIGNMENT set and 7 byte width cases aligned to 8 bytes. This adds a common routine to swap bytes a 2D image and uses this code in: texture storage texture get readpixels swrast drawpixels. [airlied: updated with Brian's nitpicks]. Cc: "11.0" <[email protected]> Reviewed-by: Brian Paul <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/mesa/swrast/s_drawpix.c')
-rw-r--r--src/mesa/swrast/s_drawpix.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/mesa/swrast/s_drawpix.c b/src/mesa/swrast/s_drawpix.c
index 5393d50ea02..f05528d0d27 100644
--- a/src/mesa/swrast/s_drawpix.c
+++ b/src/mesa/swrast/s_drawpix.c
@@ -481,17 +481,17 @@ draw_rgba_pixels( struct gl_context *ctx, GLint x, GLint y,
*/
GLint swapSize = _mesa_sizeof_packed_type(type);
if (swapSize == 2 || swapSize == 4) {
- int components = _mesa_components_in_format(format);
- int elementCount = width * height * components;
- tempImage = malloc(elementCount * swapSize);
+ int imageStride = _mesa_image_image_stride(unpack, width, height, format, type);
+
+ tempImage = malloc(imageStride);
if (!tempImage) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glDrawPixels");
return;
}
- if (swapSize == 2)
- _mesa_swap2_copy(tempImage, (GLushort *) pixels, elementCount);
- else
- _mesa_swap4_copy(tempImage, (GLuint *) pixels, elementCount);
+
+ _mesa_swap_bytes_2d_image(format, type, unpack,
+ width, height, tempImage, pixels);
+
pixels = tempImage;
}
}