mesa: added swapBytes parameter to _mesa_format_matches_format_and_type()
authorBrian Paul <brianp@vmware.com>
Fri, 27 Jan 2012 03:01:12 +0000 (20:01 -0700)
committerBrian Paul <brianp@vmware.com>
Sat, 28 Jan 2012 01:21:44 +0000 (18:21 -0700)
Not actually used yet though.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/mesa/main/formats.c
src/mesa/main/formats.h
src/mesa/main/readpix.c
src/mesa/swrast/s_drawpix.c

index 834d4c81ffba5c3a36836871f3619ead0ae5024b..f35239527b585365f9266e168ba34a2210395c39 100644 (file)
@@ -2516,14 +2516,16 @@ _mesa_format_to_type_and_comps(gl_format format,
 /**
  * Check if a gl_format exactly matches a GL formaat/type combination
  * such that we can use memcpy() from one to the other.
- *
- * Note: this matching assumes that GL_PACK/UNPACK_SWAP_BYTES is unset.
- *
+ * \param gl_format  a MESA_FORMAT_x value
+ * \param format  the user-specified image format
+ * \param type  the user-specified image datatype
+ * \param swapBytes  typically the current pixel pack/unpack byteswap state
  * \return GL_TRUE if the formats match, GL_FALSE otherwise.
  */
 GLboolean
 _mesa_format_matches_format_and_type(gl_format gl_format,
-                                    GLenum format, GLenum type)
+                                    GLenum format, GLenum type,
+                                     GLboolean swapBytes)
 {
    const GLboolean littleEndian = _mesa_little_endian();
 
index 9609343387fb31f6f2900799a7b4d954faaf1ad2..3a694a813dedae50da13af9cb3210ea9cf70007d 100644 (file)
@@ -343,7 +343,8 @@ _mesa_format_num_components(gl_format format);
 
 GLboolean
 _mesa_format_matches_format_and_type(gl_format gl_format,
-                                    GLenum format, GLenum type);
+                                    GLenum format, GLenum type,
+                                     GLboolean swapBytes);
 
 
 #ifdef __cplusplus
index 84b5224c8583ba2d8124a3e7a2a48fe67531b119..71de0b31298cb841bdcbfc5b47fb0bde4ce64d85 100644 (file)
@@ -209,7 +209,8 @@ fast_read_rgba_pixels_memcpy( struct gl_context *ctx,
    GLubyte *dst, *map;
    int dstStride, stride, j, texelBytes;
 
-   if (!_mesa_format_matches_format_and_type(rb->Format, format, type))
+   if (!_mesa_format_matches_format_and_type(rb->Format, format, type,
+                                             ctx->Pack.SwapBytes))
       return GL_FALSE;
 
    /* check for things we can't handle here */
index c5466ddbd72aa90f433a38f187ff0bffc4381007..c19808bd432981f19f34b8578ed0f0c5d75cd66b 100644 (file)
@@ -239,7 +239,8 @@ fast_draw_rgba_pixels(struct gl_context *ctx, GLint x, GLint y,
       return GL_TRUE;
    }
 
-   if (_mesa_format_matches_format_and_type(rb->Format, format, type)) {
+   if (_mesa_format_matches_format_and_type(rb->Format, format, type,
+                                            ctx->Unpack.SwapBytes)) {
       fast_draw_generic_pixels(ctx, rb, x, y, width, height,
                                format, type, &unpack, pixels);
       return GL_TRUE;