From: Eric Anholt Date: Tue, 24 Jan 2012 22:16:59 +0000 (-0800) Subject: mesa: Add clamping for packing of integer data. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8b97bb02fb1a55a6b0fe558ea1eb97bb4dae0347;p=mesa.git mesa: Add clamping for packing of integer data. Mostly fixes piglit EXT_texture_integer/getteximage-clamping. The remaining failure involves precision loss on storing of int32 texture data (something I knew was an issue, but wasn't trying to test). NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Brian Paul --- diff --git a/src/mesa/main/pack.c b/src/mesa/main/pack.c index f874ab21a8e..cacd7355054 100644 --- a/src/mesa/main/pack.c +++ b/src/mesa/main/pack.c @@ -462,7 +462,7 @@ get_type_min_max(GLenum type, GLfloat *min, GLfloat *max) #undef FN_NAME #define DST_TYPE GLushort -#define SRC_CONVERT(x) (x) +#define SRC_CONVERT(x) MIN2(x, 0xffff) #define FN_NAME pack_ushort_from_uint_rgba #include "pack_tmp.h" #undef DST_TYPE @@ -470,7 +470,7 @@ get_type_min_max(GLenum type, GLfloat *min, GLfloat *max) #undef FN_NAME #define DST_TYPE GLshort -#define SRC_CONVERT(x) (x) +#define SRC_CONVERT(x) CLAMP((int)x, -32768, 32767) #define FN_NAME pack_short_from_uint_rgba #include "pack_tmp.h" #undef DST_TYPE @@ -478,7 +478,7 @@ get_type_min_max(GLenum type, GLfloat *min, GLfloat *max) #undef FN_NAME #define DST_TYPE GLubyte -#define SRC_CONVERT(x) (x) +#define SRC_CONVERT(x) MIN2(x, 0xff) #define FN_NAME pack_ubyte_from_uint_rgba #include "pack_tmp.h" #undef DST_TYPE @@ -486,7 +486,7 @@ get_type_min_max(GLenum type, GLfloat *min, GLfloat *max) #undef FN_NAME #define DST_TYPE GLbyte -#define SRC_CONVERT(x) (x) +#define SRC_CONVERT(x) CLAMP((int)x, -128, 127) #define FN_NAME pack_byte_from_uint_rgba #include "pack_tmp.h" #undef DST_TYPE