From the ARB_shader_image_load_store spec: "Only one format qualifier may be specified for any image variable declaration."
ARB_enhanced_layouts Allows duplicates within a single layout qualifier e.g. layout(location = 0, location = 1) out vec4 a; ARB_shading_language_420pack Allows multiple layout qualifiers e.g. layout(location = 0) layout(location = 2) out vec4 b; However layout(rgba32f, rgba32f) uniform image2D img; and layout(rgba32f) layout(rgba32f) uniform image2D img; Should still fail when these extensions are enabled according to the spec GLSL 4.5 spec. Cc: Francisco Jerez <curroje...@riseup.net> --- .../gen_shader_image_load_store_tests.py | 39 ++++++++++++++++++---- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/generated_tests/gen_shader_image_load_store_tests.py b/generated_tests/gen_shader_image_load_store_tests.py index 8d6be9c..d52070c 100644 --- a/generated_tests/gen_shader_image_load_store_tests.py +++ b/generated_tests/gen_shader_image_load_store_tests.py @@ -29,24 +29,28 @@ from textwrap import dedent from modules import utils -def gen_header(status): +def gen_header(status, extra_extension=''): """ Generate a GLSL program header. Generate header code for ARB_shader_image_load_store GLSL parser tests that are expected to give status as result. """ + extra_extension_s = '' + if extra_extension != '': + extra_extension_s = "#extension {0}: require".format(extra_extension) return dedent("""\ /* * [config] * expect_result: {0} * glsl_version: 1.50 - * require_extensions: GL_ARB_shader_image_load_store + * require_extensions: GL_ARB_shader_image_load_store {1} * [end config] */ #version 150 #extension GL_ARB_shader_image_load_store: require - """.format(status)) + {2} + """.format(status, extra_extension, extra_extension_s)) def gen_vector_type(scalar, dim): @@ -458,20 +462,41 @@ gen('declaration-format-qualifier', """\ 'prefix': ''} ])) -gen('declaration-format-qualifier-duplicate', """\ - ${header('fail')} +gen('declaration-format-qualifier', """\ + ${header('fail', extra_extension)} + ${description} /* * From the ARB_shader_image_load_store spec: * * "Only one format qualifier may be specified for any image variable * declaration." */ - layout(rgba32f) layout(rgba32f) uniform image2D img; + ${layout_qualifier} uniform image2D img; void main() { } -""", shader_stages) +""", product(shader_stages, [ + {'name': 'duplicate', + 'extra_extension': '', + 'description': '', + 'layout_qualifier': 'layout(rgba32f) layout(rgba32f)'}, + {'name': 'duplicate-420pack', + 'extra_extension': 'GL_ARB_shading_language_420pack', + 'description': '/* Check duplicates still fail with ' + 'GL_ARB_shading_language_420pack \n * which allows multiple layout ' + 'qualifers\n */', + 'layout_qualifier': 'layout(rgba32f) layout(rgba32f)'}, + {'name': 'duplicate-within-layout', + 'extra_extension': '', + 'description': '', + 'layout_qualifier': 'layout(rgba32f, rgba32f)'}, + {'name': 'duplicate-within-layout-enhanced-layouts', + 'extra_extension': 'GL_ARB_enhanced_layouts', + 'description': '/* Check duplicates still fail with ARB_enhanced_layouts' + ' \n * which allows duplicates in a single layout\n */', + 'layout_qualifier': 'layout(rgba32f, rgba32f)'} +])) gen('declaration-format-qualifier-missing', """\ ${header(status)} -- 2.4.3 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit