[Mesa-dev] [PATCH v3 00/63] ARB_bindless_texture for RadeonSI

Samuel Pitoiset samuel.pitoiset at gmail.com
Tue Jun 13 17:22:17 UTC 2017


Patches which need Rb's are 4-5, 56-57, 58.

Thanks.

On 06/09/2017 03:34 PM, Samuel Pitoiset wrote:
> Hi,
> 
> Updated version of this patchset, hopefully it will be the last revision.
> 
> Major changes sinve v2:
>   - fix a refcount issue in mesa core for handles
>   - replace u_vector by util_dynarray
>   - fix deleted_key
>   - use RADEON_USAGE_READWRITE for bindless descriptors
> 
> Major changes since v1:
>   - fix use of 64-bit handles on 32-bit systems (ie. void *)
>   - use u_vector instead of hash_table for texture object handles
>   - fix a 64-bit vs 32-bit mismatch when setting bindless sampler uniforms
>   - remove the 'texture' parameter from create_texture_handle (gallium)
>   - add missing gallium doc
>   - fix a refcount issue with sampler view objects
>   - use u_dynarray in radeonsi
> 
> Please review,
> Thanks!
> 
> Samuel Pitoiset (63):
>    mapi: add GL_ARB_bindless_texture entry points
>    mesa/util: add MESA_ARCH_{X86,X86_64} macros
>    mesa/util: add new util_dynarray_delete_unordered helper
>    mesa: move some hash declarations to hash.h
>    mesa: implement ARB_bindless_texture
>    mesa: add support for unsigned 64-bit vertex attributes
>    mesa: add support for glUniformHandleui64*ARB()
>    mesa: refuse to update sampler parameters when a handle is allocated
>    mesa: refuse to update tex parameters when a handle is allocated
>    mesa: refuse to change textures when a handle is allocated
>    mesa: refuse to change tex buffers when a handle is allocated
>    mesa: keep track of the current variable in add_uniform_to_shader
>    mesa: store bindless samplers as PROGRAM_UNIFORM
>    mesa: add infrastructure for bindless samplers/images bound to units
>    glsl: process uniform samplers declared bindless
>    glsl: process uniform images declared bindless
>    glsl: pass the ir_variable object to set_opaque_binding()
>    glsl: set the explicit binding value for bindless samplers/images
>    glsl: add ir_variable::contains_bindless()
>    mesa: add update_single_shader_texture_used() helper
>    mesa: add update_single_program_texture_state() helper
>    mesa: update textures for bindless samplers bound to texture units
>    mesa: pass gl_program to _mesa_associate_uniform_storage()
>    mesa: associate uniform storage to bindless samplers/images
>    mesa: handle bindless uniforms bound to texture/image units
>    mesa: fix setting uniform variables for bindless samplers/images
>    gallium: add PIPE_CAP_BINDLESS_TEXTURE
>    gallium: add ARB_bindless_texture interface
>    ddebug: add ARB_bindless_texture support
>    trace: add ARB_bindless_texture support
>    tc: add ARB_bindless_texture support
>    tgsi/ureg: accept TGSI_FILE_{CONSTANT,INPUT} for dst registers
>    st/glsl_to_tgsi: add support for bindless samplers
>    st/glsl_to_tgsi: add support for bindless images
>    st/glsl_to_tgsi: add support for bindless pack/unpack operations
>    st/glsl_to_tgsi: teach the DCE pass about bindless samplers/images
>    st/glsl_to_tgsi: teach rename_temp_registers() about bindless samplers
>    tgsi/scan: record bindless samplers/images usage
>    st/mesa: implement ARB_bindless_texture
>    st/mesa: make update_single_texture() non-static
>    st/mesa: make convert_sampler_from_unit() non-static
>    st/mesa: add st_convert_image_from_unit() helper
>    st/mesa: add st_create_{texture,image}_handle_from_unit() helper
>    st/mesa: add infrastructure for storing bound texture/image handles
>    st/mesa: make bindless samplers/images bound to units resident
>    st/mesa: disable per-context seamless cubemap when using texture
>      handles
>    st/mesa: enable ARB_bindless_texture
>    radeonsi: add si_init_descriptor_list() helper
>    radeonsi: add si_set_sampler_view_desc() helper
>    radeonsi: add si_set_shader_image_desc() helper
>    radeonsi: add a slab allocator for bindless descriptors
>    radeonsi: implement ARB_bindless_texture
>    radeonsi: add all resident buffers to the current CS
>    radeonsi: only add descriptors in presence of resident handles
>    radeonsi: decompress DCC for resident textures/images
>    radeonsi: decompress resident textures/images before graphics/compute
>    radeonsi: track use of bindless samplers/images from tgsi_shader_info
>    radeonsi: only decompress resident textures/images when used
>    radeonsi: upload new descriptors when resident buffers are invalidated
>    radeonsi: invalidate buffers which are made resident if needed
>    radeonsi: add support for loading bindless samplers
>    radeonsi: add support for loading bindless images
>    radeonsi: enable ARB_bindless_texture
> 
>   docs/features.txt                                  |    2 +-
>   docs/relnotes/17.2.0.html                          |    1 +
>   src/compiler/glsl/ir.h                             |   11 +
>   src/compiler/glsl/ir_uniform.h                     |    6 +
>   src/compiler/glsl/link_uniform_initializers.cpp    |   42 +-
>   src/compiler/glsl/link_uniforms.cpp                |  156 ++-
>   src/compiler/glsl/shader_cache.cpp                 |   45 +
>   src/gallium/auxiliary/tgsi/tgsi_scan.c             |   39 +
>   src/gallium/auxiliary/tgsi/tgsi_scan.h             |   10 +
>   src/gallium/auxiliary/tgsi/tgsi_ureg.c             |    2 -
>   src/gallium/auxiliary/util/u_threaded_context.c    |  128 +++
>   src/gallium/auxiliary/util/u_threaded_context.h    |    2 +-
>   .../auxiliary/util/u_threaded_context_calls.h      |    4 +
>   src/gallium/docs/source/context.rst                |   20 +
>   src/gallium/docs/source/screen.rst                 |    2 +
>   src/gallium/drivers/ddebug/dd_context.c            |   60 ++
>   src/gallium/drivers/etnaviv/etnaviv_screen.c       |    1 +
>   src/gallium/drivers/freedreno/freedreno_screen.c   |    1 +
>   src/gallium/drivers/i915/i915_screen.c             |    1 +
>   src/gallium/drivers/llvmpipe/lp_screen.c           |    1 +
>   src/gallium/drivers/nouveau/nv30/nv30_screen.c     |    1 +
>   src/gallium/drivers/nouveau/nv50/nv50_screen.c     |    1 +
>   src/gallium/drivers/nouveau/nvc0/nvc0_screen.c     |    1 +
>   src/gallium/drivers/r300/r300_screen.c             |    1 +
>   src/gallium/drivers/r600/r600_pipe.c               |    1 +
>   src/gallium/drivers/radeon/r600_pipe_common.h      |    4 +
>   src/gallium/drivers/radeonsi/si_blit.c             |  133 +++
>   src/gallium/drivers/radeonsi/si_compute.c          |    2 +
>   src/gallium/drivers/radeonsi/si_compute.h          |   14 +
>   src/gallium/drivers/radeonsi/si_descriptors.c      |  830 ++++++++++++++--
>   src/gallium/drivers/radeonsi/si_hw_context.c       |    1 +
>   src/gallium/drivers/radeonsi/si_pipe.c             |   30 +
>   src/gallium/drivers/radeonsi/si_pipe.h             |   57 ++
>   src/gallium/drivers/radeonsi/si_shader.h           |   12 +
>   src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c  |   43 +-
>   src/gallium/drivers/radeonsi/si_state.h            |    9 +
>   src/gallium/drivers/radeonsi/si_state_shaders.c    |   31 +-
>   src/gallium/drivers/softpipe/sp_screen.c           |    1 +
>   src/gallium/drivers/svga/svga_screen.c             |    1 +
>   src/gallium/drivers/swr/swr_screen.cpp             |    1 +
>   src/gallium/drivers/trace/tr_context.c             |  112 +++
>   src/gallium/drivers/vc4/vc4_screen.c               |    1 +
>   src/gallium/drivers/virgl/virgl_screen.c           |    1 +
>   src/gallium/include/pipe/p_context.h               |   59 ++
>   src/gallium/include/pipe/p_defines.h               |    1 +
>   src/mapi/glapi/gen/ARB_bindless_texture.xml        |  100 ++
>   src/mapi/glapi/gen/Makefile.am                     |    1 +
>   src/mapi/glapi/gen/apiexec.py                      |    3 +
>   src/mapi/glapi/gen/gl_API.xml                      |    4 +-
>   src/mapi/glapi/gen/gl_genexec.py                   |    1 +
>   src/mesa/Makefile.sources                          |    2 +
>   src/mesa/main/api_loopback.c                       |   18 +
>   src/mesa/main/api_loopback.h                       |    6 +
>   src/mesa/main/bufferobj.c                          |    4 +-
>   src/mesa/main/context.c                            |    3 +
>   src/mesa/main/dd.h                                 |   19 +
>   src/mesa/main/hash.c                               |   56 --
>   src/mesa/main/hash.h                               |   56 ++
>   src/mesa/main/mtypes.h                             |   90 ++
>   src/mesa/main/samplerobj.c                         |   39 +-
>   src/mesa/main/shared.c                             |    6 +
>   src/mesa/main/tests/dispatch_sanity.cpp            |   18 +
>   src/mesa/main/teximage.c                           |   25 +-
>   src/mesa/main/texobj.c                             |   13 +
>   src/mesa/main/texparam.c                           |   38 +
>   src/mesa/main/texstate.c                           |   52 +-
>   src/mesa/main/texturebindless.c                    | 1014 ++++++++++++++++++++
>   src/mesa/main/texturebindless.h                    |  100 ++
>   src/mesa/main/uniform_query.cpp                    |  211 +++-
>   src/mesa/main/uniforms.c                           |  119 ++-
>   src/mesa/main/uniforms.h                           |   16 +
>   src/mesa/main/varray.c                             |   23 +
>   src/mesa/main/varray.h                             |    3 +
>   src/mesa/main/vtxfmt.c                             |    4 +
>   src/mesa/program/ir_to_mesa.cpp                    |   36 +-
>   src/mesa/program/ir_to_mesa.h                      |    4 +-
>   src/mesa/program/program.c                         |    8 +
>   src/mesa/state_tracker/st_atom_constbuf.c          |    6 +
>   src/mesa/state_tracker/st_atom_image.c             |   33 +-
>   src/mesa/state_tracker/st_atom_sampler.c           |   23 +-
>   src/mesa/state_tracker/st_atom_texture.c           |   15 +-
>   src/mesa/state_tracker/st_cb_texture.c             |   84 ++
>   src/mesa/state_tracker/st_context.c                |    2 +
>   src/mesa/state_tracker/st_context.h                |   11 +
>   src/mesa/state_tracker/st_extensions.c             |    1 +
>   src/mesa/state_tracker/st_glsl_to_nir.cpp          |    3 +-
>   src/mesa/state_tracker/st_glsl_to_tgsi.cpp         |  157 ++-
>   src/mesa/state_tracker/st_shader_cache.c           |    3 +-
>   src/mesa/state_tracker/st_texture.c                |  212 ++++
>   src/mesa/state_tracker/st_texture.h                |   28 +
>   src/mesa/vbo/vbo_attrib_tmp.h                      |   28 +
>   src/mesa/vbo/vbo_context.h                         |    2 +
>   src/mesa/vbo/vbo_exec_api.c                        |   15 +-
>   src/mesa/vbo/vbo_save_api.c                        |    3 +
>   src/util/macros.h                                  |    9 +
>   src/util/u_dynarray.h                              |   14 +
>   96 files changed, 4314 insertions(+), 309 deletions(-)
>   create mode 100644 src/mapi/glapi/gen/ARB_bindless_texture.xml
>   create mode 100644 src/mesa/main/texturebindless.c
>   create mode 100644 src/mesa/main/texturebindless.h
> 


More information about the mesa-dev mailing list