i965: Select ranges of UBO data to be uploaded as push constants.
This adds a NIR pass that decides which portions of UBOS we should
upload as push constants, rather than pull constants.
v2: Switch to uint16_t for the UBO block number, because we may
have a lot of them in Vulkan (suggested by Jason). Add more
comments about bitfield trickery (requested by Matt).
v3: Skip vec4 stages for now...I haven't finished wiring up support
in the vec4 backend, and so pushing the data but not using it
will just be wasteful.
Reviewed-by:
Matt Turner <mattst88@gmail.com>
- src/intel/Makefile.sources 1 addition, 0 deletionssrc/intel/Makefile.sources
- src/intel/compiler/brw_compiler.h 9 additions, 0 deletionssrc/intel/compiler/brw_compiler.h
- src/intel/compiler/brw_nir.h 4 additions, 0 deletionssrc/intel/compiler/brw_nir.h
- src/intel/compiler/brw_nir_analyze_ubo_ranges.c 298 additions, 0 deletionssrc/intel/compiler/brw_nir_analyze_ubo_ranges.c
- src/mesa/drivers/dri/i965/brw_gs.c 2 additions, 0 deletionssrc/mesa/drivers/dri/i965/brw_gs.c
- src/mesa/drivers/dri/i965/brw_tcs.c 2 additions, 0 deletionssrc/mesa/drivers/dri/i965/brw_tcs.c
- src/mesa/drivers/dri/i965/brw_tes.c 2 additions, 0 deletionssrc/mesa/drivers/dri/i965/brw_tes.c
- src/mesa/drivers/dri/i965/brw_vs.c 2 additions, 0 deletionssrc/mesa/drivers/dri/i965/brw_vs.c
- src/mesa/drivers/dri/i965/brw_wm.c 2 additions, 0 deletionssrc/mesa/drivers/dri/i965/brw_wm.c