glsl/nir: Add optimization pass for access flags
authorConnor Abbott <cwabbott0@gmail.com>
Tue, 4 Jun 2019 12:13:13 +0000 (14:13 +0200)
committerConnor Abbott <cwabbott0@gmail.com>
Wed, 19 Jun 2019 12:08:28 +0000 (14:08 +0200)
commitf2d0e48ddc74d01be1d3e259c5687ff37e4c8d69
tree548911a9333bc711b3e5e56e60fe556635a21d1d
parentc813c5776d0926527d9fcd44827811ccb7551154
glsl/nir: Add optimization pass for access flags

Right now, this just deduces when we can arbitrarily reorder SSBO and
image loads, matching the existing logic in radeonsi's TGSI->LLVM pass.
This approach can't handle some things that nir_opt_copy_prop_vars can,
but it can handle images, and with GCM it lets us hoist reads outside of
loops. We can also pass this information to LLVM which lets it do its
own optimizations on it.

This is GLSL only as I haven't tested it on Vulkan yet, and it would
probably need a few changes to work there.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
src/compiler/Makefile.sources
src/compiler/glsl/gl_nir.h
src/compiler/glsl/gl_nir_opt_access.c [new file with mode: 0644]
src/compiler/glsl/meson.build