From: Dave Airlie <airl...@redhat.com> if the test I wrote in piglit for sint-uint is correct, this fixes things in one direction, reading a UINT32 buffer into a INT32 output.
The other case will need a bit more work. Signed-off-by: Dave Airlie <airl...@redhat.com> --- src/mesa/main/pack.c | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/mesa/main/pack.c b/src/mesa/main/pack.c index d07e2aa..18848cf 100644 --- a/src/mesa/main/pack.c +++ b/src/mesa/main/pack.c @@ -461,6 +461,14 @@ get_type_min_max(GLenum type, GLfloat *min, GLfloat *max) #undef SRC_CONVERT #undef FN_NAME +#define DST_TYPE GLint +#define SRC_CONVERT(x) MIN2(x, 0x7fffffff) +#define FN_NAME pack_int_from_uint_rgba +#include "pack_tmp.h" +#undef DST_TYPE +#undef SRC_CONVERT +#undef FN_NAME + #define DST_TYPE GLushort #define SRC_CONVERT(x) MIN2(x, 0xffff) #define FN_NAME pack_ushort_from_uint_rgba @@ -503,8 +511,7 @@ _mesa_pack_rgba_span_int(struct gl_context *ctx, GLuint n, GLuint rgba[][4], pack_uint_from_uint_rgba(dstAddr, dstFormat, rgba, n); break; case GL_INT: - /* No conversion necessary. */ - pack_uint_from_uint_rgba(dstAddr, dstFormat, rgba, n); + pack_int_from_uint_rgba(dstAddr, dstFormat, rgba, n); break; case GL_UNSIGNED_SHORT: pack_ushort_from_uint_rgba(dstAddr, dstFormat, rgba, n); -- 1.7.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev