Re: [Mesa-dev] [PATCH v2 0/9] anv, nir: Move large constants to a UBO
On Mon, Jul 2, 2018 at 11:26 AM, Kenneth Graunke wrote: > On Friday, June 29, 2018 5:13:48 PM PDT Jason Ekstrand wrote: > > This little series adds an optimization pass to NIR and wires up up in > anv > > that moves large constant variables to a UBO. This fixes a farily common > > case in some filter or ambient occlusion shaders where they put some sort > > of look-up table in the shader itself. This series takes Skyrim Special > > Edition running under DXVK from a slide show to a smooth and very > playable > > framerate on my SKL desktop. > > > > The first part of the series adds a concept of constant data that can be > > associated with a NIR shader and adds an optimization pass to move large > > constant variables into this constant data section. It's left up to the > > driver to figure out how to get this constant data into the shader. The > > last three patches wire things up in ANV to put this data into an > implicit > > UBO and enables the optimization. > > > > v2 (Jason Ekstrand): > > - Take anholt's feedback and make it more clear that the units on the > >number of constants is in bytes by calling it constant_data_size. > > - Break some of the deref to offset code out into helpers > > - Add new size/align helpers for types to ensure that we get alignments > >right when setting up constants. This hasn't usually been a problem > in > >the past because we align most things to a dword and 64-bit values > >aren't common. We should start being more careful. > > > > Jason Ekstrand (9): > > util/macros: Import ALIGN_POT from ralloc.c > > nir: Add a deref_instr_has_indirect helper > > nir/types: Add a natural size and alignment helper > > nir/deref: Add helpers for getting offsets > > nir: Add a concept of constant data associated with a shader > > nir: Add a large constants optimization pass > > anv: Add support for shader constant data to the pipeline cache > > anv: Add state setup support for shader constants > > anv,intel: Enable nir_opt_large_constants for Vulkan > > I had some minor commentary, but even without any changes, series is: > Reviewed-by: Kenneth Graunke > Thanks! ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH v2 0/9] anv, nir: Move large constants to a UBO
On Friday, June 29, 2018 5:13:48 PM PDT Jason Ekstrand wrote: > This little series adds an optimization pass to NIR and wires up up in anv > that moves large constant variables to a UBO. This fixes a farily common > case in some filter or ambient occlusion shaders where they put some sort > of look-up table in the shader itself. This series takes Skyrim Special > Edition running under DXVK from a slide show to a smooth and very playable > framerate on my SKL desktop. > > The first part of the series adds a concept of constant data that can be > associated with a NIR shader and adds an optimization pass to move large > constant variables into this constant data section. It's left up to the > driver to figure out how to get this constant data into the shader. The > last three patches wire things up in ANV to put this data into an implicit > UBO and enables the optimization. > > v2 (Jason Ekstrand): > - Take anholt's feedback and make it more clear that the units on the >number of constants is in bytes by calling it constant_data_size. > - Break some of the deref to offset code out into helpers > - Add new size/align helpers for types to ensure that we get alignments >right when setting up constants. This hasn't usually been a problem in >the past because we align most things to a dword and 64-bit values >aren't common. We should start being more careful. > > Jason Ekstrand (9): > util/macros: Import ALIGN_POT from ralloc.c > nir: Add a deref_instr_has_indirect helper > nir/types: Add a natural size and alignment helper > nir/deref: Add helpers for getting offsets > nir: Add a concept of constant data associated with a shader > nir: Add a large constants optimization pass > anv: Add support for shader constant data to the pipeline cache > anv: Add state setup support for shader constants > anv,intel: Enable nir_opt_large_constants for Vulkan I had some minor commentary, but even without any changes, series is: Reviewed-by: Kenneth Graunke signature.asc Description: This is a digitally signed message part. ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH v2 0/9] anv, nir: Move large constants to a UBO
For the series: Reviewed-by: Iago Toral Quiroga On Fri, 2018-06-29 at 17:13 -0700, Jason Ekstrand wrote: > This little series adds an optimization pass to NIR and wires up up > in anv > that moves large constant variables to a UBO. This fixes a farily > common > case in some filter or ambient occlusion shaders where they put some > sort > of look-up table in the shader itself. This series takes Skyrim > Special > Edition running under DXVK from a slide show to a smooth and very > playable > framerate on my SKL desktop. > > The first part of the series adds a concept of constant data that can > be > associated with a NIR shader and adds an optimization pass to move > large > constant variables into this constant data section. It's left up to > the > driver to figure out how to get this constant data into the > shader. The > last three patches wire things up in ANV to put this data into an > implicit > UBO and enables the optimization. > > v2 (Jason Ekstrand): > - Take anholt's feedback and make it more clear that the units on > the >number of constants is in bytes by calling it constant_data_size. > - Break some of the deref to offset code out into helpers > - Add new size/align helpers for types to ensure that we get > alignments >right when setting up constants. This hasn't usually been a > problem in >the past because we align most things to a dword and 64-bit values >aren't common. We should start being more careful. > > Jason Ekstrand (9): > util/macros: Import ALIGN_POT from ralloc.c > nir: Add a deref_instr_has_indirect helper > nir/types: Add a natural size and alignment helper > nir/deref: Add helpers for getting offsets > nir: Add a concept of constant data associated with a shader > nir: Add a large constants optimization pass > anv: Add support for shader constant data to the pipeline cache > anv: Add state setup support for shader constants > anv,intel: Enable nir_opt_large_constants for Vulkan > > src/compiler/Makefile.sources | 1 + > src/compiler/nir/meson.build | 1 + > src/compiler/nir/nir.h| 14 + > src/compiler/nir/nir_clone.c | 6 + > src/compiler/nir/nir_deref.c | 109 +++ > src/compiler/nir/nir_deref.h | 6 + > src/compiler/nir/nir_intrinsics.py| 2 + > src/compiler/nir/nir_opt_large_constants.c| 301 > ++ > src/compiler/nir/nir_serialize.c | 12 + > src/compiler/nir/nir_sweep.c | 2 + > src/compiler/nir_types.cpp| 56 > src/compiler/nir_types.h | 6 + > src/intel/compiler/brw_compiler.h | 6 + > src/intel/compiler/brw_nir.c | 7 + > src/intel/vulkan/anv_blorp.c | 1 + > src/intel/vulkan/anv_device.c | 1 + > .../vulkan/anv_nir_apply_pipeline_layout.c| 47 +++ > src/intel/vulkan/anv_pipeline.c | 16 + > src/intel/vulkan/anv_pipeline_cache.c | 27 ++ > src/intel/vulkan/anv_private.h| 7 + > src/intel/vulkan/genX_cmd_buffer.c| 72 +++-- > src/util/macros.h | 3 + > src/util/ralloc.c | 2 - > 23 files changed, 684 insertions(+), 21 deletions(-) > create mode 100644 src/compiler/nir/nir_opt_large_constants.c > ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev