Check that image*Shadow are not reserved keywords
authorPiotr Byszewski <piotr.byszewski@mobica.com>
Fri, 29 Jul 2022 17:07:09 +0000 (19:07 +0200)
committerMatthew Netsch <quic_mnetsch@quicinc.com>
Thu, 18 Aug 2022 21:17:49 +0000 (21:17 +0000)
There used to be a tests that treated: image1DShadow, image2DShadow,
image1DArrayShadow, image2DArrayShadow as reserved keywords but they
were removed because the spec doesn't actually reserve them. Any
drivers that were passing the old test were behaving incorrectly so
this change adds new tests that check if these keywords are not
reserved.

Components: OpenGL ES

VK-GL-CTS issue: 3007

Affects:
dEQP-GLES3.functional.shaders.keywords.allowed_keywords.*

Change-Id: Ic6b4463e51b45611441481d661d71735570dd15a

android/cts/main/gles3-master-2022-03-01.txt
android/cts/main/gles3-master.txt
data/gles3/shaders/keywords.test
external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles3-master.txt
external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.6.x/gles3-master.txt
external/openglcts/data/mustpass/gles/aosp_mustpass/main/gles3-master.txt
modules/gles3/scripts/gen-keywords.py

index f92cb1c..24dedf5 100644 (file)
@@ -223,6 +223,14 @@ dEQP-GLES3.functional.shaders.arrays.compare.equal_highp_mat3_highp_mat3_vertex
 dEQP-GLES3.functional.shaders.arrays.compare.equal_highp_mat3_highp_mat3_fragment
 dEQP-GLES3.functional.shaders.arrays.compare.equal_highp_mat4_highp_mat4_vertex
 dEQP-GLES3.functional.shaders.arrays.compare.equal_highp_mat4_highp_mat4_fragment
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image1DShadow_vertex
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image1DShadow_fragment
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image2DShadow_vertex
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image2DShadow_fragment
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image1DArrayShadow_vertex
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image1DArrayShadow_fragment
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image2DArrayShadow_vertex
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image2DArrayShadow_fragment
 dEQP-GLES3.functional.shaders.switch.default_only_static_vertex
 dEQP-GLES3.functional.shaders.switch.default_only_static_fragment
 dEQP-GLES3.functional.shaders.switch.default_only_uniform_vertex
index c41aa61..f129ecd 100644 (file)
@@ -25541,6 +25541,14 @@ dEQP-GLES3.functional.shaders.keywords.reserved_keywords.namespace_vertex
 dEQP-GLES3.functional.shaders.keywords.reserved_keywords.namespace_fragment
 dEQP-GLES3.functional.shaders.keywords.reserved_keywords.using_vertex
 dEQP-GLES3.functional.shaders.keywords.reserved_keywords.using_fragment
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image1DShadow_vertex
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image1DShadow_fragment
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image2DShadow_vertex
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image2DShadow_fragment
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image1DArrayShadow_vertex
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image1DArrayShadow_fragment
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image2DArrayShadow_vertex
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image2DArrayShadow_fragment
 dEQP-GLES3.functional.shaders.keywords.invalid_identifiers.gl_begin_vertex
 dEQP-GLES3.functional.shaders.keywords.invalid_identifiers.gl_begin_fragment
 dEQP-GLES3.functional.shaders.keywords.invalid_identifiers.digit_vertex
index a4ffa5f..4327a7f 100644 (file)
@@ -3069,6 +3069,82 @@ group reserved_keywords "Usage of reserved keywords as identifiers."
        end
 
 end # reserved_keywords
+group allowed_keywords "Usage of allowed keywords as identifiers."
+
+       case image1DShadow
+
+               values {}
+               version 300 es
+
+               both ""
+                       #version 300 es
+                       precision mediump float;
+                       ${DECLARATIONS}
+
+                       void main()
+                       {
+                               ${SETUP}
+                               float image1DShadow = 1.0;
+                               ${OUTPUT}
+                       }
+               ""
+       end
+       case image2DShadow
+
+               values {}
+               version 300 es
+
+               both ""
+                       #version 300 es
+                       precision mediump float;
+                       ${DECLARATIONS}
+
+                       void main()
+                       {
+                               ${SETUP}
+                               float image2DShadow = 1.0;
+                               ${OUTPUT}
+                       }
+               ""
+       end
+       case image1DArrayShadow
+
+               values {}
+               version 300 es
+
+               both ""
+                       #version 300 es
+                       precision mediump float;
+                       ${DECLARATIONS}
+
+                       void main()
+                       {
+                               ${SETUP}
+                               float image1DArrayShadow = 1.0;
+                               ${OUTPUT}
+                       }
+               ""
+       end
+       case image2DArrayShadow
+
+               values {}
+               version 300 es
+
+               both ""
+                       #version 300 es
+                       precision mediump float;
+                       ${DECLARATIONS}
+
+                       void main()
+                       {
+                               ${SETUP}
+                               float image2DArrayShadow = 1.0;
+                               ${OUTPUT}
+                       }
+               ""
+       end
+
+end # allowed_keywords
 group invalid_identifiers "Usage of invalid identifiers."
 
        case gl_begin
