Test that uniforms inside arrays of uniform blocks with instance name are queried properly.
Tested on NVIDIA's proprietary driver version 340.65 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90397 Signed-off-by: Samuel Iglesias Gonsalvez <[email protected]> --- tests/spec/arb_program_interface_query/common.h | 12 +++++++++--- .../getprogramresourceiv.c | 19 +++++++++++++++++++ .../spec/arb_program_interface_query/resource-query.c | 16 ++++++++++++---- tests/spec/arb_shader_storage_buffer_object/minmax.c | 4 ++-- 4 files changed, 42 insertions(+), 9 deletions(-) diff --git a/tests/spec/arb_program_interface_query/common.h b/tests/spec/arb_program_interface_query/common.h index 55f0358..4079ac8 100755 --- a/tests/spec/arb_program_interface_query/common.h +++ b/tests/spec/arb_program_interface_query/common.h @@ -102,13 +102,19 @@ static const char fs_std[] = "uniform fs_uniform_block {" " vec4 fs_color;\n" " float fs_array[4];\n" - "};" + "};\n" + "uniform fs_array_uniform_block {\n" + " vec4 fs_color;\n" + " float fs_array[4];\n" + "} ubo[4];\n" "in vec4 fs_input1;\n" "out vec4 fs_output0;\n" "out vec4 fs_output1;\n" "void main() {\n" - "fs_output0 = fs_color * fs_input1 * fs_array[2];\n" - "fs_output1 = fs_color * fs_input1 * fs_array[3];\n" + "fs_output0 = fs_color * fs_input1 * fs_array[2] * \n" + " ubo[0].fs_array[2] * ubo[2].fs_array[2];\n" + "fs_output1 = fs_color * fs_input1 * fs_array[3] * \n" + " ubo[1].fs_array[3] * ubo[3].fs_array[3];\n" "}"; static const char vs_stor[] = diff --git a/tests/spec/arb_program_interface_query/getprogramresourceiv.c b/tests/spec/arb_program_interface_query/getprogramresourceiv.c index da9751a..03f2fc6 100755 --- a/tests/spec/arb_program_interface_query/getprogramresourceiv.c +++ b/tests/spec/arb_program_interface_query/getprogramresourceiv.c @@ -454,6 +454,25 @@ static const struct subtest_t subtests[] = { { GL_REFERENCED_BY_COMPUTE_SHADER, 1, { 0 } }, { 0, 0, { 0 } }} }, + { &prog_std, GL_UNIFORM, "fs_array_uniform_block.fs_array", "fs_array_uniform_block[0]", { + { GL_NAME_LENGTH, 1, { 35 } }, + { GL_TYPE, 1, { GL_FLOAT } }, + { GL_ARRAY_SIZE, 1, { 4 } }, + { GL_OFFSET, 1, { 0 } }, /* valid index == anything but -1 */ + { GL_BLOCK_INDEX, 1, { 2 } }, /* compared to fs_array_uniform_block[0]'s idx */ + { GL_ARRAY_STRIDE, 1, { 0 } }, /* valid index == anything but -1 */ + { GL_MATRIX_STRIDE, 1, { 0 } }, + { GL_IS_ROW_MAJOR, 1, { 0 } }, + { GL_ATOMIC_COUNTER_BUFFER_INDEX, 1, { -1 } }, /* valid index == anything but -1 */ + { GL_REFERENCED_BY_VERTEX_SHADER, 1, { 0 } }, + { GL_REFERENCED_BY_TESS_CONTROL_SHADER, 1, { 0 } }, + { GL_REFERENCED_BY_TESS_EVALUATION_SHADER, 1, { 0 } }, + { GL_REFERENCED_BY_GEOMETRY_SHADER, 1, { 0 } }, + { GL_REFERENCED_BY_FRAGMENT_SHADER, 1, { 1 } }, + { GL_REFERENCED_BY_COMPUTE_SHADER, 1, { 0 } }, + { GL_LOCATION, 1, { -1 } }, /* valid index == anything but -1 */ + { 0, 0, { 0 } }} + }, { &prog_stor, GL_BUFFER_VARIABLE, "gs_buf_var", "gs_buffer_block", { { GL_NAME_LENGTH, 1, { 11 } }, { GL_TYPE, 1, { GL_FLOAT_VEC4 } }, diff --git a/tests/spec/arb_program_interface_query/resource-query.c b/tests/spec/arb_program_interface_query/resource-query.c index 92b8cd8..1db5585 100755 --- a/tests/spec/arb_program_interface_query/resource-query.c +++ b/tests/spec/arb_program_interface_query/resource-query.c @@ -189,13 +189,21 @@ PIGLIT_GL_TEST_CONFIG_END * white space anywhere in the string. */ static const char *st_r_uniform[] = {"vs_test", "gs_test", "fs_color", - "fs_array[0]", "sa[0].a[0]", "sa[1].a[0]", + "fs_array[0]", + "fs_array_uniform_block.fs_color", + "fs_array_uniform_block.fs_array[0]", + "sa[0].a[0]", "sa[1].a[0]", NULL}; static const char *st_r_tess_uniform[] = {"tcs_test", "tes_test", NULL}; static const char *st_r_cs_uniform[] = {"cs_test", "tex", NULL}; static const char *st_r_uniform_block[] = {"vs_uniform_block", "gs_uniform_block", - "fs_uniform_block", NULL}; + "fs_uniform_block", + "fs_array_uniform_block[0]", + "fs_array_uniform_block[1]", + "fs_array_uniform_block[2]", + "fs_array_uniform_block[3]", + NULL}; static const char *st_r_tess_uniform_block[] = {"tcs_uniform_block", "tes_uniform_block", NULL}; static const char *st_r_cs_uniform_block[] = {"cs_uniform_block", NULL}; @@ -346,10 +354,10 @@ struct subtest_t { } static const struct subtest_t subtests[] = { - ST( 6, 12, -1, -1, vs_std, NULL, NULL, gs_std, fs_std, NULL, GL_UNIFORM, "(vs,gs,fs)", st_r_uniform), + ST( 8, 35, -1, -1, vs_std, NULL, NULL, gs_std, fs_std, NULL, GL_UNIFORM, "(vs,gs,fs)", st_r_uniform), ST( 2, 9, -1, -1, NULL, tcs_sub, tes_sub, NULL, NULL, NULL, GL_UNIFORM, "(tes,tcs)", st_r_tess_uniform), ST( 2, 8, -1, -1, NULL, NULL, NULL, NULL, NULL, cs_sub, GL_UNIFORM, "(cs)", st_r_cs_uniform), - ST( 3, 17, 2, -1, vs_std, NULL, NULL, gs_std, fs_std, NULL, GL_UNIFORM_BLOCK, "(vs,gs,fs)", st_r_uniform_block), + ST( 7, 26, 2, -1, vs_std, NULL, NULL, gs_std, fs_std, NULL, GL_UNIFORM_BLOCK, "(vs,gs,fs)", st_r_uniform_block), ST( 2, 18, -1, -1, NULL, tcs_sub, tes_sub, NULL, NULL, NULL, GL_UNIFORM_BLOCK, "(tcs,tes)", st_r_tess_uniform_block), ST( 1, 17, -1, -1, NULL, NULL, NULL, NULL, NULL, cs_sub, GL_UNIFORM_BLOCK, "(cs)", st_r_cs_uniform_block), ST( 2, 10, -1, -1, vs_std, NULL, NULL, NULL, NULL, NULL, GL_PROGRAM_INPUT, "(vs)", st_r_in_vs), diff --git a/tests/spec/arb_shader_storage_buffer_object/minmax.c b/tests/spec/arb_shader_storage_buffer_object/minmax.c index 71d86fe..281bb99 100644 --- a/tests/spec/arb_shader_storage_buffer_object/minmax.c +++ b/tests/spec/arb_shader_storage_buffer_object/minmax.c @@ -31,8 +31,8 @@ PIGLIT_GL_TEST_CONFIG_BEGIN - config.supports_gl_compat_version = 40; - config.supports_gl_core_version = 40; + config.supports_gl_compat_version = 31; + config.supports_gl_core_version = 31; PIGLIT_GL_TEST_CONFIG_END -- 2.1.0 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
