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
[Mesa-dev] [PATCH v2 0/9] anv,nir: Move large constants to a UBO
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 -- 2.17.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev