[Mesa-dev] [PATCH 0/4] Implement separate index spaces for UBOs and SSBOs

Kristian Høgsberg krh at bitplanet.net
Tue Oct 13 15:49:59 PDT 2015


On Fri, Oct 09, 2015 at 03:23:33PM +0200, Iago Toral Quiroga wrote:
> See the rationale for this in [1], no piglit regressions observed in my
> IvyBridge laptop.
> 
> Patch 1: Renames {Num}UniformBlocks to {Num}BufferInterfaceBlocks. This is
> more consistent with the current implementation, since right now
> UniformBlocks contains both UBOs and SSBOs.
> 
> Patch 2: Adds separate UniformBlocks and ShaderStorageBlocks arrays.
> 
> Patch 3: Changes lower_ubo_reference pass to use UniformBlocks and
>          ShaderStorageBlocks instead of BufferInterfaceBlocks so we get
>          block indices in separate index spaces.
> 
> Patch 4: Changes i965 to work with separate index spaces.
> 
> I think there are other places that use BufferInterfaceBlocks after
> linking that can be rewritten to use UniformBlocks or ShaderStorageBlocks
> more efficiently. I'd like to tackle that too, but I think it makes sense
> to land this first I think.

Sure, that sounds good. I wasn't sure about the name
'BufferInterfaceBlocks', but thinking about it, I think it's just
right.  They're interface blocks that are backed by buffers (as
opposed to input or output interface blocks).

Series

Reviewed-by: Kristian Høgsberg <krh at bitplanet.net>

> [1] http://lists.freedesktop.org/archives/mesa-dev/2015-October/095951.html
> 
> Iago Toral Quiroga (4):
>   mesa: Rename {Num}UniformBlocks to {Num}BufferInterfaceBlocks
>   mesa: Add {Num}UniformBlocks and {Num}ShaderStorageBlocks to
>     gl_shader{_program}
>   glsl/lower_ubo_reference: lower UBOs and SSBOs to separate index
>     spaces
>   i965: Adapt SSBOs to work with their own separate index space
> 
>  src/glsl/link_uniform_initializers.cpp           |   4 +-
>  src/glsl/link_uniforms.cpp                       |  22 ++---
>  src/glsl/linker.cpp                              | 105 ++++++++++++++++++-----
>  src/glsl/lower_ubo_reference.cpp                 |  22 +++--
>  src/glsl/nir/glsl_to_nir.cpp                     |   2 +-
>  src/glsl/standalone_scaffolding.cpp              |  11 ++-
>  src/mesa/drivers/dri/i965/brw_context.h          |   4 +-
>  src/mesa/drivers/dri/i965/brw_fs_nir.cpp         |  24 +++---
>  src/mesa/drivers/dri/i965/brw_shader.cpp         |   7 +-
>  src/mesa/drivers/dri/i965/brw_vec4_nir.cpp       |  24 +++---
>  src/mesa/drivers/dri/i965/brw_wm_surface_state.c |  79 +++++++++--------
>  src/mesa/main/mtypes.h                           |  53 +++++++++++-
>  src/mesa/main/shader_query.cpp                   |   4 +-
>  src/mesa/main/shaderapi.c                        |   4 +-
>  src/mesa/main/shaderobj.c                        |   4 +-
>  src/mesa/main/uniforms.c                         |  12 +--
>  src/mesa/state_tracker/st_atom_constbuf.c        |   4 +-
>  src/mesa/state_tracker/st_glsl_to_tgsi.cpp       |   4 +-
>  18 files changed, 257 insertions(+), 132 deletions(-)
> 
> -- 
> 1.9.1
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list