On 09/04/2013 09:28 AM, Paul Berry wrote:
On 3 September 2013 13:17, Chad Versace <[email protected]>wrote:

On 08/26/2013 11:38 PM, Paul Berry wrote:

Verified using the NVIDIA proprietary driver for linux.
---
   tests/all.tests                                    |   9 +
   .../glsl-1.50/execution/**geometry/CMakeLists.gl.txt |   1 +
   .../execution/geometry/**primitive-id-restart.c      | 265
+++++++++++++++++++++
   3 files changed, 275 insertions(+)
   create mode 100644 tests/spec/glsl-1.50/**execution/geometry/primitive-
**id-restart.c



  +#define NUM_INPUT_ELEMENTS \
+       (LONGEST_INPUT_SEQUENCE * (LONGEST_INPUT_SEQUENCE + 3) / 2)
+#define MAX_TOTAL_PRIMS \
+       (LONGEST_INPUT_SEQUENCE * (LONGEST_INPUT_SEQUENCE + 1) / 2)


The term 'INPUT' in the var name NUM_INPUT_ELEMENTS confused me. So went my
mind... "The ELEMENTS
are qualified as INPUT ELEMENTS, which distinguishes them from... OUTPUT
ELEMENTS?
SOMETHING_ELSE ELEMENTS? What type of elements are these, if there be
INPUT and
OTHER_TYPES of elements? I do not know these ELEMENTS." Eventually, I saw
that they
were just vanilla ELEMENTS. Oh well.


I don't have strong feelings about these names.  Would you like me to
change NUM_INPUT_ELEMENTS to NUM_ELEMENTS?  If so, do you think it would
make sense to also change LONGEST_INPUT_SEQUENCE to LONGEST_SEQUENCE?

Yes, please rename NUM_INPUT_ELEMENTS to NUM_ELEMENTS. I find that name more
clear. As for LONGEST_INPUT_SEQUENCE vs LONGEST_SEQUENCE, I've no preference 
there.


+
+       /* Check transform feedback outputs. */
+       readback = glMapBuffer(GL_TRANSFORM_**FEEDBACK_BUFFER,
GL_READ_ONLY);
+       for (i = 0; i < primitives_generated; i++) {
+               if (readback[i] != i) {
+                       printf("Expected primitive %d to have
gl_PrimitiveIDIn"
+                              " = %d, got %d instead\n", i, i,
readback[i]);
+                       pass = false;


If gl_PrimitiveIDIn fails to increment at the first occurrence of the
primitive
restart, then this errors gets emitted up to sum(i, {i, 2, 12}) = 77 times.
I'd prefer that this error message not spam the console and instead be
emitted
only once. But, if you disagree, then I defer.


Yes, that's true.  In fact, on Ivy Bridge it currently does this for
GL_LINE_LOOP, because of what appears to be a hardware bug: sending a
single vertex down the pipeline in GL_LINE_LOOP mode causes a degenerate
line loop to be emitted consisting of a single line primitive from the
vertex to itself.  Mesa's software primitive restart code doesn't expect
this, so it doesn't increment the primitive ID, and as a result all of the
remaining primitive IDs are off by one.  (I haven't yet decided whether
this is worth working around, and if so how.)

On the other hand, when I was using this test to develop the necessary
primitive ID workarounds on Ivy Bridge, I found it really useful to see all
the errors, because that made it easy to tell what the actual sequence of
primitive ID's was, so I could see what I did wrong.  So I think I will
leave it as is.

If you think the flood of error messages are helpful during diagnosis, then
this sounds good to me.


Thanks for the changes.
Reviewed-by: Chad Versace <[email protected]>
_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to