Bug 31495

Summary: [i965 gles2c bisected] OpenGL ES 2.0 conformance GL2Tests_GetBIFD_input.run regressed
Product: Mesa Reporter: fangxun <xunx.fang>
Component: Drivers/DRI/i965Assignee: Kenneth Graunke <kenneth>
Status: VERIFIED FIXED QA Contact:
Severity: normal    
Priority: medium CC: idr, kenneth
Version: unspecified   
Hardware: All   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

Description fangxun 2010-11-09 03:51:40 UTC
System Environment:
--------------------------
Arch:           x86_64
Platform:       piketon
Libdrm:         (master)2.4.22-13-g49447a9b957047db2549b8a929e763bbd87808ba
Mesa:           (master)962967d080a1859bafc843ebdf374bcdfcff9271
Xserver:        (server-1.9-branch)xorg-server-1.9.2
Xf86_video_intel: (master)2.13.901
Kernel: (drm-intel-fixes)424b1ad73df34b9aa5fe6d8bba63fff5ac68531c


Bug detailed description:
-------------------------
OpenGL ES 2.0 conformance GL2Tests_GetBIFD_input.run regressed on one of our Piketon. Bisect shows 84eba3ef71dfa822e5ff0463032cdd2e3515b888 is first bad commit. BTW, on another piketon, it always fails though using good commit. 

commit 84eba3ef71dfa822e5ff0463032cdd2e3515b888
Author:     Ian Romanick <ian.d.romanick@intel.com>
AuthorDate: Wed Oct 13 13:58:44 2010 -0700
Commit:     Ian Romanick <ian.d.romanick@intel.com>
CommitDate: Wed Oct 27 13:35:53 2010 -0700

    Track separate programs for each stage

    The assumption is that all stages are the same program or that
    varyings are passed between stages using built-in varyings.
Comment 1 Ian Romanick 2010-11-09 18:06:56 UTC
This test is checking the values of some of the implementation limits.  Can you attach the before and after output from just that test?
Comment 2 fangxun 2010-11-09 19:37:12 UTC
Compare failed output with passed output, the diffrence is:
#+ glGetFloatv returned invalid value with enum : GL_MAX_FRAGMENT_UNIFORM_VECTORS
#+ glGetIntegerv returned invalid value with enum : GL_MAX_FRAGMENT_UNIFORM_VECTORS
#+ glGetFloatv returned invalid value with enum : GL_MAX_VARYING_VECTORS
#+ glGetIntegerv returned invalid value with enum : GL_MAX_VARYING_VECTORS
#+ glGetFloatv returned invalid value with enum : GL_MAX_VERTEX_UNIFORM_VECTORS
#+ glGetIntegerv returned invalid value with enum : GL_MAX_VERTEX_UNIFORM_VECTORS
Comment 3 Ian Romanick 2010-11-17 12:43:59 UTC
(In reply to comment #2)
> Compare failed output with passed output, the diffrence is:
> #+ glGetFloatv returned invalid value with enum :
> GL_MAX_FRAGMENT_UNIFORM_VECTORS
> #+ glGetIntegerv returned invalid value with enum :
> GL_MAX_FRAGMENT_UNIFORM_VECTORS
> #+ glGetFloatv returned invalid value with enum : GL_MAX_VARYING_VECTORS
> #+ glGetIntegerv returned invalid value with enum : GL_MAX_VARYING_VECTORS
> #+ glGetFloatv returned invalid value with enum : GL_MAX_VERTEX_UNIFORM_VECTORS
> #+ glGetIntegerv returned invalid value with enum :
> GL_MAX_VERTEX_UNIFORM_VECTORS

These are the OpenGL ES 2.0 "replacements" for GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, GL_MAX_VERTEX_UNIFORM_COMPONENTS, and GL_MAX_VARYING_FLOATS.  It's possible that this never actually worked.  We'll look into it.
Comment 4 Kenneth Graunke 2010-11-24 14:12:35 UTC
commit 1197393faa285bee0d99409a1c82f575dbcbc708
Author: Kenneth Graunke <kenneth@whitecape.org>
Date:   Wed Nov 24 13:59:46 2010 -0800

    mesa: Fix glGet of ES2's GL_MAX_*_VECTORS properties.
    
    Previously, the get table listed all three as having custom locations,
    yet find_custom_value did not have cases to handle them.
    
    MAX_VARYING_VECTORS does not need a custom location since MaxVaryings is
    already stored as float[4] (or vec4).  MaxUniformComponents is stored as
    the number of floats, however, so a custom implementation that divides
    by 4 is necessary.
    
    Fixes bugs.freedesktop.org #31495.
Comment 5 fangxun 2010-11-25 18:51:36 UTC
Verified with Mesa master commit: 1eb7a81f2e43842acd59929ce65db2142b69134d.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.