[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