[Mesa-dev] [PATCH 00/11] intel/fs: Add a generic SEND opcode and use it on

Jason Ekstrand jason at jlekstrand.net
Mon Nov 5 16:58:00 UTC 2018


On Mon, Nov 5, 2018 at 10:39 AM Eero Tamminen <eero.t.tamminen at intel.com>
wrote:

> Hi,
>
> On 3.11.2018 2.06, Jason Ekstrand wrote:
> > This patch series is something we've talked about doing for a while and
> > haven't gotten around to yet.  It implements a generic SEND opcode and
> then
> > reworks a bunch of the current SEND instructions such as texturing to use
> > that instead of piles of shader codegen.  Among other things, this gives
> us
> > substantially better scheduling of instructions around indirect sends.
> > They currently generate up to 5 ALU instructions in the generator to
> build
> > the indirect descriptor and this is reduced to 1 with the other 4
> happening
> > in the IR level where we can schedule.
>
> Would that have any impact on (currently missing) GEN9+ SENDS support?
>
> Splitted send message uses 2 register ranges which can be independently
> allocated & updated (can improve performance in cases like MRT and blur
> shaders with several consecutive & partly similar sends).
>
> I.e. instructions updating those register ranges should be scheduled
> differently to get advantage of SENDS.  Would that need to be taken
> into account at IR level too?
>

This is my proposed path to SENDS support.  The idea is that the SEND
opcode takes one or two payloads and will automatically emit SEND, SENDC,
SENDS, or SENDSC as needed based on the number of payloads and whether or
not the extended descriptor is an immediate.

--Jason


>         - Eero
>
> > Jason Ekstrand (11):
> >    intel/defines: Explicitly cast to uint32_t in SET_FIELD and SET_BITS
> >    intel/fs: Handle IMAGE_SIZE in size_read() and is_send_from_grf()
> >    intel/fs: Take an explicit exec size in brw_surface_payload_size()
> >    intel/eu: Add has_simd4x2 bools to surface_write functions
> >    intel/eu: Rework surface descriptor helpers
> >    intel/fs: Add a generic SEND opcode
> >    intel/fs: Use the generic SEND opcode for surface messages
> >    intel/fs: Mark texture surfaces used in brw_fs_nir
> >    intel/fs: Use a logical opcode for IMAGE_SIZE
> >    intel/fs: Use SHADER_OPCODE_SEND for texturing on gen7+
> >    intel/fs: Use SHADER_OPCODE_SEND for varying UBO pulls on gen7+
> >
> >   src/intel/compiler/brw_eu.h                   | 237 +++++++++--
> >   src/intel/compiler/brw_eu_defines.h           |  13 +-
> >   src/intel/compiler/brw_eu_emit.c              | 376 +++---------------
> >   src/intel/compiler/brw_fs.cpp                 | 371 ++++++++++++++---
> >   src/intel/compiler/brw_fs.h                   |  12 +-
> >   src/intel/compiler/brw_fs_cse.cpp             |   6 +-
> >   src/intel/compiler/brw_fs_generator.cpp       | 334 +++-------------
> >   src/intel/compiler/brw_fs_nir.cpp             |  30 +-
> >   src/intel/compiler/brw_fs_reg_allocate.cpp    |   6 +-
> >   .../compiler/brw_schedule_instructions.cpp    |  90 ++++-
> >   src/intel/compiler/brw_shader.cpp             |  10 +-
> >   src/intel/compiler/brw_shader.h               |   5 +
> >   src/mesa/drivers/dri/i965/brw_defines.h       |   2 +-
> >   13 files changed, 778 insertions(+), 714 deletions(-)
> >
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20181105/3d0e3111/attachment.html>


More information about the mesa-dev mailing list