From 1a4fa64975765501f55175e8b566115f273e8e06 Mon Sep 17 00:00:00 2001 From: Piotr Byszewski Date: Fri, 29 Jul 2022 19:07:09 +0200 Subject: [PATCH] Check that image*Shadow are not reserved keywords 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 | 8 +++ android/cts/main/gles3-master.txt | 8 +++ data/gles3/shaders/keywords.test | 76 ++++++++++++++++++++++ .../gles/aosp_mustpass/3.2.5.x/gles3-master.txt | 8 +++ .../gles/aosp_mustpass/3.2.6.x/gles3-master.txt | 8 +++ .../gles/aosp_mustpass/main/gles3-master.txt | 8 +++ modules/gles3/scripts/gen-keywords.py | 25 +++++-- 7 files changed, 134 insertions(+), 7 deletions(-) diff --git a/android/cts/main/gles3-master-2022-03-01.txt b/android/cts/main/gles3-master-2022-03-01.txt index f92cb1c..24dedf5 100644 --- a/android/cts/main/gles3-master-2022-03-01.txt +++ b/android/cts/main/gles3-master-2022-03-01.txt @@ -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 diff --git a/android/cts/main/gles3-master.txt b/android/cts/main/gles3-master.txt index c41aa61..f129ecd 100644 --- a/android/cts/main/gles3-master.txt +++ b/android/cts/main/gles3-master.txt @@ -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 diff --git a/data/gles3/shaders/keywords.test b/data/gles3/shaders/keywords.test index a4ffa5f..4327a7f 100644 --- a/data/gles3/shaders/keywords.test +++ b/data/gles3/shaders/keywords.test @@ -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 diff --git a/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles3-master.txt b/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles3-master.txt index 44bd53e..c61d5e5 100644 --- a/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles3-master.txt +++ b/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles3-master.txt @@ -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 diff --git a/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.6.x/gles3-master.txt b/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.6.x/gles3-master.txt index 44bd53e..c61d5e5 100644 --- a/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.6.x/gles3-master.txt +++ b/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.6.x/gles3-master.txt @@ -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 diff --git a/external/openglcts/data/mustpass/gles/aosp_mustpass/main/gles3-master.txt b/external/openglcts/data/mustpass/gles/aosp_mustpass/main/gles3-master.txt index 44bd53e..c61d5e5 100644 --- a/external/openglcts/data/mustpass/gles/aosp_mustpass/main/gles3-master.txt +++ b/external/openglcts/data/mustpass/gles/aosp_mustpass/main/gles3-master.txt @@ -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 diff --git a/modules/gles3/scripts/gen-keywords.py b/modules/gles3/scripts/gen-keywords.py index e326784..639019c 100644 --- a/modules/gles3/scripts/gen-keywords.py +++ b/modules/gles3/scripts/gen-keywords.py @@ -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) ] -- 2.7.4