On Tuesday, July 29, 2014 10:12:23 AM Iago Toral Quiroga wrote: > Hi, > > running the piglit tests on my implementation of geometry shaders for > Sandy Bridge produces a GPU hang for the following test: > > ./glsl-1.50-geometry-primitive-id-restart GL_TRIANGLE_STRIP_ADJACENCY > ffs > > That test checks primitive restarts but the hang seems to be unrelated > to that, since it happens also when primitive restart is not enabled. > The problem, which only affects GL_TRIANGLE_STRIP_ADJACENCY and no other > primitive type -with our without adjacency-, is in this loop that the > test uses to setup the indices for the vertices: > > elements = glMapBuffer(GL_ELEMENT_ARRAY_BUFFER, GL_READ_WRITE); > num_elements = 0; > for (i = 1; i <= LONGEST_INPUT_SEQUENCE; i++) { > for (j = 0; j < i; j++) { > /* Every element that isn't the primitive > * restart index can just be element 0, since > * we don't care about the actual vertex data. > */ > elements[num_elements++] = 0; > } > elements[num_elements++] = prim_restart_index; > } > glUnmapBuffer(GL_ELEMENT_ARRAY_BUFFER); > > Setting all elements to the same index (0 in this case) is the one thing > that causes the hang for GL_TRIANGLE_STRIP_ADJACENCY. A simple change > like this removes the hang: > - elements[num_elements++] = 0; > + elements[num_elements++] = j != prim_restart_index ? j : j + 1; > > Skimming through the docs I have not seen any references to this being a > known problem. In fact, I don't see any references to > GL_TRIANGLE_STRIP_ADJACENCY being special in any way and it seems that > this is not a problem in IvyBridge, since the test runs correctly there. > > Does this sound like a hardware bug specific to SandyBridge's handling > of GL_TRIANGLE_STRIP_ADJACENCY or is there something else I should check > before arriving to that conclusion?
Odd. It could very well be, but I don't see anything in the documentation, either. Could you post a branch with your preliminary code? I'd be happy to look into the hang and see if I come up with any more useful information... > If it is a hardware bug I guess we want a workaround for it , at least > to prevent the hang or something but I am not sure what would be the > best option here, I think the only option for the driver would be to > explore the list of indices provided when this primitive type is used > and when we hit this scenario (I'd have to test how many repeating > indices we need for it to hang), error out and do not execute the > drawing command or something... any other suggestions? > > Iago
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev