[Mesa-dev] [PATCH v3 0/5] nvc0: Implement EXT_shader_image_load_formatted

Rhys Perry pendingchaos02 at gmail.com
Wed Jan 16 23:18:24 UTC 2019


This patch series implements EXT_shader_image_load_formatted on Maxwell+.

It should implement all of the spec except, if the extension is enabled,
passing image variables without a format qualifier to atomic operations
will not raise a compilation error like it should.

This is because knowing the format used in an image operation before
function inlining can be difficult, because formats don't have to (and
currently can't) be specified in the paramter declaration. So this series
leaves this issue to hopefully be resolved in a later patch.

I tested the second version of this series when it was released in June
2018 but I can't easily test this version. Nothing changed too much though
so it should be fine.

v2: change from PIPE_SHADER_CAP_* to PIPE_CAP_*
v2: fix broken feature detection in the state tracker
v2: move code in AlgebraicOpt::handleSULDP() to nv50_ir_ra.cpp
v3: rebase
v3: make use of u_pipe_screen_get_param_defaults
v3: move RA code into it's own function

Rhys Perry (5):
  gallium: add support for formatted image loads
  mesa,glsl: add support for EXT_shader_image_load_formatted
  st/mesa: add support for EXT_shader_image_load_formatted
  nv50/ir: use suld.p on GM107+
  nvc0,nv50/ir: enable support for formatted image loads on GM107+

 src/compiler/glsl/ast_to_hir.cpp              |  5 +++
 src/compiler/glsl/glsl_parser_extras.cpp      |  1 +
 src/compiler/glsl/glsl_parser_extras.h        |  7 ++++
 src/gallium/auxiliary/util/u_screen.c         |  1 +
 src/gallium/docs/source/screen.rst            |  1 +
 src/gallium/drivers/nouveau/codegen/nv50_ir.h |  4 +++
 .../nouveau/codegen/nv50_ir_emit_gm107.cpp    | 34 ++++++++++++-------
 .../nouveau/codegen/nv50_ir_lowering_nvc0.cpp |  3 +-
 .../drivers/nouveau/codegen/nv50_ir_print.cpp | 17 ++++++++++
 .../drivers/nouveau/codegen/nv50_ir_ra.cpp    | 31 +++++++++++++++++
 .../drivers/nouveau/nv30/nv30_screen.c        |  1 +
 .../drivers/nouveau/nv50/nv50_screen.c        |  1 +
 .../drivers/nouveau/nvc0/nvc0_screen.c        |  2 ++
 src/gallium/drivers/swr/swr_screen.cpp        |  1 +
 src/gallium/drivers/vc4/vc4_screen.c          |  1 +
 src/gallium/include/pipe/p_defines.h          |  1 +
 src/mesa/main/extensions_table.h              |  1 +
 src/mesa/main/mtypes.h                        |  1 +
 src/mesa/state_tracker/st_extensions.c        |  1 +
 19 files changed, 100 insertions(+), 14 deletions(-)

-- 
2.20.1



More information about the mesa-dev mailing list