[Mesa-dev] [PATCH 00/18] Multi-stream support for geometry shaders

Samuel Iglesias Gonsálvez siglesias at igalia.com
Mon Jun 16 01:05:03 PDT 2014


On Sun, 2014-06-15 at 19:18 -0400, Ilia Mirkin wrote:
> On Wed, Jun 11, 2014 at 12:31 PM, Jordan Justen <jljusten at gmail.com> wrote:
> > On Wed, Jun 11, 2014 at 2:49 AM, Iago Toral <itoral at igalia.com> wrote:
> >> Hi Chris,
> >>
> >> thanks for the quick review!
> >>
> >> On Wed, 2014-06-11 at 21:45 +1200, Chris Forbes wrote:
> >>> I sent comments on patches 1, 3, 5, 9, 11, 16, 18
> >>
> >> We will look into these.
> >>
> >>> Patches 2, 4, 6-8, 10, 12-15, 17 are:
> >>>
> >>> Reviewed-by: Chris Forbes <chrisf at ijw.co.nz>
> >>>
> >>> You should also include a patch to docs/GL3.txt marking off this
> >>> subfeature for i965 :)
> >>>
> >>>
> >>> Do you have a bunch of piglits which exercise all the tricky corners
> >>> of this? I see a few tests
> >>> which require the existence of the stream layout qualifier, but not
> >>> covering all the behavior.
> >>
> >> No, so far we have been testing this with a standalone program. We will
> >> check what already exists in piglit and add missing test cases.
> >
> > This is the only piglit test that I know about:
> > http://patchwork.freedesktop.org/patch/19224/
> >
> > Note that it passed on nvidia, but failed on catalyst.
> 
> I just ran that test against this code (+ a few changes to add support
> in gallium) and I got:
> 
> $ MESA_EXTENSION_OVERRIDE=GL_ARB_gpu_shader5
> bin/arb_gpu_shader5-xfb-streams -fbo -auto
> Failed to compile geometry shader: 0:3(1): error: invalid input layout
> qualifiers used
> 
> source:
> #version 150
> #extension GL_ARB_gpu_shader5 : enable
> layout(points, invocations = 32) in;
> layout(points, max_vertices = 4) out;
> out float stream0_0_out;
> layout(stream = 1) out vec2 stream1_0_out;
> layout(stream = 2) out float stream2_0_out;
> layout(stream = 3) out vec3 stream3_0_out;
> layout(stream = 1) out vec3 stream1_1_out;
> layout(stream = 2) out vec4 stream2_1_out;
> void main() {
>   gl_Position = gl_in[0].gl_Position;
>   stream0_0_out = 1.0 + gl_InvocationID;
>   EmitVertex();
>   EndPrimitive();
>   stream3_0_out = vec3(12.0 + gl_InvocationID, 13.0 + gl_InvocationID,
>                        14.0 + gl_InvocationID);
>   EmitStreamVertex(3);
>   EndStreamPrimitive(3);
>   stream2_0_out = 7.0 + gl_InvocationID;
>   stream2_1_out = vec4(8.0 + gl_InvocationID, 9.0 + gl_InvocationID,
>                        10.0 + gl_InvocationID, 11.0 + gl_InvocationID);
>   EmitStreamVertex(2);
>   EndStreamPrimitive(2);
>   stream1_0_out = vec2(2.0 + gl_InvocationID, 3.0 + gl_InvocationID);
>   stream1_1_out = vec3(4.0 + gl_InvocationID, 5.0 + gl_InvocationID,
>                        6.0 + gl_InvocationID);
>   EmitStreamVertex(1);
>   EndStreamPrimitive(1);
> }PIGLIT: {'result': 'fail' }
> 
> I guess it doesn't like
> 
> "layout(points, invocations=32) in"? Not sure. I could also have
> messed something up... doing a bisect over your patches blames
> 
> "glsl: Add parsing support for multi-stream output in geometry shaders."
> 
> Before that, it goes until the first stream=1 layout and fails there
> (which is expected).
> 
>   -ilia

I will take a look at it.

Thanks for reporting!

Sam
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20140616/b9726c81/attachment.sig>


More information about the mesa-dev mailing list