[Mesa-dev] [PATCH 0/6] radv: Rewrite local & shared variable handling
Connor Abbott
connora at valvesoftware.com
Thu Jul 6 19:48:41 UTC 2017
From: Connor Abbott <cwabbott0 at gmail.com>
This series grew out of trying to get rid of the copy-n-pasted index
calculation code in radv's NIR-to-LLVM path, in particular in
radv_get_deref_offset(). I realized for IO it's probably better to
switch to using nir_lower_io after Nicolai's series, but for local
variables and shared variables which can't be accessed by the host and
don't have to match between stages, it's simpler to translate the NIR
variable directly into an LLVM variable instead.
This cleanup gives us indirect addressing of local variables without
generating if-ladders in NIR for free, and makes our shared variable
handling much better which fixes an upcoming Feral title. It should also
let LLVM do its thing much better, even better than the existing
radeonsi path, by preserving type information that TGSI doesn't for
local variables.
Connor Abbott (6):
nir: don't segfault when printing variables with no name
nir/lower_io_to_temporaries: don't set compact on shadow vars
ac/nir: rewrite local variable handling
ac/nir: rewrite shared variable handling
radv: reorder and add passes to match i965
radv: don't lower indirect derefs
src/amd/common/ac_nir_to_llvm.c | 310 +++++++++++++------------
src/amd/vulkan/radv_pipeline.c | 28 ++-
src/compiler/nir/nir_lower_io_to_temporaries.c | 1 +
src/compiler/nir/nir_print.c | 2 +-
4 files changed, 187 insertions(+), 154 deletions(-)
--
2.9.4
More information about the mesa-dev
mailing list