Reviewed-by: Chris Forbes <[email protected]>
On Tue, Jun 24, 2014 at 7:18 AM, Ilia Mirkin <[email protected]> wrote: > 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 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
