ARB_gl_spirv: ubo/ssbo tests

Submitted by apinheiro on Sept. 15, 2018, 4:22 p.m.

Details

Reviewer None
Submitted Sept. 15, 2018, 4:22 p.m.
Last Updated Sept. 21, 2018, 3:17 p.m.
Revision 1

Cover Letter(s)

Revision 1
      Hi,

a new series with ARB_gl_spirv tests, ubo/ssbo tests this time.

To test them we needed to extend shader runner in order to allow
dealing with ubos and ssbos without using the name of the ubo/ssbo or
their variables. This is needed because ARB_gl_spirv should work
without names available (on SPIR-V names are considered optional debug
info).

Instead of making that just inherent to SPIR-V tests, we added a mode
called force-no-names. This is because testing ubo/ssbos without names
could be interesting on GLSL too, since ARB_shading_language_420pack
added the support to set a explicit binding on the shader itself. In
that sense, without this commit, it is not possible to query that the
explicit binding is the one set when executing the test, as
shader_runner was resetting it.

The tests include some basic smoke-testing ubo/ssbo tests. Tests that
cover several common cases, that should work on any ARB_gl_spirv
implementation. For more detailed testing, it would be needed to use
borrowed testing, or even the random ubo generator script at
generated_tests (that it is not used by default).

The tests also includes some tests that only applies to ARB_gl_spirv
(so marked as SPIRV ONLY). Those tests the ability of setting the
explicit offsets/matrix stride/array stride of values that would not
be the ones that GLSL would provide, but are allowed on the SPIR-V
case.

In total, we are adding 36 new tests with this series.

Finally the first two patches are somewhat unrelated, as they are
patches that just improve the log when a test fail/skips on two
specific cases.

The tree for this series can be found on the following repository:
   https://github.com/Igalia/piglit/tree/arb_gl_spirv-series5-ubo-ssbo-v1

Alejandro PiƱeiro (15):
  shader_runner/spirv: log skip reason on ARB_gl_spirv extension check
  shader_runner/spirv: check if test really includes spirv
  shader_runner: add forcing_no_names mode
  shader_runner: add support for glGetProgram queries
  arb_gl_spirv: add GL_ACTIVE_UNIFORMS checks
  arb_gl_spirv: add some simple ubo tests
  arb_gl_spirv: add simple ubo tests with matrices
  arb_gl_spirv: add complex ubo test with matrices
  arb_gl_spirv: add a array of ubo test, with complex ubo content
  arb_gl_spirv: add ubo matrix test with different matrix_stride
  arb_gl_spirv: add ubo array test with different array_stride
  arb_gl_spirv: add some simple ssbo tests
  arb_gl_spirv: add simple ssbo tests with matrices
  arb_gl_spirv: adding complex ssbo matrix test
  arb_gl_spirv: add ssbo test using std140 and std430

