Bug 94456 - dEQP-GLES3.functional.state_query.floats.{blend_color,color_clear_value,depth_clear_value}_getinteger64 fail
Summary: dEQP-GLES3.functional.state_query.floats.{blend_color,color_clear_value,depth...
Status: RESOLVED FIXED
Alias: None
Product: Mesa
Classification: Unclassified
Component: Mesa core (show other bugs)
Version: git
Hardware: Other All
: medium normal
Assignee: Kenneth Graunke
QA Contact: mesa-dev
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: i965-deqp
  Show dependency treegraph
 
Reported: 2016-03-09 01:36 UTC by Kenneth Graunke
Modified: 2016-03-10 03:51 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Kenneth Graunke 2016-03-09 01:36:04 UTC
The following tests all fail:

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

It looks like we're converting the numbers from float to 64-bit integer incorrectly (or at least differently than the test expects).
Comment 1 Kenneth Graunke 2016-03-09 04:53:07 UTC
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.  This also matches what dEQP expects, fixing all three tests.

It seems a little silly for glGetInteger64v to return a 32-bit number, but then again it's probably more reasonable to request floating point data via glGetFloat()...

This has apparently been broken in Mesa since 2009.
Comment 2 Kenneth Graunke 2016-03-09 05:51:21 UTC
Patch on list:
https://lists.freedesktop.org/archives/mesa-dev/2016-March/109466.html
Comment 3 Kenneth Graunke 2016-03-10 03:51:24 UTC
Fixed on master by:

commit 3823b53ff88b36cfe0c46a2207abe8568237283d
Author: Kenneth Graunke <kenneth@whitecape.org>
Date:   Tue Mar 8 20:45:26 2016 -0800

    mesa: Make glGetInteger64v convert float/doubles to 32-bit integers.

Thanks to Dave for reviewing!


bug/show.html.tmpl processed on Mar 27, 2017 at 02:52:04.
(provided by the Example extension).