summaryrefslogtreecommitdiff
path: root/tests/spec
diff options
context:
space:
mode:
Diffstat (limited to 'tests/spec')
-rwxr-xr-xtests/spec/arb_program_interface_query/common.h61
-rwxr-xr-xtests/spec/arb_program_interface_query/getprogramresourceiv.c8
-rwxr-xr-xtests/spec/arb_program_interface_query/resource-query.c48
3 files changed, 79 insertions, 38 deletions
diff --git a/tests/spec/arb_program_interface_query/common.h b/tests/spec/arb_program_interface_query/common.h
index 371b0338b..c0a99ea64 100755
--- a/tests/spec/arb_program_interface_query/common.h
+++ b/tests/spec/arb_program_interface_query/common.h
@@ -74,9 +74,11 @@ static const char vs_std[] =
"uniform vs_struct sa[2];\n"
"in vec4 vs_input0;\n"
"in vec4 vs_input1;\n"
+ "out vec4 vs_output1;\n"
"void main() {\n"
" gl_Position = vs_input0 * vs_test * vs_input1 + sa[0].a[1] +"
" sa[1].a[1];\n"
+ " vs_output1 = vs_input0;\n"
"}";
const char gs_std[] =
@@ -86,13 +88,13 @@ const char gs_std[] =
"uniform gs_uniform_block {\n"
" vec4 gs_test;\n"
"};\n"
- "in vec4 gs_input[3];\n"
- "out vec4 gs_output0;\n"
+ "in vec4 vs_output1[3];\n"
+ "out vec4 fs_input1;\n"
"void main() {\n"
" for (int i = 0; i < 6; i++) {\n"
- " gl_Position = gs_input[i % 3] *"
+ " gl_Position = vs_output1[i % 3] *"
" gl_in[i % 3].gl_Position * gs_test;\n"
- " gs_output0 = gs_input[0];\n"
+ " fs_input1 = vs_output1[0];\n"
" EmitVertex();\n"
" }\n"
"}\n";
@@ -107,6 +109,26 @@ static const char fs_std[] =
" vec4 fs_color;\n"
" float fs_array[4];\n"
"} faub[4];\n"
+ "in vec4 vs_output1;\n"
+ "out vec4 fs_output0;\n"
+ "out vec4 fs_output1;\n"
+ "void main() {\n"
+ "fs_output0 = fs_color * vs_output1 * fs_array[2] * \n"
+ " faub[0].fs_array[2] * faub[2].fs_array[2];\n"
+ "fs_output1 = fs_color * vs_output1 * fs_array[3] * \n"
+ " faub[1].fs_array[3] * faub[3].fs_array[3];\n"
+ "}";
+
+static const char fs_in[] =
+ "#version 150\n"
+ "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"
+ "} faub[4];\n"
"in vec4 fs_input1;\n"
"out vec4 fs_output0;\n"
"out vec4 fs_output1;\n"
@@ -296,8 +318,8 @@ static const char tcs_sub[] =
"uniform tcs_uniform_block {\n"
" vec4 tcs_test;\n"
"};\n"
- "out vec4 tcs_output[3];\n"
- "in vec4 tcs_input[gl_MaxPatchVertices];\n"
+ "out vec4 tes_input1[3];\n"
+ "in vec4 vs_output1[gl_MaxPatchVertices];\n"
"patch out vec4 tcs_patch;\n"
"subroutine vec4 tcs_offset();\n"
"subroutine uniform tcs_offset TESS_CONTROL;\n"
@@ -306,7 +328,7 @@ static const char tcs_sub[] =
" gl_out[gl_InvocationID].gl_Position = tcs_test +"
" gl_in[0].gl_Position *"
" TESS_CONTROL();\n"
- " tcs_output[gl_InvocationID] = tcs_input[0] + TESS_CONTROL();\n"
+ " tes_input1[gl_InvocationID] = vs_output1[0] + TESS_CONTROL();\n"
"}";
static const char tes_sub[] =
@@ -317,15 +339,34 @@ static const char tes_sub[] =
"uniform tes_uniform_block {\n"
" vec4 tes_test;\n"
"};\n"
- "out vec4 tes_output[1];\n"
- "in vec4 tes_input[gl_MaxPatchVertices];\n"
+ "out vec4 tes_output1;\n"
+ "in vec4 vs_output1[gl_MaxPatchVertices];\n"
+ "subroutine vec4 tes_offset();\n"
+ "subroutine uniform tes_offset TESS_EVALUATION;\n"
+ "subroutine (tes_offset) vec4 tess() { return vec4(1, 0, 0, 0); }\n"
+ "void main() {\n"
+ " gl_Position = tes_test + gl_in[0].gl_Position +"
+ " TESS_EVALUATION();\n"
+ " tes_output1 = vs_output1[0] + TESS_EVALUATION();\n"
+ "}";
+
+static const char tes_in[] =
+ "#version 150\n"
+ "#extension GL_ARB_shader_subroutine : require\n"
+ "#extension GL_ARB_tessellation_shader : require\n"
+ "layout(triangles) in;\n"
+ "uniform tes_uniform_block {\n"
+ " vec4 tes_test;\n"
+ "};\n"
+ "out vec4 vs_output1;\n"
+ "in vec4 tes_input1[gl_MaxPatchVertices];\n"
"subroutine vec4 tes_offset();\n"
"subroutine uniform tes_offset TESS_EVALUATION;\n"
"subroutine (tes_offset) vec4 tess() { return vec4(1, 0, 0, 0); }\n"
"void main() {\n"
" gl_Position = tes_test + gl_in[0].gl_Position +"
" TESS_EVALUATION();\n"
- " tes_output[0] = tes_input[0] + TESS_EVALUATION();\n"
+ " vs_output1 = tes_input1[0] + TESS_EVALUATION();\n"
"}";
static const char cs_sub[] =
diff --git a/tests/spec/arb_program_interface_query/getprogramresourceiv.c b/tests/spec/arb_program_interface_query/getprogramresourceiv.c
index 70212350e..e55cf96ac 100755
--- a/tests/spec/arb_program_interface_query/getprogramresourceiv.c
+++ b/tests/spec/arb_program_interface_query/getprogramresourceiv.c
@@ -567,8 +567,8 @@ static const struct subtest_t subtests[] = {
{ GL_REFERENCED_BY_COMPUTE_SHADER, 1, { 0 } },
{ 0, 0, { 0 } }}
},
- { &prog_std, GL_TRANSFORM_FEEDBACK_VARYING, "gs_output0", NULL, {
- { GL_NAME_LENGTH, 1, { 11 } },
+ { &prog_std, GL_TRANSFORM_FEEDBACK_VARYING, "fs_input1", NULL, {
+ { GL_NAME_LENGTH, 1, { 10 } },
{ GL_ARRAY_SIZE, 1, { 1 } },
{ 0, 0, { 0 } }}
},
@@ -1012,7 +1012,7 @@ report_result:
void
piglit_init(int argc, char **argv)
{
- static const char *st_r_tf_varying[] = {"gs_output0", NULL};
+ static const char *st_r_tf_varying[] = {"fs_input1", NULL};
piglit_require_extension("GL_ARB_program_interface_query");
piglit_require_extension("GL_ARB_separate_shader_objects");
@@ -1021,7 +1021,7 @@ piglit_init(int argc, char **argv)
prog_std = piglit_build_simple_program_unlinked_multiple_shaders(
GL_VERTEX_SHADER, vs_std,
GL_GEOMETRY_SHADER, gs_std,
- GL_FRAGMENT_SHADER, fs_std,
+ GL_FRAGMENT_SHADER, fs_in,
0);
glTransformFeedbackVaryings(prog_std, 1, st_r_tf_varying,
GL_INTERLEAVED_ATTRIBS);
diff --git a/tests/spec/arb_program_interface_query/resource-query.c b/tests/spec/arb_program_interface_query/resource-query.c
index bf60dde93..f47431a30 100755
--- a/tests/spec/arb_program_interface_query/resource-query.c
+++ b/tests/spec/arb_program_interface_query/resource-query.c
@@ -209,25 +209,25 @@ 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};
static const char *st_r_in_vs[] = {"vs_input0", "vs_input1", NULL};
-static const char *st_r_in_gs[] = {"gs_input[0]", "gl_PerVertex.gl_Position", NULL};
+static const char *st_r_in_gs[] = {"vs_output1[0]", "gl_PerVertex.gl_Position", NULL};
static const char *st_r_in_fs[] = {"fs_input1", NULL};
-static const char *st_r_in_tes[] = {"tes_input[0]", "gl_PerVertex.gl_Position", NULL};
-static const char *st_r_in_tcs[] = {"tcs_input[0]",
+static const char *st_r_in_tes[] = {"tes_input1[0]", "gl_PerVertex.gl_Position", NULL};
+static const char *st_r_in_tcs[] = {"vs_output1[0]",
"gl_InvocationID",
"gl_PerVertex.gl_Position",
NULL};
-static const char *st_r_out_vs[] = {"gl_Position", NULL};
-static const char *st_r_out_gs[] = {"gs_output0", "gl_Position", NULL};
+static const char *st_r_out_vs[] = {"vs_output1", "gl_Position", NULL};
+static const char *st_r_out_gs[] = {"fs_input1", "gl_Position", NULL};
static const char *st_r_out_fs[] = {"fs_output0", "fs_output1", NULL};
-static const char *st_r_out_tes[] = {"tes_output[0]", "gl_Position", NULL};
-static const char *st_r_out_tcs[] = {"tcs_output[0]", "tcs_patch",
+static const char *st_r_out_tes[] = {"vs_output1", "gl_Position", NULL};
+static const char *st_r_out_tcs[] = {"tes_input1[0]", "tcs_patch",
"gl_PerVertex.gl_Position",
NULL};
static const char *st_r_buffer[] = {"vs_buf_var", "gs_buf_var", "fs_buf_var",
NULL};
static const char *st_r_stor_block[] = {"vs_buffer_block", "gs_buffer_block",
"fs_buffer_block", NULL};
-static const char *st_r_tf_varying[] = {"gl_Position", "gs_output0", NULL};
+static const char *st_r_tf_varying[] = {"gl_Position", "fs_input1", NULL};
static const char *st_r_vs_sub[] = {"vss", "vss2", NULL};
static const char *st_r_gs_sub[] = {"gss", NULL};
static const char *st_r_fs_sub[] = {"fss", NULL};
@@ -353,35 +353,35 @@ struct subtest_t {
}
static const struct subtest_t subtests[] = {
- 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( 8, 35, -1, -1, vs_std, NULL, NULL, gs_std, fs_in, NULL, GL_UNIFORM, "(vs,gs,fs)", st_r_uniform),
+ ST( 2, 9, -1, -1, NULL, tcs_sub, tes_in, 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( 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( 7, 26, 2, -1, vs_std, NULL, NULL, gs_std, fs_in, NULL, GL_UNIFORM_BLOCK, "(vs,gs,fs)", st_r_uniform_block),
+ ST( 2, 18, -1, -1, NULL, tcs_sub, tes_in, 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),
ST( 2, 25, -1, -1, NULL, NULL, NULL, gs_std, NULL, NULL, GL_PROGRAM_INPUT, "(gs)", st_r_in_gs),
- ST( 1, 10, -1, -1, NULL, NULL, NULL, NULL, fs_std, NULL, GL_PROGRAM_INPUT, "(fs)", st_r_in_fs),
+ ST( 1, 10, -1, -1, NULL, NULL, NULL, NULL, fs_in, NULL, GL_PROGRAM_INPUT, "(fs)", st_r_in_fs),
ST( 2, 10, -1, -1, vs_std, NULL, NULL, NULL, fs_std, NULL, GL_PROGRAM_INPUT, "(vs,fs)", st_r_in_vs),
ST( 2, 10, -1, -1, vs_std, NULL, NULL, gs_std, NULL, NULL, GL_PROGRAM_INPUT, "(vs,gs)", st_r_in_vs),
- ST( 2, 25, -1, -1, NULL, NULL, NULL, gs_std, fs_std, NULL, GL_PROGRAM_INPUT, "(gs,fs)", st_r_in_gs),
- ST( 2, 10, -1, -1, vs_std, NULL, NULL, gs_std, fs_std, NULL, GL_PROGRAM_INPUT, "(vs,gs,fs)", st_r_in_vs),
- ST( 2, 25, -1, -1, NULL, NULL, tes_sub, NULL, NULL, NULL, GL_PROGRAM_INPUT, "(tes)", st_r_in_tes),
+ ST( 2, 25, -1, -1, NULL, NULL, NULL, gs_std, fs_in, NULL, GL_PROGRAM_INPUT, "(gs,fs)", st_r_in_gs),
+ ST( 2, 10, -1, -1, vs_std, NULL, NULL, gs_std, fs_in, NULL, GL_PROGRAM_INPUT, "(vs,gs,fs)", st_r_in_vs),
+ ST( 2, 25, -1, -1, NULL, NULL, tes_in, NULL, NULL, NULL, GL_PROGRAM_INPUT, "(tes)", st_r_in_tes),
ST( 3, 25, -1, -1, NULL, tcs_sub, NULL, NULL, NULL, NULL, GL_PROGRAM_INPUT, "(tcs)", st_r_in_tcs),
- ST( 3, 25, -1, -1, NULL, tcs_sub, tes_sub, NULL, NULL, NULL, GL_PROGRAM_INPUT, "(tcs,tes)", st_r_in_tcs),
- ST( 2, 10, -1, -1, vs_std, tcs_sub, tes_sub, NULL, NULL, NULL, GL_PROGRAM_INPUT, "(vs,tcs,tes)", st_r_in_vs),
+ ST( 3, 25, -1, -1, NULL, tcs_sub, tes_in, NULL, NULL, NULL, GL_PROGRAM_INPUT, "(tcs,tes)", st_r_in_tcs),
+ ST( 2, 10, -1, -1, vs_std, tcs_sub, tes_in, NULL, NULL, NULL, GL_PROGRAM_INPUT, "(vs,tcs,tes)", st_r_in_vs),
ST( 0, 0, -1, -1, NULL, NULL, NULL, NULL, NULL, cs_sub, GL_PROGRAM_INPUT, "(cs)", NULL),
- ST( 1, 12, -1, -1, vs_std, NULL, NULL, NULL, NULL, NULL, GL_PROGRAM_OUTPUT, "(vs)", st_r_out_vs),
+ ST( 2, 12, -1, -1, vs_std, NULL, NULL, NULL, NULL, NULL, GL_PROGRAM_OUTPUT, "(vs)", st_r_out_vs),
ST( 2, 12, -1, -1, NULL, NULL, NULL, gs_std, NULL, NULL, GL_PROGRAM_OUTPUT, "(gs)", st_r_out_gs),
ST( 2, 11, -1, -1, NULL, NULL, NULL, NULL, fs_std, NULL, GL_PROGRAM_OUTPUT, "(fs)", st_r_out_fs),
ST( 2, 11, -1, -1, vs_std, NULL, NULL, NULL, fs_std, NULL, GL_PROGRAM_OUTPUT, "(vs,fs)", st_r_out_fs),
ST( 2, 12, -1, -1, vs_std, NULL, NULL, gs_std, NULL, NULL, GL_PROGRAM_OUTPUT, "(vs,gs)", st_r_out_gs),
- ST( 2, 11, -1, -1, NULL, NULL, NULL, gs_std, fs_std, NULL, GL_PROGRAM_OUTPUT, "(gs,fs)", st_r_out_fs),
- ST( 2, 11, -1, -1, vs_std, NULL, NULL, gs_std, fs_std, NULL, GL_PROGRAM_OUTPUT, "(vs,gs,fs)", st_r_out_fs),
- ST( 2, 14, -1, -1, NULL, NULL, tes_sub, NULL, NULL, NULL, GL_PROGRAM_OUTPUT, "(tes)", st_r_out_tes),
+ ST( 2, 11, -1, -1, NULL, NULL, NULL, gs_std, fs_in, NULL, GL_PROGRAM_OUTPUT, "(gs,fs)", st_r_out_fs),
+ ST( 2, 11, -1, -1, vs_std, NULL, NULL, gs_std, fs_in, NULL, GL_PROGRAM_OUTPUT, "(vs,gs,fs)", st_r_out_fs),
+ ST( 2, 12, -1, -1, NULL, NULL, tes_in, NULL, NULL, NULL, GL_PROGRAM_OUTPUT, "(tes)", st_r_out_tes),
ST( 3, 25, -1, -1, NULL, tcs_sub, NULL, NULL, NULL, NULL, GL_PROGRAM_OUTPUT, "(tcs)", st_r_out_tcs),
- ST( 2, 14, -1, -1, NULL, tcs_sub, tes_sub, NULL, NULL, NULL, GL_PROGRAM_OUTPUT, "(tcs,tes)", st_r_out_tes),
- ST( 2, 12, -1, -1, NULL, tcs_sub, tes_sub, gs_std, NULL, NULL, GL_PROGRAM_OUTPUT, "(tcs,tes,gs)", st_r_out_gs),
+ ST( 2, 12, -1, -1, NULL, tcs_sub, tes_in, NULL, NULL, NULL, GL_PROGRAM_OUTPUT, "(tcs,tes)", st_r_out_tes),
+ ST( 2, 12, -1, -1, NULL, tcs_sub, tes_in, gs_std, NULL, NULL, GL_PROGRAM_OUTPUT, "(tcs,tes,gs)", st_r_out_gs),
ST( 0, 0, -1, -1, NULL, NULL, NULL, NULL, NULL, cs_sub, GL_PROGRAM_OUTPUT, "(cs)", st_r_cs_sub),
ST( 3, 11, -1, -1, vs_stor, NULL, NULL, gs_stor, fs_stor, NULL, GL_BUFFER_VARIABLE, "", st_r_buffer),
ST( 3, 16, 1, -1, vs_stor, NULL, NULL, gs_stor, fs_stor, NULL, GL_SHADER_STORAGE_BLOCK, "", st_r_stor_block),