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

Eero Tamminen eero.t.tamminen at intel.com
Mon Nov 5 16:39:48 UTC 2018


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?


	- 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(-)
> 



More information about the mesa-dev mailing list