Re: [Mesa-dev] [PATCH 0/2] Improve emitted code for copies of large buffer-backed variables
Series Reviewed-by: Jordan JustenOn 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 > ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCH 0/2] Improve emitted code for copies of large buffer-backed variables
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 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev