I'm seeing a problem that seems to be caused by rendering two objects with different number of vertex streams in the same render pass, causing one of the objects to not draw. I have two meshes, one that has positions stored in one stream followed by all other attributes (normals and uvs) interleaved in another stream, and a second object with all three attributes interleaved in a single stream.
I create two render pipelines which, except for different vertex descriptors, are otherwise identical. The problem is that the 1-stream object doesn't draw, but if I just comment out the drawIndexedPrimitives call that draws the 2-stream object then it does. If I load a 1-stream version of the 2-stream object then both display. Also changing the shader for the 1-stream object (so that two pipelines are still used) also works fine.
When I do a frame capture I can see the missing object drawn in green wireframe at the end of the command buffer, but it never changes to the final rasterized version like the other object does.
It seems like it could be a bug since it happens on OS X only (10.11 GM seed), the same code on iOS draws both objects as expected. I've only tested this on Iris 6100 graphics (2015 13" rMBP) so far. I can supply a sample application if you think it would be worth taking a look. Otherwise can anyone think of anything that I might be doing wrong? I have the validation layer enabled and the output is all clean.
Thanks,
Evan