This little series prepares the backend compiler for invariant and precise by removing any potentially unsafe optimizations. The easiest implementation for invariant and precise seems to be the same: Don't change the semantics of invariant or precise values. This means that we need to track what values are invariant or precise and be very careful how we optimize them. In the backend, it's easier to just not do those optimizations than to try and plumb that information through accurately. Fortunately, NIR is doing a good enough job that this can be done with a minimum of shader-db damage.
Jason Ekstrand (9): i965/fs: Remove the RCP+RSQ peephole nir/algebraic: Add two more fsat optimizations i965/fs: Get rid of the sel.sat peephole i965/fs: Get rid of all remaining algebraic optimizations for floats i965/fs: Don't constant-fold RCP i965/vec4: Don't constant propagate saturated values i965/vec4: Don't allow type conversion in opt_vector_float i965/vec4: Handle saturated constants in opt_vector_float i965/vec4: Disable algebraic optimizations on floats src/compiler/nir/nir_opt_algebraic.py | 2 + src/mesa/drivers/dri/i965/brw_fs.cpp | 119 ++++----------------- .../drivers/dri/i965/brw_fs_copy_propagation.cpp | 15 --- src/mesa/drivers/dri/i965/brw_vec4.cpp | 49 ++++----- .../drivers/dri/i965/brw_vec4_copy_propagation.cpp | 3 + 5 files changed, 41 insertions(+), 147 deletions(-) -- 2.5.0.400.gff86faf _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev