[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