Hi folks, This series adds support for ARB_shader_image_load_store (GL 4.2) and ARB_shader_image_size (GL 4.3) on Maxwell GPUs.
Maxwell family is slightly different regarding Fermi and Kepler because it requires to use a texture view for each images. But this is actually quite fine because the underlying hardware will handle a bunch of things that we needed to do in software for previous generations. However, this series *WILL NOT ENABLE* ARB_shader_image_load_store by default for the following reasons: a) Some subtests in arb_shader_image_load_store-atomicity totally hangs the GPU because there is a race condition. The code is a loop which uses the result of the surface atomic operation as the condition. The only way for fixing this bad is to implement a sched calculator pass for Maxwell. This actually allows to define read/write barriers like the blob does for this specific case, and this might also improve performance. b) Maxwell currently only exposes GL 3.3 because tessellation has still not been figured out (I'm working on this but it's quite hard). So enabling the extension is not going to help until this part is done. To sum up, this series add "basic" support for images but it should work in most cases. Please review, Thanks! Samuel Pitoiset (8): nvc0: increase the tex handles area size in the driver cb nvc0: bind images for 3d/cp shaders on GM107+ gm107/ir: lower surface operations gm107/ra: fix constraints for surface operations gm107/ir: add emission for SUSTx and SULDx gm107/ir: add emission for SUREDx nv50/ir: print OP_SUREDB subops in debug mode nvc0: disable MS images on GM107+ .../drivers/nouveau/codegen/nv50_ir_emit_gm107.cpp | 155 +++++++++++++++++++++ .../nouveau/codegen/nv50_ir_lowering_nvc0.cpp | 76 +++++++++- .../nouveau/codegen/nv50_ir_lowering_nvc0.h | 2 + .../drivers/nouveau/codegen/nv50_ir_print.cpp | 1 + src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp | 25 +++- src/gallium/drivers/nouveau/nvc0/nvc0_context.c | 5 +- src/gallium/drivers/nouveau/nvc0/nvc0_context.h | 26 ++-- src/gallium/drivers/nouveau/nvc0/nvc0_screen.c | 7 + src/gallium/drivers/nouveau/nvc0/nvc0_state.c | 10 +- src/gallium/drivers/nouveau/nvc0/nvc0_tex.c | 110 ++++++++++++++- src/gallium/drivers/nouveau/nvc0/nve4_compute.c | 91 ++++++++++-- 11 files changed, 476 insertions(+), 32 deletions(-) -- 2.9.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev