[Piglit] [RFC PATCH 0/5] Add tests for ARB_bindless_texture

Nicolai Hähnle nhaehnle at gmail.com
Wed Mar 29 15:51:01 UTC 2017


On 28.03.2017 00:05, Samuel Pitoiset wrote:
> Hi,
>
> This series introduces some tests for ARB_bindless_texture. The series
> has been splitted into 4 different parts to try to help reviewers because
> it's a bunch of new code.
>
> Although this seems huge at first look, I don't cover 100% of the spec
> but I think it's time to have some feedbacks. What I have in mind is to
> add few more tests like one for seamless cubemap and at least one which
> uses both bindless/bound samplers/images.
>
> I tested the series with the NVIDIA blob (378-13-4 on ArchLinux), here's
> the list of fails:
>
> $ ./piglit-run.py -v -1 tests/all.py -t arb_bindless_texture nvidia-bindless
>
> fail: spec/arb_bindless_texture/linker/global_bindless_sampler_and_implicit_bound_sampler
> fail: spec/arb_bindless_texture/linker/global_bindless_image_and_implicit_bound_image

I don't think those two tests are valid. At least the quoted spec 
language doesn't support it.

It's not clear to me whether the global default of bindless should apply 
to the uniform declared in the other compilation unit, but even if it 
doesn't, the spec language only calls for an error if there are 
conflicting *explicit* specifications.


> fail: spec/arb_bindless_texture/linker/global_bindless_image_and_bound_image
> fail: spec/arb_bindless_texture/linker/global_bindless_sampler_and_bound_sampler
>
> Those fail with the NVIDIA blob, I think they are valid though. Any ideas?

I agree they're valid.


> fail: spec/arb_bindless_texture/compiler/images/return.frag
>
> No ideas why the NVIDIA blob doesn't allow this, it should be valid I think.

I also agree this should be valid. What's the error given by the blob?


> fail: spec/arb_bindless_texture/compiler/images/explicit-conversions.vert
>
> The NVIDIA blob looks buggy here.

Agreed.


> fail: spec/arb_bindless_texture/compiler/images/output.frag
> fail: spec/arb_bindless_texture/compiler/samplers/output.frag
>
> Although it's dumb to declare shader outputs inside fragment shaders, the NVIDIA blob allows this.

... and the spec forbids it, so I'd say the test is good.


> fail: spec/arb_bindless_texture/compiler/images/input.frag
> fail: spec/arb_bindless_texture/compiler/samplers/input.frag
>
> The NVIDIA blob doesn't seem to require the 'flat' qualifier.

Test looks good.


> fail: spec/arb_bindless_texture/errors
> fail: spec/arb_bindless_texture/handles
>
> The NVIDIA blob returns GL_INVALID_OPERATION instead of GL_INVALID_VALUE when
> the texture object doesn't exist.

Wouldn't be the first time for this kind of bug.

I didn't really look into the patches in any detail, just the conflicts 
you mentioned above, but thanks for tackling this!

Cheers,
Nicolai

