[Mesa-dev] [PATCH v2 00/31] Nir support for Nouveau
Jason Ekstrand
jason at jlekstrand.net
Thu Jan 4 17:52:56 UTC 2018
On January 4, 2018 11:50:12 Karol Herbst <kherbst at redhat.com> wrote:
> On Thu, Jan 4, 2018 at 6:39 PM, Jason Ekstrand <jason at jlekstrand.net> wrote:
>> I'm fairly pleased that you were able to get this far with only 3k lines.
>> How much is that compared to your TGSI consumer?
>>
>>
>
> around 4,3k, but keep in mind, that we really only want to convert
> things here and all the RA, optimizations and emitting stuff is shared
> (on top of the 4,3k loc)
Yeah, I assumed as much. We also have a decent sized back-end IR (two of
them, actually).
>>
>> On January 4, 2018 09:02:24 Karol Herbst <kherbst at redhat.com> wrote:
>>
>>> significant changes to last series:
>>> * support for geometry, tessellation and compute shaders
>>> * support for more intrinsics and operations
>>> * lot of fixes for 64 bit types
>>> * NV50_PROG_USE_NIR=1 can be used to enable NIR for non debug builds
>>>
>>> There are some outstanding issues triggered by having 64 bit loads and
>>> nir_compact_varyings also does some harm. But I think the current state is
>>> quite good and a lot of things will work out of the box already.
>>>
>>> I mainly tested with piglit, unigine heaven and valley. RealisticRendering
>>> Demo
>>> doesn't run yet, but this might be related to some 64bit or memory related
>>> issues.
>>>
>>> It would be nice if others could just run some games/tests with it and
>>> report
>>> back where things are still broken, so that the focus can be on fixing
>>> real
>>> issues instead of trying to pass all tests first.
>>>
>>> ./piglit run -x glx -x egl -x streaming-texture-leak -x max-texture-size
>>> tests/gpu.py:
>>> [26073/26073] skip: 1640, pass: 20773, warn: 9, fail: 1548, crash: 2103
>>>
>>> the biggest todos looking at the piglit results are:
>>> * arb_gpu_shader5 interpolateat* (those nir ops don't map well to nvir)
>>> no good plan on how to properly implement those
>>> * arb_gpu_shader5.texturegatheroffsets (nir internal assert)
>>> glsl_to_nir.cpp:2082: virtual void
>>> {anonymous}::nir_visitor::visit(ir_texture*): Assertion
>>> `ir->offset->type->is_vector() || ir->offset->type->is_scalar()' failed.
>>> * some int64 stuff related to compound types
>>> * various extensions
>>> * variable-indexing (related to above mentioned packing issue)
>>> * glsl-4.20.execution.vs_in
>>> * some variable-indexing issues related to unaligned memory accesses
>>> * some geometry shader fails
>>>
>>> Karol Herbst (31):
>>> st/nir: treat tess shader input/outputs the same as geom shaders
>>> nvir: print the shader type when dumping headers
>>> nvir: move common converter code in base class
>>> nvir: add lowering helper
>>> 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: use lowering helper
>>> nvir/nir: run assignSlots
>>> nvir/nir: parse NIR shader info
>>> 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_(per_vertex_)output
>>> nvir/nir: implement nir_intrinsic_load_input
>>> 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: add getOperation for intrinsics
>>> nvir/nir: implement vote and ballot
>>> nvir/nir: implement variable indexing
>>> nvir/nir: implement geometry shader nir_intrinsics
>>> nvir/nir: implement nir_intrinsic_load_ubo
>>> nvir/nir: implement ssbo intrinsics
>>> nvir/nir: implement images
>>> nvir/nir: add memory barriers
>>>
>>> src/gallium/drivers/nouveau/Makefile.sources | 5 +
>>> 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 | 107 +
>>> .../drivers/nouveau/codegen/nv50_ir_from_common.h | 58 +
>>> .../drivers/nouveau/codegen/nv50_ir_from_nir.cpp | 2630
>>> ++++++++++++++++++++
>>> .../drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp | 106 +-
>>> .../nouveau/codegen/nv50_ir_lowering_helper.cpp | 204 ++
>>> .../nouveau/codegen/nv50_ir_lowering_helper.h | 50 +
>>> src/gallium/drivers/nouveau/meson.build | 14 +-
>>> src/gallium/drivers/nouveau/nvc0/nvc0_program.c | 17 +-
>>> src/gallium/drivers/nouveau/nvc0/nvc0_screen.c | 50 +-
>>> src/gallium/drivers/nouveau/nvc0/nvc0_state.c | 27 +-
>>> src/mesa/state_tracker/st_glsl_to_nir.cpp | 4 +-
>>> 14 files changed, 3162 insertions(+), 114 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
>>> create mode 100644
>>> src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_helper.cpp
>>> create mode 100644
>>> src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_helper.h
>>>
>>> --
>>> 2.14.3
>>>
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>
>>
>>
More information about the mesa-dev
mailing list