We've had this optimization in the GL driver since July but never got
around to hooking it up in Vulkan.  This lets us turn UBOs into push
constants which are significantly faster since they read the UBO data
once and the shader dispatch shoves it into the shader prior to program
execution.

I have zero benchmark numbers at the moment but I expect this to help
anything which uses UBOs and has constant offsets into them which is
basically everything.  Unfortunately, I'm at home and not near any
hardware with stable enough performance characteristics to get decent
numbers today.

Cc: Kenneth Graunke <kenn...@whitecape.org>
Cc: Eero Tamminen <eero.t.tammi...@intel.com>

Jason Ekstrand (6):
  anv/pipeline: Translate vulkan_resource_index to a constant when
    possible
  anv/cmd_buffer: Add some helpers for working with descriptor sets
  anv/cmd_buffer: Add some stage asserts
  anv/cmd_buffer: Add support for pushing UBO ranges
  anv/device: Increase the UBO alignment requirement to 32
  anv: Enable UBO pushing

 src/intel/vulkan/anv_device.c                    |  13 +-
 src/intel/vulkan/anv_nir_apply_pipeline_layout.c |  15 +-
 src/intel/vulkan/anv_pipeline.c                  |   6 +
 src/intel/vulkan/genX_cmd_buffer.c               | 191 ++++++++++++++++++-----
 src/intel/vulkan/genX_pipeline.c                 |   3 +-
 5 files changed, 179 insertions(+), 49 deletions(-)

-- 
2.5.0.400.gff86faf

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to