[Mesa-dev] [PATCH 0/2] Improve emitted code for copies of large buffer-backed variables

Jordan Justen jordan.l.justen at intel.com
Tue Dec 1 00:45:26 PST 2015

Series Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>

On 2015-11-23 04:53:07, Iago Toral Quiroga wrote:
> Fixes linking issues when copying large variables backed by buffers (ubos, ssbos, etc).
> In these cases, lower_ubo_reference would split the rhs into loads for all the elements 
> first and then the lhs into writes to all the elements. This is not efficient, because
> it requires the whole set of loads to be alive until we start consuming them with
> the writes.       
> These patches fix this by splitting array and struct copies into multiple
> single-element copies so that we generate consecutive loads and stores for each
> element, reducing the lifespan of the loads and thus reducing register pressure.
> No regressions in dEQP's SSBO functional tests.
> Fixes:
> spec/arb_shader_storage_buffer_object/execution/large-field-copy.shader_test
> spec/arb_shader_storage_buffer_object/linker/copy-large-array.shader_test
> Iago Toral Quiroga (2):
>   glsl/lower_ubo_reference: split array copies into element copies
>   glsl/lower_ubo_reference: split struct copies into element copies
>  src/glsl/lower_ubo_reference.cpp | 119 +++++++++++++++++++++++++++++++++++++++
>  1 file changed, 119 insertions(+)
> -- 
> 1.9.1

More information about the mesa-dev mailing list