Neil Roberts (2):
  arb_gl_spirv: Add tests for UBOs with explicit offsets
  arb_gl_spirv: Add a test for SSBOs with an unsized array

 tests/shaders/shader_runner.c                      | 348 ++++++++--
 .../execution/ssbo/array-indirect.shader_test      | 121 ++++
 .../execution/ssbo/array-inside-ssbo.shader_test   | 104 +++
 .../ssbo/array-of-arrays-inside-ssbo.shader_test   | 210 +++++++
 .../arb_gl_spirv/execution/ssbo/array.shader_test  | 111 ++++
 .../execution/ssbo/matrix/column-major.shader_test | 109 ++++
 .../ssbo/matrix/column-vs-row.shader_test          | 196 ++++++
 .../execution/ssbo/matrix/complex.shader_test      | 699 +++++++++++++++++++++
 .../ssbo/matrix/indirect-column-major.shader_test  | 131 ++++
 .../ssbo/matrix/indirect-row-major.shader_test     | 131 ++++
 .../execution/ssbo/matrix/row-major.shader_test    | 109 ++++
 .../arb_gl_spirv/execution/ssbo/simple.shader_test |  97 +++
 .../ssbo/two-ssbo-different-layouts.shader_test    | 374 +++++++++++
 .../execution/ssbo/two-ssbo.shader_test            | 106 ++++
 .../execution/ssbo/two-stages.shader_test          | 196 ++++++
 .../execution/ssbo/unsized-array.shader_test       | 119 ++++
 .../execution/ubo/array-complex.shader_test        | 183 ++++++
 .../array-different-array-stride-ubo.shader_test   | 147 +++++
 .../execution/ubo/array-indirect.shader_test       | 108 ++++
 .../execution/ubo/array-inside-ubo.shader_test     |  94 +++
 .../ubo/array-of-arrays-inside-ubo.shader_test     | 184 ++++++
 .../arb_gl_spirv/execution/ubo/array.shader_test   |  96 +++
 .../ubo/explicit-offset-nested-struct.shader_test  |  81 +++
 .../execution/ubo/explicit-offset.shader_test      |  80 +++
 .../execution/ubo/location-0-crash.shader_test     |  93 +++
 .../execution/ubo/matrix/column-major.shader_test  |  96 +++
 .../execution/ubo/matrix/column-vs-row.shader_test | 176 ++++++
 .../execution/ubo/matrix/complex.shader_test       | 624 ++++++++++++++++++
 .../ubo/matrix/different-matrix-stride.shader_test | 155 +++++
 .../ubo/matrix/indirect-column-major.shader_test   | 119 ++++
 .../ubo/matrix/indirect-row-major.shader_test      | 119 ++++
 .../execution/ubo/matrix/row-major.shader_test     |  96 +++
 .../arb_gl_spirv/execution/ubo/simple.shader_test  |  92 +++
 .../execution/ubo/two-stages.shader_test           | 191 ++++++
 .../execution/ubo/two-ubos.shader_test             |  98 +++
 .../execution/uniform/array.shader_test            |   2 +
 .../execution/uniform/arrays-of-arrays.shader_test |   2 +
 .../uniform/atomic-uint-aoa-cs.shader_test         |   2 +
 .../uniform/atomic-uint-aoa-fs.shader_test         |   2 +
 .../uniform/atomic-uint-array-cs.shader_test       |   2 +
 .../uniform/atomic-uint-array-fs.shader_test       |   2 +
 .../execution/uniform/atomic-uint-cs.shader_test   |   2 +
 .../execution/uniform/atomic-uint-fs.shader_runner |   1 +
 ...ic-uint-mixing-with-normal-uniforms.shader_test |   2 +
 .../uniform/atomic-uint-several-slots.shader_test  |   2 +
 .../execution/uniform/embedded-structs.shader_test |   2 +
 .../uniform/index-matches-location.shader_test     |   2 +
 .../uniform/initializer-complex.shader_test        |   2 +
 .../uniform/initializer-dvec4.shader_test          |   3 +
 .../uniform/initializer-mat4x3.shader_test         |   4 +
 .../execution/uniform/initializer.shader_test      |   2 +
 .../uniform/nonsequential-locations.shader_test    |   2 +
 .../uniform/sampler2d-binding-array.shader_test    |   2 +
 .../uniform/sampler2d-binding.shader_test          |   2 +
 .../sampler2d-nonconst-nested-array.shader_test    |   2 +
 .../execution/uniform/sampler2d-struct.shader_test |   2 +
 .../execution/uniform/sampler2d.shader_test        |   2 +
 .../uniform/simple-without-names.shader_test       |   2 +
 .../execution/uniform/simple.shader_test           |   2 +
 .../execution/uniform/struct-array.shader_test     |   2 +
 .../execution/uniform/struct.shader_test           |   2 +
 .../execution/uniform/two-uniforms.shader_test     |   2 +
 .../linker/ubo/two-stages-wrong1.shader_test       | 190 ++++++
 .../linker/ubo/two-stages-wrong2.shader_test       | 185 ++++++
 64 files changed, 6368 insertions(+), 56 deletions(-)
 create mode 100644 tests/spec/arb_gl_spirv/execution/ssbo/array-indirect.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ssbo/array-inside-ssbo.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ssbo/array-of-arrays-inside-ssbo.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ssbo/array.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ssbo/matrix/column-major.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ssbo/matrix/column-vs-row.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ssbo/matrix/complex.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ssbo/matrix/indirect-column-major.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ssbo/matrix/indirect-row-major.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ssbo/matrix/row-major.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ssbo/simple.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ssbo/two-ssbo-different-layouts.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ssbo/two-ssbo.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ssbo/two-stages.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ssbo/unsized-array.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ubo/array-complex.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ubo/array-different-array-stride-ubo.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ubo/array-indirect.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ubo/array-inside-ubo.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ubo/array-of-arrays-inside-ubo.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ubo/array.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ubo/explicit-offset-nested-struct.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ubo/explicit-offset.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ubo/location-0-crash.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ubo/matrix/column-major.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ubo/matrix/column-vs-row.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ubo/matrix/complex.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ubo/matrix/different-matrix-stride.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ubo/matrix/indirect-column-major.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ubo/matrix/indirect-row-major.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ubo/matrix/row-major.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ubo/simple.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ubo/two-stages.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/execution/ubo/two-ubos.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/linker/ubo/two-stages-wrong1.shader_test
 create mode 100644 tests/spec/arb_gl_spirv/linker/ubo/two-stages-wrong2.shader_test
    

Revisions