[Mesa-dev] [PATCH 00/22] Nir support for Nouveau
Karol Herbst
kherbst at redhat.com
Thu Dec 21 16:02:54 UTC 2017
uhm, actually that should have been marked as a RFC, sorry for that.
On Thu, Dec 21, 2017 at 4:51 PM, Karol Herbst <kherbst at redhat.com> wrote:
> Plans are to get SPIR-V support for Nouveau with a cheap way. Before that I
> was looking into Pierres work on his direct SPIR-V to nvir pass and seemed
> much more complicated than doing NIR to nvir.
>
> In the end we still plan to get Compute support through SPIR-V and my hope is
> to get that piped through NIR, so that a lot of other drivers could benefit
> from this as well.
>
> Stuff up to GLSL 1.30 should work (just 2 piglit fails up to that), some games
> run as well (truth is, I only checked one, but I expect that more will run).
> Usually I took the add-stuff-until-piglit-test-passes approach so a lot of
> details are still missing.
>
> But nevertheless I would like to get some feedback on the work and suggestions
> for improving this work.
>
> To use NIR just set NV50_PROG_USE_NIR=1 for a mesa DEBUG build. I plan to move
> it to a non debug variable for the next series.
>
> Features I want to work next on:
> * Geometry shaders
> * UBOs
>
> ./piglit run -x glx -x egl -x streaming-texture-leak -x max-texture-size tests/gpu.py:
> [26073/26073] skip: 1574, pass: 13451, warn: 9, fail: 5287, crash: 5752
>
> Note: a lot of crashes are geometry/tesselation stuff hitting asserts.
>
> Karol Herbst (22):
> nvir: print the shader type when dumping headers
> nvir: move common converter code in base class
> nvc0: add support for NIR
> nvc0/debug: add env var to make nir default
> nvir/nir: run some passes to make the conversion easier
> nvir/nir: track defs and provide easy access functions
> nvir/nir: add nir type helper functions
> nvir/nir: implement CFG handling
> nvir/nir: implement nir_load_const_instr
> nvir/nir: add skeleton for nir_intrinsic_instr
> nvir/nir: implement nir_alu_instr handling
> nvir/nir: implement nir_intrinsic_load_uniform
> nvir/nir: implement nir_intrinsic_store_output
> nvir/nir: implement nir_intrinsic_load_input
> nvir/nir: run assignSlots
> nvir/nir: parse NIR shader info
> nvir/nir: implement intrinsic_discard(_if)
> nvir/nir: implement loading system values
> nvir/nir: implement nir_ssa_undef_instr
> nvir/nir: implement nir_instr_type_tex
> nvir/nir: implement vote
> nvir/nir: implement variable indexing
>
> src/gallium/drivers/nouveau/Makefile.sources | 3 +
> src/gallium/drivers/nouveau/codegen/nv50_ir.cpp | 3 +
> src/gallium/drivers/nouveau/codegen/nv50_ir.h | 1 +
> .../nouveau/codegen/nv50_ir_from_common.cpp | 145 ++
> .../drivers/nouveau/codegen/nv50_ir_from_common.h | 59 +
> .../drivers/nouveau/codegen/nv50_ir_from_nir.cpp | 2009 ++++++++++++++++++++
> .../drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp | 146 +-
> src/gallium/drivers/nouveau/meson.build | 12 +-
> src/gallium/drivers/nouveau/nvc0/nvc0_program.c | 17 +-
> src/gallium/drivers/nouveau/nvc0/nvc0_screen.c | 53 +-
> src/gallium/drivers/nouveau/nvc0/nvc0_state.c | 24 +-
> 11 files changed, 2321 insertions(+), 151 deletions(-)
> create mode 100644 src/gallium/drivers/nouveau/codegen/nv50_ir_from_common.cpp
> create mode 100644 src/gallium/drivers/nouveau/codegen/nv50_ir_from_common.h
> create mode 100644 src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp
>
> --
> 2.14.3
>
More information about the mesa-dev
mailing list