index 44bd53e..c61d5e5 100644 (file)
@@ -5016,6 +5016,14 @@ dEQP-GLES3.functional.shaders.keywords.reserved_keywords.namespace_vertex
 dEQP-GLES3.functional.shaders.keywords.reserved_keywords.namespace_fragment
 dEQP-GLES3.functional.shaders.keywords.reserved_keywords.using_vertex
 dEQP-GLES3.functional.shaders.keywords.reserved_keywords.using_fragment
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image1DShadow_vertex
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image1DShadow_fragment
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image2DShadow_vertex
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image2DShadow_fragment
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image1DArrayShadow_vertex
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image1DArrayShadow_fragment
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image2DArrayShadow_vertex
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image2DArrayShadow_fragment
 dEQP-GLES3.functional.shaders.keywords.invalid_identifiers.gl_begin_vertex
 dEQP-GLES3.functional.shaders.keywords.invalid_identifiers.gl_begin_fragment
 dEQP-GLES3.functional.shaders.keywords.invalid_identifiers.digit_vertex
index 44bd53e..c61d5e5 100644 (file)
@@ -5016,6 +5016,14 @@ dEQP-GLES3.functional.shaders.keywords.reserved_keywords.namespace_vertex
 dEQP-GLES3.functional.shaders.keywords.reserved_keywords.namespace_fragment
 dEQP-GLES3.functional.shaders.keywords.reserved_keywords.using_vertex
 dEQP-GLES3.functional.shaders.keywords.reserved_keywords.using_fragment
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image1DShadow_vertex
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image1DShadow_fragment
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image2DShadow_vertex
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image2DShadow_fragment
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image1DArrayShadow_vertex
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image1DArrayShadow_fragment
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image2DArrayShadow_vertex
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image2DArrayShadow_fragment
 dEQP-GLES3.functional.shaders.keywords.invalid_identifiers.gl_begin_vertex
 dEQP-GLES3.functional.shaders.keywords.invalid_identifiers.gl_begin_fragment
 dEQP-GLES3.functional.shaders.keywords.invalid_identifiers.digit_vertex
index 44bd53e..c61d5e5 100644 (file)
@@ -5016,6 +5016,14 @@ dEQP-GLES3.functional.shaders.keywords.reserved_keywords.namespace_vertex
 dEQP-GLES3.functional.shaders.keywords.reserved_keywords.namespace_fragment
 dEQP-GLES3.functional.shaders.keywords.reserved_keywords.using_vertex
 dEQP-GLES3.functional.shaders.keywords.reserved_keywords.using_fragment
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image1DShadow_vertex
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image1DShadow_fragment
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image2DShadow_vertex
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image2DShadow_fragment
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image1DArrayShadow_vertex
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image1DArrayShadow_fragment
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image2DArrayShadow_vertex
+dEQP-GLES3.functional.shaders.keywords.allowed_keywords.image2DArrayShadow_fragment
 dEQP-GLES3.functional.shaders.keywords.invalid_identifiers.gl_begin_vertex
 dEQP-GLES3.functional.shaders.keywords.invalid_identifiers.gl_begin_fragment
 dEQP-GLES3.functional.shaders.keywords.invalid_identifiers.digit_vertex
index e326784..639019c 100644 (file)
@@ -29,7 +29,7 @@ from genutil import *
 
 identifierCaseTemplate = """
 case ${{NAME}}
-       expect compile_fail
+       ${{EXPECT}}
        values {}
        version 300 es
 
@@ -51,13 +51,15 @@ end
 # Classes
 
 class IdentifierCase(ShaderCase):
-       def __init__(self, name, identifier):
+       def __init__(self, name, identifier, expectToCompile = True):
                self.name               = name
-               self.identifier = identifier
+               self.identifier = identifier
+               self.expect             = '' if expectToCompile else 'expect compile_fail'
 
        def __str__(self):
                params = {      "NAME"                  : self.name,
-                                       "IDENTIFIER"    : self.identifier }
+                                       "IDENTIFIER"    : self.identifier,
+                                       "EXPECT"                : self.expect }
                return fillTemplate(identifierCaseTemplate, params)
 
 # Declarations
@@ -92,6 +94,10 @@ RESERVED_KEYWORDS = [
        "usampler2DMSArray", "sizeof", "cast", "namespace", "using"
 ]
 
+ALLOWED_KEYWORDS = [
+       "image1DShadow", "image2DShadow", "image1DArrayShadow", "image2DArrayShadow"
+]
+
 INVALID_IDENTIFIERS = [
        ("gl_begin",                            "gl_Invalid"),
        ("digit",                                       "0123"),
@@ -103,20 +109,25 @@ INVALID_IDENTIFIERS = [
 
 keywords                       = []
 reservedKeywords       = []
+allowedKeywords                = []
 invalidIdentifiers     = []
 
 for keyword in KEYWORDS:
-       keywords.append(IdentifierCase(keyword, keyword))                       # Keywords
+       keywords.append(IdentifierCase(keyword, keyword, False))                        # Keywords
 
 for keyword in RESERVED_KEYWORDS:
-       reservedKeywords.append(IdentifierCase(keyword, keyword))       # Reserved keywords
+       reservedKeywords.append(IdentifierCase(keyword, keyword, False))        # Reserved keywords
+
+for keyword in ALLOWED_KEYWORDS:
+       allowedKeywords.append(IdentifierCase(keyword, keyword, True))          # Allowed keywords
 
 for (name, identifier) in INVALID_IDENTIFIERS:
-       invalidIdentifiers.append(IdentifierCase(name, identifier)) # Invalid identifiers
+       invalidIdentifiers.append(IdentifierCase(name, identifier, False))      # Invalid identifiers
 
 keywordCases = [
        CaseGroup("keywords",                           "Usage of keywords as identifiers.",                    keywords),
        CaseGroup("reserved_keywords",          "Usage of reserved keywords as identifiers.",   reservedKeywords),
+       CaseGroup("allowed_keywords",           "Usage of allowed keywords as identifiers.",    allowedKeywords),
        CaseGroup("invalid_identifiers",        "Usage of invalid identifiers.",                                invalidIdentifiers)
 ]