mesa/get: Make GetFloat/GetDouble of TYPE_INT_N not normalize things.
authorKenneth Graunke <kenneth@whitecape.org>
Sun, 18 Dec 2016 03:47:38 +0000 (19:47 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 19 Dec 2016 19:33:40 +0000 (11:33 -0800)
GetFloat of integer valued things is supposed to perform a simple
int -> float conversion.  INT_TO_FLOAT is not that.  Instead, it
converts [-21474836482147483647] to a normalized [-1.0, 1.0] float.

This is only used for COMPRESSED_TEXTURE_FORMATS, which nobody in
their right mind would try and access via glGetFloat(), but we may
as well fix it.

Found by inspection.

v2: Gotta catch 'em all (fix another case of this caught by Ilia)

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
src/mesa/main/get.c

index ba02cb2837f2a3aca85a3b4c961cc5d3b4b859de..12f937a01a99d32f3156dd48bbac623ff6faf252 100644 (file)
@@ -1564,7 +1564,7 @@ _mesa_GetFloatv(GLenum pname, GLfloat *params)
 
    case TYPE_INT_N:
       for (i = 0; i < v.value_int_n.n; i++)
-        params[i] = INT_TO_FLOAT(v.value_int_n.ints[i]);
+        params[i] = (GLfloat) v.value_int_n.ints[i];
       break;
 
    case TYPE_INT64:
@@ -2464,7 +2464,7 @@ _mesa_GetFloati_v(GLenum pname, GLuint index, GLfloat *params)
 
    case TYPE_INT_N:
       for (i = 0; i < v.value_int_n.n; i++)
-        params[i] = INT_TO_FLOAT(v.value_int_n.ints[i]);
+        params[i] = (GLfloat) v.value_int_n.ints[i];
       break;
 
    case TYPE_INT64:
@@ -2536,7 +2536,7 @@ _mesa_GetDoublei_v(GLenum pname, GLuint index, GLdouble *params)
 
    case TYPE_INT_N:
       for (i = 0; i < v.value_int_n.n; i++)
-        params[i] = (GLdouble) INT_TO_FLOAT(v.value_int_n.ints[i]);
+        params[i] = (GLdouble) v.value_int_n.ints[i];
       break;
 
    case TYPE_INT64: