[Piglit] [PATCH 0/4] Add simple GL_ARB_draw_instanced tests

Brian Paul brianp at vmware.com
Sun Apr 10 09:04:25 PDT 2011


On 04/09/2011 08:24 PM, Ian Romanick wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 04/09/2011 10:21 AM, Brian Paul wrote:
>> On 04/08/2011 08:49 PM, Ian Romanick wrote:
>>> These are super basic tests, but they're better than what we had before
>>> (which was nothing).
>>>
>>> All of the tests except a couple of the negative tests pass on
>>> AMD's closed-source driver.  On their driver, both gl_InstanceIDARB and
>>> GL_ARB_draw_instanced (feature macro) are available without the
>>> #extension
>>> line.
>>>
>>> Many tests fail on NVIDIA's closed-source driver.  They don't make
>>> gl_InstanceIDARB available at link time with or without the #extension
>>> line.
>>> Oddly, it is available at compile time.
>>>
>>> I have not tried any of these tests on Mesa.  Some Tested-by feedback
>>> would be
>>> appreciated.
>>>
>>> It would also be good to have tests that:
>>>
>>>      - Verify that GL_INVALID_ENUM is generated by
>>> glDrawElementsInstancedARB if
>>>        <type>   is not one of GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT or
>>>        GL_UNSIGNED_INT.  This is listed in the "Errors" section of the
>>> spec.
>>>
>>>      - Verify that GL_INVALID_VALUE is generated by
>>> glDrawArraysInstancedARB if
>>>        <first>   is less than zero.  This is listed in the "Errors"
>>> section of the
>>>        spec.
>>>
>>>      - Verify that glMultiDrawArrays and glMultiDrawElements do not
>>> affect the
>>>        value of gl_InstanceIDARB.  This is issue #2 in the spec.
>>>
>>>      - Verify that GL_INVALID_OPERATION is generated if
>>> glDrawArraysInstanced or
>>>        glDrawElementsInstanced is compiled into a display list.  This
>>> is issue
>>>        #3 in the spec.
>>>
>>>      - Verify that no error is generated and nothing is drawn if
>>> primcount for
>>>        glDrawArraysInstanced or glDrawElementsInstanced is less than or
>>> equal to
>>>        zero.  The spec does not say that an error is generated, and the
>>> "It has
>>>        the same effect as" code in section 2.8 will not draw anything if
>>>        primcount is less than or equal to zero.
>>>
>>>      - Verify that gl_InstanceIDARB is zero in a non-instanced draw
>>> call that
>>>        follows an instanced draw call.
>>>
>>> I'd suggest stuffing all of those in tests/specs/arb_draw_instanced/api.
>>
>> What about the existing instanced tests that I added a while back?
>
> Where are those?  I must have overlooked them...

tests/general/draw-instanced.c
tests/general/draw-instanced-divisor.c


>> Here's the output of running the the new tests with softpipe/llvmpipe:
>>
>> $ bin/shader_runner
>> tests/spec/arb_draw_instanced/execution/draw-non-instanced.shader_test
>> Failed to compile VS: 0:11(34): error: `gl_InstanceID' undeclared
>> 0:11(15): error: cannot construct `float' from a non-numeric data type
>> 0:11(10): error: cannot construct `vec4' from a non-numeric data type
>
> Oh damn.  I sent the wrong patch set out.  I somehow sent the ones that
> were modified to work on NVIDIA's drivers.  They don't have
> gl_InstanceIDARB, so the tests were modified to use gl_InstanceID which
> doesn't work on Mesa.
>
>> PIGLIT: {'result': 'fail' }
>>
>> $ bin/shader_runner
>> tests/spec/arb_draw_instanced/execution/instance-array-dereference.shader_test
>>
>> Failed to compile VS: 0:8(26): error: cannot initialize uniforms in GLSL
>> 1.10
>> 0:6(34): error: array constructors forbidden in GLSL 1.10
>> 0:8(26): error: initializer of uniform variable `instance_colors' must
>> be a constant expression
>> 0:14(42): error: unsized array index must be constant
>
> This test has the same problem as the previous, and it should also have
> #version 120 because of the uniform initializer.  How lovely that
> neither NVIDIA nor AMD rejected that.  Sigh...
>
>> PIGLIT: {'result': 'fail' }
>>
>> $ bin/instanced_arrays -auto
>> PIGLIT: {'result': 'pass' }
>>
>> $ bin/shader_runner
>> tests/spec/arb_draw_instanced/compiler/instanceidarb-enabled.vert -auto
>> PIGLIT: {'result': 'pass' }
>>
>> $ bin/shader_runner
>> tests/spec/arb_draw_instanced/compiler/instanceidarb-disabled.vert -auto
>> PIGLIT: {'result': 'pass' }
>>
>> $ bin/shader_runner
>> tests/spec/arb_draw_instanced/compiler/instanceidarb-disabled.frag -auto
>> PIGLIT: {'result': 'pass' }
>>
>> $ bin/shader_runner
>> tests/spec/arb_draw_instanced/compiler/instanceidarb-enabled.frag -auto
>> PIGLIT: {'result': 'pass' }
>>
>> Is that all of them?
>
> Yes.
>
> I'll spin a new patch series on Monday.

OK.

-Brian


More information about the Piglit mailing list