Bug 99608 - [BISECTED,REGRESSION] dEQP-GLES2.functional.shaders.preprocessor.definitions.undefine_invalid_*
Summary: [BISECTED,REGRESSION] dEQP-GLES2.functional.shaders.preprocessor.definitions....
Status: RESOLVED NOTABUG
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/DRI/i965 (show other bugs)
Version: 17.0
Hardware: Other All
: medium normal
Assignee: Chad Versace
QA Contact: Intel 3D Bugs Mailing List
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-01-31 00:15 UTC by Chad Versace
Modified: 2017-01-31 17:49 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Description Chad Versace 2017-01-31 00:15:13 UTC
The following dEQP tests fail on Mesa 17.0:

    dEQP-GLES2.functional.shaders.preprocessor.definitions.undefine_invalid_object_1_fragment
    dEQP-GLES2.functional.shaders.preprocessor.definitions.undefine_invalid_object_1_vertex
    dEQP-GLES2.functional.shaders.preprocessor.definitions.undefine_invalid_object_2_fragment
    dEQP-GLES2.functional.shaders.preprocessor.definitions.undefine_invalid_object_2_vertex

They passed on older Mesa. Specifically, they pass on the Mesa used by ARC++.

Android CTS 7.1 requires that these tests pass. However, the tests may be incorrect. Google will eventually need to update ARC++ Mesa, but these failures will prevent us.

Ian, how do you want to solve this? The bisected commit is yours. Should...
    a) Should the fix go upstream, despite the dubiousness of the test?
    b) Should a bug be filed against dEQP?
    c) Should Google carry the patch out-of-tree, because you strongly disagree with it?

Here is the oneline fix:

    diff --git a/src/compiler/glsl/glcpp/glcpp-parse.y b/src/compiler/glsl/glcpp/glcpp-parse.y
    index 17c6b9d053..389870462a 100644
    --- a/src/compiler/glsl/glcpp/glcpp-parse.y
    +++ b/src/compiler/glsl/glcpp/glcpp-parse.y
    @@ -318,7 +318,6 @@ control_line_success:
                      * 3.00 shaders.
                      */
                    if (parser->is_gles &&
    -                    parser->version >= 300 &&
                         (strcmp("__LINE__", $3) == 0
                          || strcmp("__FILE__", $3) == 0
                          || strcmp("__VERSION__", $3) == 0


The "guilty" commit is:

    commit 50b49d242d702e4728329cc59f87d929963e7c53
    Author: Ian Romanick <ian.d.romanick@intel.com>
    Date:   Tue Aug 9 14:32:24 2016 -0700
    
        glcpp: Only disallow #undef of pre-defined macros on GLSL ES >= 3.00 shaders
        
        Section 3.4 (Preprocessor) of the GLSL ES 3.00 spec says:
        
           It is an error to undefine or to redefine a built-in (pre-defined)
           macro name.
        
        The GLSL ES 1.00 spec does not contain this text.
        
        Section 3.3 (Preprocessor) of the GLSL 1.30 spec says:
        
           #define and #undef functionality are defined as is standard for C++
           preprocessors for macro definitions both with and without macro
           parameters.
        
        At least as far as I can tell GCC allow '#undef __FILE__'.  Furthermore,
        there are desktop OpenGL conformance tests that expect '#undef
        __VERSION__' and '#undef GL_core_profile' to work.
        
        Fixes:
        
            GL45-CTS.shaders.preprocessor.definitions.undefine_version_vertex
            GL45-CTS.shaders.preprocessor.definitions.undefine_version_fragment
            GL45-CTS.shaders.preprocessor.definitions.undefine_core_profile_vertex
            GL45-CTS.shaders.preprocessor.definitions.undefine_core_profile_fragment
        
        Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
        Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
        Cc: mesa-stable@lists.freedesktop.org
Comment 1 Chad Versace 2017-01-31 00:16:34 UTC
By the way, why does Bugzilla add linewraps? Can I turn that off?
Comment 2 Mark Janes 2017-01-31 00:51:49 UTC
The mustpass list that Intel CI runs against limits similar tests to:

ES2-CTS.functional.shaders.preprocessor.definitions.undefine_invalid_object_3_vertex
ES2-CTS.functional.shaders.preprocessor.definitions.undefine_invalid_object_3_fragment
ES2-CTS.functional.shaders.preprocessor.definitions.undefine_invalid_object_4_vertex
ES2-CTS.functional.shaders.preprocessor.definitions.undefine_invalid_object_4_fragment


For some reason, the tests listed in this bug are not in the mustpass.  Chad, do you have any insight as to why they aren't included?
Comment 3 Kenneth Graunke 2017-01-31 08:00:10 UTC
Chad, it looks like these were removed from the mustpass list in:

commit d97e5c6b5f740bd2590b370958ace37803193e5d
Author: Pyry Haulos <phaulos@google.com>
Date:   Fri Apr 24 10:58:49 2015 -0700

    Update ES2 & EGL mustpass lists based on latest feedback

so these tests are not in the mustpass list for Android CTS 7.1, and in fact going all the way back to Android CTS 6.0...

So I don't think we care?
Comment 4 Chad Versace 2017-01-31 17:49:35 UTC
Sorry for the noise. My scripts for scraping test lists were buggy.

Closing as NOTABUG.


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.