[Mesa-dev] [RFCv3 00/11] gallium: add support for NIR as alternate IR
Rob Clark
robdclark at gmail.com
Sun Jan 31 12:16:08 PST 2016
From: Rob Clark <robclark at freedesktop.org>
Ok, v3 of something I've been working on here and there for a while..
Since the last time I've sent this patchset, I've added support for
lowering drawpix/bitmap in NIR, as well as a NIR equiv to tgsi_emulate.
In addition, I've added a pass to lower builtin uniforms, for reasons
describes in 10/11. And in general organized things a bit better and
fixed a whole lot of stuff.
I think I've addressed all the review comments from the previous
round. Thanks for those.
At this point, the only regressions are with variable-indexing stuff,
and the issue there is entirely in freedreno/ir3 backend. So from a
functional standpoint, I think the gallium/mesa-st NIR support is
ready to go, with just cosmetic changes remaining. But of course this
would be a good time for review comments ;-)
IMHO the major remaining TODO item is how to populate the 'struct
nir_shader_compiler_options'. Some, but far from all is available in
shader caps. But adding a bunch of shader caps now, and then more
later every time the compiler_options struct is extended doesn't sound
like fun. It would be kind of nice if the pipe driver could return
the compiler_options to use directly.
As before, the latest is at:
https://github.com/freedreno/mesa/commits/wip-gallium-skip-tgsi
Rob Clark (11):
gallium: refactor pipe_shader_state to support multiple IR's
gallium: add NIR as a possible IR
nir: add helper to calculate type size
nir: allow pre-resolved sampler uniform locations
nir: add lowering pass for y-transform
nir: add lowering pass for glDrawPixels
nir: add lowering pass for glBitmap
gallium/auxiliary: introduce nir_emulate
glsl: export accessor for builtin-uniform descriptors
mesa/st: add nir pass for lowering builtin uniforms
mesa/st: add support for NIR as possible driver IR
src/compiler/Makefile.sources | 3 +
src/compiler/glsl/builtin_variables.cpp | 24 +-
src/compiler/glsl/ir.h | 3 +
src/compiler/nir/nir.h | 34 +++
src/compiler/nir/nir_builder.h | 2 +-
src/compiler/nir/nir_lower_bitmap.c | 166 +++++++++++
src/compiler/nir/nir_lower_drawpixels.c | 252 ++++++++++++++++
src/compiler/nir/nir_lower_samplers.c | 23 +-
src/compiler/nir/nir_lower_wpos_ytransform.c | 317 ++++++++++++++++++++
src/compiler/nir_types.cpp | 75 +++++
src/compiler/nir_types.h | 3 +
src/gallium/auxiliary/Makefile.sources | 2 +
src/gallium/auxiliary/hud/hud_context.c | 9 +-
src/gallium/auxiliary/nir/nir_emulate.c | 177 +++++++++++
src/gallium/auxiliary/nir/nir_emulate.h | 34 +++
src/gallium/auxiliary/postprocess/pp_run.c | 3 +-
src/gallium/auxiliary/tgsi/tgsi_ureg.c | 4 +-
src/gallium/auxiliary/util/u_simple_shaders.c | 18 +-
src/gallium/auxiliary/util/u_tests.c | 3 +-
src/gallium/include/pipe/p_defines.h | 13 +-
src/gallium/include/pipe/p_state.h | 32 +-
src/mesa/Makefile.sources | 3 +
src/mesa/state_tracker/st_glsl_to_nir.cpp | 407 ++++++++++++++++++++++++++
src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 147 ++++------
src/mesa/state_tracker/st_glsl_to_tgsi.h | 5 +
src/mesa/state_tracker/st_nir.h | 51 ++++
src/mesa/state_tracker/st_nir_lower_builtin.c | 207 +++++++++++++
src/mesa/state_tracker/st_program.c | 171 +++++++++--
src/mesa/state_tracker/st_program.h | 6 +
29 files changed, 2037 insertions(+), 157 deletions(-)
create mode 100644 src/compiler/nir/nir_lower_bitmap.c
create mode 100644 src/compiler/nir/nir_lower_drawpixels.c
create mode 100644 src/compiler/nir/nir_lower_wpos_ytransform.c
create mode 100644 src/gallium/auxiliary/nir/nir_emulate.c
create mode 100644 src/gallium/auxiliary/nir/nir_emulate.h
create mode 100644 src/mesa/state_tracker/st_glsl_to_nir.cpp
create mode 100644 src/mesa/state_tracker/st_nir.h
create mode 100644 src/mesa/state_tracker/st_nir_lower_builtin.c
--
2.5.0
More information about the mesa-dev
mailing list