>
> Feedbacks are welcome,
> Please review, Thanks!
>
> Samuel Pitoiset (5):
>   shader_runner: add support for ARB_bindless_texture
>   add API-related tests for ARB_bindless_texture
>   arb_bindless_texture: add compiler-related tests
>   arb_bindless_texture: add linker-related tests
>   arb_bindless_texture: add execution-related tests
>
>  tests/all.py                                       |  14 +
>  tests/shaders/shader_runner.c                      |  92 ++++
>  tests/spec/CMakeLists.txt                          |   1 +
>  tests/spec/arb_bindless_texture/CMakeLists.gl.txt  |  21 +
>  tests/spec/arb_bindless_texture/CMakeLists.txt     |   1 +
>  tests/spec/arb_bindless_texture/border-color.c     | 209 ++++++++
>  .../compiler/images/arith-expr.vert                |  32 ++
>  .../compiler/images/bindless-global.vert           |  25 +
>  .../compiler/images/bindless-local.vert            |  25 +
>  .../compiler/images/bindless-nonuniform.vert       |  23 +
>  .../compiler/images/bound-global.vert              |  25 +
>  .../compiler/images/bound-local.vert               |  25 +
>  .../compiler/images/bound-nonuniform.vert          |  23 +
>  .../compiler/images/explicit-conversions.vert      |  86 +++
>  .../compiler/images/flat-input.frag                |  28 +
>  .../compiler/images/implicit_conversions.vert      |  22 +
>  .../compiler/images/indexing.vert                  |  30 ++
>  .../compiler/images/inout-struct.frag              |  29 ++
>  .../compiler/images/inout.frag                     |  24 +
>  .../compiler/images/input.frag                     |  28 +
>  .../compiler/images/input.vert                     |  25 +
>  .../compiler/images/interface-block.vert           |  27 +
>  .../compiler/images/out-struct.frag                |  29 ++
>  .../arb_bindless_texture/compiler/images/out.frag  |  24 +
>  .../compiler/images/output.frag                    |  22 +
>  .../compiler/images/output.vert                    |  24 +
>  .../compiler/images/return-struct.frag             |  32 ++
>  .../compiler/images/return.frag                    |  26 +
>  .../compiler/images/temporary.vert                 |  21 +
>  .../compiler/samplers/arith-expr.vert              |  31 ++
>  .../compiler/samplers/bindless-global.vert         |  24 +
>  .../compiler/samplers/bindless-local.vert          |  24 +
>  .../compiler/samplers/bindless-nonuniform.vert     |  22 +
>  .../compiler/samplers/bound-global.vert            |  24 +
>  .../compiler/samplers/bound-local.vert             |  24 +
>  .../compiler/samplers/bound-nonuniform.vert        |  22 +
>  .../compiler/samplers/explicit-conversions.vert    | 114 ++++
>  .../compiler/samplers/flat-input.frag              |  27 +
>  .../compiler/samplers/implicit-conversions.vert    |  21 +
>  .../compiler/samplers/indexing.vert                |  29 ++
>  .../compiler/samplers/inout-struct.frag            |  28 +
>  .../compiler/samplers/inout.frag                   |  23 +
>  .../compiler/samplers/input.frag                   |  27 +
>  .../compiler/samplers/input.vert                   |  24 +
>  .../compiler/samplers/interface-block.vert         |  26 +
>  .../compiler/samplers/out-struct.frag              |  28 +
>  .../compiler/samplers/out.frag                     |  23 +
>  .../compiler/samplers/output.frag                  |  21 +
>  .../compiler/samplers/output.vert                  |  23 +
>  .../compiler/samplers/return-struct.frag           |  31 ++
>  .../compiler/samplers/return.frag                  |  25 +
>  .../compiler/samplers/temporary.vert               |  20 +
>  tests/spec/arb_bindless_texture/conversions.c      | 280 ++++++++++
>  tests/spec/arb_bindless_texture/errors.c           | 514 ++++++++++++++++++
>  .../execution/basic-image.shader_test              |  52 ++
>  .../execution/basic-texture.shader_test            |  26 +
>  .../execution/basic-vertex.shader_test             |  41 ++
>  tests/spec/arb_bindless_texture/handles.c          | 576 +++++++++++++++++++++
>  tests/spec/arb_bindless_texture/illegal.c          | 331 ++++++++++++
>  tests/spec/arb_bindless_texture/legal.c            | 259 +++++++++
>  tests/spec/arb_bindless_texture/limit.c            | 302 +++++++++++
>  ...obal_bindless_image_and_bound_image.shader_test |  42 ++
>  ...al_bindless_image_and_bound_sampler.shader_test |  32 ++
>  ...less_image_and_implicit_bound_image.shader_test |  45 ++
>  ...bindless_sampler_and_bindless_image.shader_test |  32 ++
>  ...al_bindless_sampler_and_bound_image.shader_test |  32 ++
>  ..._bindless_sampler_and_bound_sampler.shader_test |  39 ++
>  ..._sampler_and_implicit_bound_sampler.shader_test |  42 ++
>  ...lobal_bound_sampler_and_bound_image.shader_test |  32 ++
>  tests/spec/arb_bindless_texture/uint64_attribs.c   |  96 ++++
>  tests/spec/arb_bindless_texture/uniform.c          | 371 +++++++++++++
>  71 files changed, 4798 insertions(+)
>  create mode 100644 tests/spec/arb_bindless_texture/CMakeLists.gl.txt
>  create mode 100644 tests/spec/arb_bindless_texture/CMakeLists.txt
>  create mode 100644 tests/spec/arb_bindless_texture/border-color.c
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/arith-expr.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/bindless-global.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/bindless-local.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/bindless-nonuniform.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/bound-global.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/bound-local.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/bound-nonuniform.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/explicit-conversions.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/flat-input.frag
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/implicit_conversions.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/indexing.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/inout-struct.frag
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/inout.frag
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/input.frag
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/input.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/interface-block.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/out-struct.frag
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/out.frag
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/output.frag
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/output.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/return-struct.frag
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/return.frag
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/images/temporary.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/arith-expr.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/bindless-global.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/bindless-local.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/bindless-nonuniform.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/bound-global.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/bound-local.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/bound-nonuniform.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/explicit-conversions.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/flat-input.frag
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/implicit-conversions.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/indexing.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/inout-struct.frag
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/inout.frag
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/input.frag
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/input.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/interface-block.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/out-struct.frag
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/out.frag
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/output.frag
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/output.vert
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/return-struct.frag
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/return.frag
>  create mode 100644 tests/spec/arb_bindless_texture/compiler/samplers/temporary.vert
>  create mode 100644 tests/spec/arb_bindless_texture/conversions.c
>  create mode 100644 tests/spec/arb_bindless_texture/errors.c
>  create mode 100644 tests/spec/arb_bindless_texture/execution/basic-image.shader_test
>  create mode 100644 tests/spec/arb_bindless_texture/execution/basic-texture.shader_test
>  create mode 100644 tests/spec/arb_bindless_texture/execution/basic-vertex.shader_test
>  create mode 100644 tests/spec/arb_bindless_texture/handles.c
>  create mode 100644 tests/spec/arb_bindless_texture/illegal.c
>  create mode 100644 tests/spec/arb_bindless_texture/legal.c
>  create mode 100644 tests/spec/arb_bindless_texture/limit.c
>  create mode 100644 tests/spec/arb_bindless_texture/linker/global_bindless_image_and_bound_image.shader_test
>  create mode 100644 tests/spec/arb_bindless_texture/linker/global_bindless_image_and_bound_sampler.shader_test
>  create mode 100644 tests/spec/arb_bindless_texture/linker/global_bindless_image_and_implicit_bound_image.shader_test
>  create mode 100644 tests/spec/arb_bindless_texture/linker/global_bindless_sampler_and_bindless_image.shader_test
>  create mode 100644 tests/spec/arb_bindless_texture/linker/global_bindless_sampler_and_bound_image.shader_test
>  create mode 100644 tests/spec/arb_bindless_texture/linker/global_bindless_sampler_and_bound_sampler.shader_test
>  create mode 100644 tests/spec/arb_bindless_texture/linker/global_bindless_sampler_and_implicit_bound_sampler.shader_test
>  create mode 100644 tests/spec/arb_bindless_texture/linker/global_bound_sampler_and_bound_image.shader_test
>  create mode 100644 tests/spec/arb_bindless_texture/uint64_attribs.c
>  create mode 100644 tests/spec/arb_bindless_texture/uniform.c
>


-- 
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.


More information about the Piglit mailing list