Re: [Mesa-dev] [PATCH v2 0/9] anv, nir: Move large constants to a UBO

2018-07-02 Thread Jason Ekstrand
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

2018-07-02 Thread Kenneth Graunke
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

2018-07-02 Thread Iago Toral
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

2018-06-29 Thread Jason Ekstrand
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