[Mesa-dev] Fwd: [PATCH 0/4] Core NIR support for ARB_shader_group_vote and ARB_shader_ballot
Connor Abbott
cwabbott0 at gmail.com
Mon Jun 5 19:54:02 UTC 2017
Whoops, wrong address... let's try that again.
---------- Forwarded message ----------
From: Connor Abbott <cwabbott0 at gmail.com>
Date: Mon, Jun 5, 2017 at 12:22 PM
Subject: [PATCH 0/4] Core NIR support for ARB_shader_group_vote and
ARB_shader_ballot
To: mesa-devel at lists.freedesktop.org
Cc: Connor Abbott <cwabbott0 at gmail.com>
This series adds the core NIR bits required to support
ARB_shader_group_vote and ARB_shader_ballot, two post-GL4.5 extensions.
What's interesting about them is that they add new instructions with
constraints that we've never had to deal with before. They can exist
anywhere in the program, but they do cross-thread communication among
the active threads, so each thread's result depends on which other
threads are active. This kind of "breaks SSA" in a similar, but not
exactly the same, way as reading and writing to memory does. I've
modeled this with two new attributes explained in the first patch. We
definitely could do more analysis to allow better optimizations for
these instructions, but I've left that for a later series. I'm mostly
sending this out now to get feedback to make sure that these attributes
are the approach we want to take.
Connor Abbott (4):
nir: introduce new convergent and cross-thread attributes
nir/gcm: use the new cross-thread attribute
nir: take cross-thread operations into account into a few places
nir: add ARB_shader_ballot and ARB_shader_group_vote instructions
src/compiler/nir/nir.h | 88 +++++++++++++++++++++++++++++-
src/compiler/nir/nir_instr_set.c | 12 ++++
src/compiler/nir/nir_intrinsics.h | 14 +++++
src/compiler/nir/nir_opcodes.py | 50 ++++++++++++-----
src/compiler/nir/nir_opcodes_c.py | 2 +
src/compiler/nir/nir_opt_gcm.c | 72 ++++++++----------------
src/compiler/nir/nir_opt_peephole_select.c | 11 ++++
7 files changed, 186 insertions(+), 63 deletions(-)
--
2.9.4
More information about the mesa-dev
mailing list