summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2016-03-08 20:45:26 -0800
committerKenneth Graunke <[email protected]>2016-03-09 19:44:18 -0800
commit3823b53ff88b36cfe0c46a2207abe8568237283d (patch)
tree3d42652b260d079690143462421c8d00ffc5f56f
parent3dc2630e457155a4e8c8613911fe178bc4adf743 (diff)
mesa: Make glGetInteger64v convert float/doubles to 32-bit integers.
According to the GL 4.4 core specification, section 2.2.2 ("Data Conversions For State Query Commands"): "If a command returning integer data is called, such as GetIntegerv or GetInteger64v, a boolean value of TRUE or FALSE is interpreted as one or zero, respectively. A floating-point value is rounded to the nearest integer, unless the value is an RGBA color component, a DepthRange value, or a depth buffer clear value. In these cases, the query command converts the floating-point value to an integer according to the INT entry of table 18.2; a value not in [−1, 1] converts to an undefined value." The INT entry of table 18.2 shows that b = 32, meaning the expectation is to convert it to a 32-bit integer value. Fixes: dEQP-GLES3.functional.state_query.floats.blend_color_getinteger64 dEQP-GLES3.functional.state_query.floats.color_clear_value_getinteger64 dEQP-GLES3.functional.state_query.floats.depth_clear_value_getinteger64 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94456 Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Dave Airlie <[email protected]>
-rw-r--r--src/mesa/main/get.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
index 4cc82d8bf42..67c4f99ceba 100644
--- a/src/mesa/main/get.c
+++ b/src/mesa/main/get.c
@@ -1717,19 +1717,19 @@ _mesa_GetInteger64v(GLenum pname, GLint64 *params)
break;
case TYPE_FLOATN_4:
- params[3] = FLOAT_TO_INT64(((GLfloat *) p)[3]);
+ params[3] = FLOAT_TO_INT(((GLfloat *) p)[3]);
case TYPE_FLOATN_3:
- params[2] = FLOAT_TO_INT64(((GLfloat *) p)[2]);
+ params[2] = FLOAT_TO_INT(((GLfloat *) p)[2]);
case TYPE_FLOATN_2:
- params[1] = FLOAT_TO_INT64(((GLfloat *) p)[1]);
+ params[1] = FLOAT_TO_INT(((GLfloat *) p)[1]);
case TYPE_FLOATN:
- params[0] = FLOAT_TO_INT64(((GLfloat *) p)[0]);
+ params[0] = FLOAT_TO_INT(((GLfloat *) p)[0]);
break;
case TYPE_DOUBLEN_2:
- params[1] = FLOAT_TO_INT64(((GLdouble *) p)[1]);
+ params[1] = FLOAT_TO_INT(((GLdouble *) p)[1]);
case TYPE_DOUBLEN:
- params[0] = FLOAT_TO_INT64(((GLdouble *) p)[0]);
+ params[0] = FLOAT_TO_INT(((GLdouble *) p)[0]);
break;
case TYPE_INT_4: