On Mon, Jun 23, 2014 at 3:02 PM, Ian Romanick <[email protected]> wrote: > On 06/23/2014 06:52 AM, Ilia Mirkin wrote: >> With no layered fb and unconfigured viewports, the values of >> gl_Layer/gl_ViewportIndex shouldn't matter for rendering. Make sure that >> they're being passed through correctly from GS to FS. > > This test is > > Reviewed-by: Ian Romanick <[email protected]>
Thanks! > > It would be really good to have a separate shader objects version of the > test too. I suspect Mesa may have some additional difficulties with > that case... Unfortunately that's beyond my abilities, unless shader_runner can do it and you can point me at some examples. > >> Signed-off-by: Ilia Mirkin <[email protected]> >> --- >> >> These apply on top of ChrisF's series. >> >> .../layer-gs-write-simple.shader_test | 70 >> +++++++++++++++++++++ >> .../viewport-gs-write-simple.shader_test | 72 >> ++++++++++++++++++++++ >> 2 files changed, 142 insertions(+) >> create mode 100644 >> tests/spec/arb_fragment_layer_viewport/layer-gs-write-simple.shader_test >> create mode 100644 >> tests/spec/arb_fragment_layer_viewport/viewport-gs-write-simple.shader_test >> >> diff --git >> a/tests/spec/arb_fragment_layer_viewport/layer-gs-write-simple.shader_test >> b/tests/spec/arb_fragment_layer_viewport/layer-gs-write-simple.shader_test >> new file mode 100644 >> index 0000000..1d27dde >> --- /dev/null >> +++ >> b/tests/spec/arb_fragment_layer_viewport/layer-gs-write-simple.shader_test >> @@ -0,0 +1,70 @@ >> +[require] >> +GLSL >= 1.50 >> +GL_ARB_fragment_layer_viewport >> + >> +[vertex shader] >> +#version 150 >> +in vec4 piglit_vertex; >> + >> +void main() >> +{ >> + gl_Position = piglit_vertex; >> +} >> + >> +[geometry shader] >> +#version 150 >> + >> +layout(triangles) in; >> +layout(triangle_strip, max_vertices=3) out; >> +uniform int layer; >> + >> +void main() >> +{ >> + for (int i = 0; i < 3; i++) { >> + gl_Position = gl_in[i].gl_Position; >> + gl_Layer = layer; >> + EmitVertex(); >> + } >> +} >> + >> +[fragment shader] >> +#version 150 >> +#extension GL_ARB_fragment_layer_viewport: require >> + >> +uniform int layer; >> + >> +void main() >> +{ >> + if (gl_Layer == layer) >> + gl_FragColor = vec4(0,1,0,0); >> + else >> + gl_FragColor = vec4(1,0,0,0); >> +} >> + >> +[test] >> +clear color 0.0 0.0 0.0 0.0 >> + >> +clear >> +uniform int layer 0 >> +draw rect -1 -1 2 2 >> +probe all rgb 0.0 1.0 0.0 >> + >> +clear >> +uniform int layer 1 >> +draw rect -1 -1 2 2 >> +probe all rgb 0.0 1.0 0.0 >> + >> +clear >> +uniform int layer 10 >> +draw rect -1 -1 2 2 >> +probe all rgb 0.0 1.0 0.0 >> + >> +clear >> +uniform int layer 100 >> +draw rect -1 -1 2 2 >> +probe all rgb 0.0 1.0 0.0 >> + >> +clear >> +uniform int layer -1 >> +draw rect -1 -1 2 2 >> +probe all rgb 0.0 1.0 0.0 >> diff --git >> a/tests/spec/arb_fragment_layer_viewport/viewport-gs-write-simple.shader_test >> >> b/tests/spec/arb_fragment_layer_viewport/viewport-gs-write-simple.shader_test >> new file mode 100644 >> index 0000000..06abd96 >> --- /dev/null >> +++ >> b/tests/spec/arb_fragment_layer_viewport/viewport-gs-write-simple.shader_test >> @@ -0,0 +1,72 @@ >> +[require] >> +GLSL >= 1.50 >> +GL_ARB_fragment_layer_viewport >> +GL_ARB_viewport_array >> + >> +[vertex shader] >> +#version 150 >> +in vec4 piglit_vertex; >> + >> +void main() >> +{ >> + gl_Position = piglit_vertex; >> +} >> + >> +[geometry shader] >> +#version 150 >> +#extension GL_ARB_viewport_array: enable >> + >> +layout(triangles) in; >> +layout(triangle_strip, max_vertices=3) out; >> +uniform int viewport; >> + >> +void main() >> +{ >> + for (int i = 0; i < 3; i++) { >> + gl_Position = gl_in[i].gl_Position; >> + gl_ViewportIndex = viewport; >> + EmitVertex(); >> + } >> +} >> + >> +[fragment shader] >> +#version 150 >> +#extension GL_ARB_fragment_layer_viewport: require >> + >> +uniform int viewport; >> + >> +void main() >> +{ >> + if (gl_ViewportIndex == viewport) >> + gl_FragColor = vec4(0,1,0,0); >> + else >> + gl_FragColor = vec4(1,0,0,0); >> +} >> + >> +[test] >> +clear color 0.0 0.0 0.0 0.0 >> + >> +clear >> +uniform int viewport 0 >> +draw rect -1 -1 2 2 >> +probe all rgb 0.0 1.0 0.0 >> + >> +clear >> +uniform int viewport 1 >> +draw rect -1 -1 2 2 >> +probe all rgb 0.0 1.0 0.0 >> + >> +clear >> +uniform int viewport 10 >> +draw rect -1 -1 2 2 >> +probe all rgb 0.0 1.0 0.0 >> + >> +clear >> +uniform int viewport 100 >> +draw rect -1 -1 2 2 >> +probe all rgb 0.0 1.0 0.0 >> + >> +clear >> +uniform int viewport -1 >> +draw rect -1 -1 2 2 >> +probe all rgb 0.0 1.0 0.0 >> > _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
