[Mesa-dev] [PATCH v2 00/64] ARB_bindless_texture for RadeonSI

Samuel Pitoiset samuel.pitoiset at gmail.com
Wed Jun 7 15:17:16 UTC 2017



On 06/07/2017 05:14 PM, Marek Olšák wrote:
> For patch 37:
> 
> Reviewed-by: Marek Olšák <marek.olsak at amd.com>
> 
> Patches 25 - 31 and 37 (gallium interface etc.) can land now as far as
> I'm concerned.
> 
> ---
> 
> I sent comments on patches 49, 51, 52 (two comments), 53, 56 (just the
> small cleanup), 58, 60.
> 
> With my comments applied, patches 49-51, 53-57, 59-64 are:
> 
> Reviewed-by: Marek Olšák <marek.olsak at amd.com>
> 
> ---
> 
> I'd like to see v3 for patches 52 and 58.

Thanks a lot for your reviews.

As expected, I will send out a v3 once it's ready.

Samuel.

> 
> Thanks,
> Marek
> 
> 
> 
> On Sun, Jun 4, 2017 at 10:26 PM, Marek Olšák <maraeo at gmail.com> wrote:
>> For patches 25 - 31:
>>
>> Reviewed-by: Marek Olšák <marek.olsak at amd.com>
>>
>> Marek
>>
>> On Tue, May 30, 2017 at 10:35 PM, Samuel Pitoiset
>> <samuel.pitoiset at gmail.com> wrote:
>>> Hi,
>>>
>>> This is the v2 of ARB_bindless_texture for RadeonSI.
>>>
>>> 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
>>>
>>> I also have a pending series which is bindless-related:
>>> https://lists.freedesktop.org/archives/mesa-dev/2017-May/156874.html
>>>
>>> Initial cover letter can be found here:
>>> https://lists.freedesktop.org/archives/mesa-dev/2017-May/156260.html
>>>
>>> Note that patch 3 still has to be improved a bit, I'm working on it
>>> but in the meantime, people might want to review the other patches.
>>>
>>> Please review!
>>> Thanks.
>>>
>>> Samuel Pitoiset (64):
>>>    mapi: add GL_ARB_bindless_texture entry points
>>>    mesa/util: add MESA_ARCH_{X86,X86_64} macros
>>>    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
>>>    gallium/util: add new util_dynarray_{shrink,delete} helpers
>>>    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 si_update_check_render_feedback() 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: isolate real framebuffer changes from the decompression
>>>      passes
>>>    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_dynarray.h            |  20 +
>>>   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             | 151 +++-
>>>   src/gallium/drivers/radeonsi/si_compute.c          |   2 +
>>>   src/gallium/drivers/radeonsi/si_compute.h          |  14 +
>>>   src/gallium/drivers/radeonsi/si_descriptors.c      | 833 +++++++++++++++--
>>>   src/gallium/drivers/radeonsi/si_hw_context.c       |   1 +
>>>   src/gallium/drivers/radeonsi/si_pipe.c             |  30 +
>>>   src/gallium/drivers/radeonsi/si_pipe.h             |  62 ++
>>>   src/gallium/drivers/radeonsi/si_shader.h           |  12 +
>>>   src/gallium/drivers/radeonsi/si_shader_tgsi_mem.c  |  43 +-
>>>   src/gallium/drivers/radeonsi/si_state.c            |  10 +-
>>>   src/gallium/drivers/radeonsi/si_state.h            |   9 +
>>>   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/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                    | 998 +++++++++++++++++++++
>>>   src/mesa/main/texturebindless.h                    | 100 +++
>>>   src/mesa/main/uniform_query.cpp                    | 215 ++++-
>>>   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         | 132 ++-
>>>   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 +
>>>   94 files changed, 4228 insertions(+), 257 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
>>>
>>> --
>>> 2.13.0
>>>
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list