[Mesa-dev] [PATCH v2 00/24] nvc0: ARB_shader_image_load_store/size on GK104
Samuel Pitoiset
samuel.pitoiset at gmail.com
Mon Apr 25 20:14:48 UTC 2016
Hi,
This series adds support for ARB_shader_image_load_store (GL 4.2) and
ARB_shader_image_size (GL 4.3) on GK104 and will expose OpenGL 4.2 on
this chipset.
The list of dEQP/piglit fails is available below.
Please review,
Thanks!
Ilia Mirkin (1):
nv50/ir: add support for SULDP -> SULDB conversion
Samuel Pitoiset (23):
nvc0: add preliminary support for images
nvc0: reserve an area for surfaces info in the driver constbuf
nvc0: bind images on compute shaders for Kepler
nvc0: bind images on 3D shaders for Kepler
nvc0: fix address offset when images have multiple levels
nvc0: shift address with blocksize for image buffers
nvc0: enable RGB10_A2UI format on GK104
nvc0: add missing glMemoryBarrier bits
nv50/ir: add support for TGSI image declarations
nv50/ir: re-introduce TGSI lowering pass for images
nvc0/ir: fix constraints for OP_SUSTx on Kepler
nv50/ir: enable early fragment test with explicit user control
nv50/ir: add OP_BUFQ for buffers query
nv50/ir: make use of OP_SUQ for surfaces query
nvc0/ir: fix cube images for Kepler
nvc0/ir: fix 1D arrays images for Kepler
nvc0/ir: add indirect support for images on Kepler
nvc0/ir: prevent out of bounds when no images are bound
nvc0/ir: check that the image format doesn't mismatch
nvc0: reduce GL_MAX_3D_TEXTURE_SIZE to 2048 on Kepler+
nvc0: inform users that 3D images are not fully supported
nvc0: enable ARB_shader_image_load_store on GK104
nvc0: expose GLSL version 420 on GK104
src/gallium/drivers/nouveau/codegen/nv50_ir.cpp | 49 ++++
src/gallium/drivers/nouveau/codegen/nv50_ir.h | 72 +++++
.../drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp | 212 +++++++++++++-
.../drivers/nouveau/codegen/nv50_ir_inlines.h | 6 +-
.../nouveau/codegen/nv50_ir_lowering_nvc0.cpp | 324 ++++++++++++++++-----
.../nouveau/codegen/nv50_ir_lowering_nvc0.h | 4 +-
.../drivers/nouveau/codegen/nv50_ir_print.cpp | 1 +
src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp | 4 +-
.../drivers/nouveau/codegen/nv50_ir_target.cpp | 3 +
src/gallium/drivers/nouveau/nvc0/nvc0_compute.c | 4 +-
src/gallium/drivers/nouveau/nvc0/nvc0_context.c | 26 +-
src/gallium/drivers/nouveau/nvc0/nvc0_context.h | 17 +-
src/gallium/drivers/nouveau/nvc0/nvc0_program.c | 8 +-
src/gallium/drivers/nouveau/nvc0/nvc0_screen.c | 8 +-
src/gallium/drivers/nouveau/nvc0/nvc0_screen.h | 1 +
src/gallium/drivers/nouveau/nvc0/nvc0_state.c | 53 +++-
.../drivers/nouveau/nvc0/nvc0_state_validate.c | 9 +-
src/gallium/drivers/nouveau/nvc0/nvc0_tex.c | 141 +++++++--
src/gallium/drivers/nouveau/nvc0/nve4_compute.c | 41 ++-
19 files changed, 846 insertions(+), 137 deletions(-)
--
2.8.0
** dEQP **
MESA_GLES_VERSION_OVERRIDE=3.1 ./piglit-run.py -1 --dmesg tests/deqp_gles31.py -t image_load_store gk104-deqp-images -o
[747/747] pass: 721, fail: 26 \
deqp-gles31/functional/image_load_store/3d/load_store/r32f_single_layer: fail
deqp-gles31/functional/image_load_store/3d/load_store/r32i_single_layer: fail
deqp-gles31/functional/image_load_store/3d/load_store/r32ui_single_layer: fail
deqp-gles31/functional/image_load_store/3d/load_store/rgba16f_single_layer: fail
deqp-gles31/functional/image_load_store/3d/load_store/rgba16i_single_layer: fail
deqp-gles31/functional/image_load_store/3d/load_store/rgba16ui_single_layer: fail
deqp-gles31/functional/image_load_store/3d/load_store/rgba32f_single_layer: fail
deqp-gles31/functional/image_load_store/3d/load_store/rgba32i_single_layer: fail
deqp-gles31/functional/image_load_store/3d/load_store/rgba32ui_single_layer: fail
deqp-gles31/functional/image_load_store/3d/load_store/rgba8_single_layer: fail
deqp-gles31/functional/image_load_store/3d/load_store/rgba8_snorm_single_layer: fail
deqp-gles31/functional/image_load_store/3d/load_store/rgba8i_single_layer: fail
deqp-gles31/functional/image_load_store/3d/load_store/rgba8ui_single_layer: fail
deqp-gles31/functional/image_load_store/3d/store/r32f_single_layer: fail
deqp-gles31/functional/image_load_store/3d/store/r32i_single_layer: fail
deqp-gles31/functional/image_load_store/3d/store/r32ui_single_layer: fail
deqp-gles31/functional/image_load_store/3d/store/rgba16f_single_layer: fail
deqp-gles31/functional/image_load_store/3d/store/rgba16i_single_layer: fail
deqp-gles31/functional/image_load_store/3d/store/rgba16ui_single_layer: fail
deqp-gles31/functional/image_load_store/3d/store/rgba32f_single_layer: fail
deqp-gles31/functional/image_load_store/3d/store/rgba32i_single_layer: fail
deqp-gles31/functional/image_load_store/3d/store/rgba32ui_single_layer: fail
deqp-gles31/functional/image_load_store/3d/store/rgba8_single_layer: fail
deqp-gles31/functional/image_load_store/3d/store/rgba8_snorm_single_layer: fail
deqp-gles31/functional/image_load_store/3d/store/rgba8i_single_layer: fail
deqp-gles31/functional/image_load_store/3d/store/rgba8ui_single_layer: fail
** piglit **
./piglit-run.py -1 --dmesg tests/all.py -t arb_shader_image_load_store -t arb_shader_image_size gk104-images -o
[633/633] skip: 37, pass: 592, fail: 4 /
spec/arb_shader_image_load_store/indexing/Compute shader/dynamically uniform indexing test: fail
This one worked with the v1, but some changes have been pushed to piglit in the meantime.
Unrelated to this series.
spec/arb_shader_image_load_store/invalid/imageAtomicAdd/address bounds test/imageBuffer/r32ui: fail
spec/arb_shader_image_load_store/invalid/imageAtomicAnd/address bounds test/imageBuffer/r32ui: fail
spec/arb_shader_image_load_store/invalid/imageAtomicCompSwap/address bounds test/imageBuffer/r32ui: fail
spec/arb_shader_image_load_store/invalid/imageAtomicMax/address bounds test/imageBuffer/r32ui: fail
spec/arb_shader_image_load_store/invalid/imageAtomicMin/address bounds test/imageBuffer/r32ui: fail
spec/arb_shader_image_load_store/invalid/imageAtomicOr/address bounds test/imageBuffer/r32ui: fail
spec/arb_shader_image_load_store/invalid/imageAtomicXor/address bounds test/imageBuffer/r32ui: fail
spec/arb_shader_image_load_store/invalid/imageLoad/address bounds test/imageBuffer/rgba32f: fail
I added a todo for these because they are a bit painful to fix (robustness-related).
spec/arb_shader_image_load_store/layer/image3D/non-layered binding test: fail
spec/arb_shader_image_load_store/max-size/image3D max size test/8x8x2048x1: fail
More information about the mesa-dev
mailing list