[Mesa-dev] [PATCH 06/14] mesa: added swapBytes parameter to _mesa_format_matches_format_and_type()
Brian Paul
brianp at vmware.com
Thu Jan 26 19:04:12 PST 2012
Not actually used yet though.
---
src/mesa/main/formats.c | 10 ++++++----
src/mesa/main/formats.h | 3 ++-
src/mesa/main/readpix.c | 3 ++-
src/mesa/swrast/s_drawpix.c | 3 ++-
4 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
index 834d4c8..f352395 100644
--- a/src/mesa/main/formats.c
+++ b/src/mesa/main/formats.c
@@ -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();
diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h
index 9609343..3a694a8 100644
--- a/src/mesa/main/formats.h
+++ b/src/mesa/main/formats.h
@@ -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
diff --git a/src/mesa/main/readpix.c b/src/mesa/main/readpix.c
index 84b5224..71de0b3 100644
--- a/src/mesa/main/readpix.c
+++ b/src/mesa/main/readpix.c
@@ -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 */
diff --git a/src/mesa/swrast/s_drawpix.c b/src/mesa/swrast/s_drawpix.c
index c5466dd..c19808b 100644
--- a/src/mesa/swrast/s_drawpix.c
+++ b/src/mesa/swrast/s_drawpix.c
@@ -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;
--
1.7.1
More information about the mesa-dev
mailing list