mesa/src/compiler
Kenneth Graunke 9b577f2a88 driconf, glsl: Add a vs_position_always_invariant option
Many applications use multi-pass rendering and require their vertex
shader position to be computed the same way each time.  Optimizations
may consider, say, fusing a multiply-add based on global usage of an
expression in a shader.  But a second shader with the same expression
may have different code, causing that optimization to make the other
choice the second time around.

The correct solution is for applications to mark their VS outputs
'invariant', indicating they need multiple shaders to compute that
output in the same manner.  However, most applications fail to do so.

So, we add a new driconf option - vs_position_always_invariant - which
forces the gl_Position output in vertex shaders to be marked invariant.

Fixes: 7025dbe794 ("nir: Skip emitting no-op movs from the builder.")
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
2019-11-27 18:48:04 +00:00
..
glsl driconf, glsl: Add a vs_position_always_invariant option 2019-11-27 18:48:04 +00:00
nir nir: Make algebraic backtrack and reprocess after a replacement. 2019-11-26 10:13:46 -08:00
spirv vtn/opencl: add clz support 2019-11-22 04:37:41 +10:00
Android.glsl.gen.mk mesa: android: Remove unnecessary dependency tracking rules 2019-05-06 11:29:25 +00:00
Android.glsl.mk android: glsl: build shader cache sources 2017-02-20 16:30:37 +00:00
Android.mk Android: glsl: add rules to generate ir_expression*.h header files 2016-09-06 15:58:55 +01:00
Android.nir.gen.mk nir: Add missing dependency in Android.nir.gen.mk 2019-08-19 09:53:18 +03:00
Android.nir.mk android: fix libmesa_nir build 2017-07-21 08:47:56 +03:00
builtin_type_macros.h glsl_types: vec8/vec16 support 2018-03-25 10:42:54 -04:00
glsl_types.cpp glsl: encode struct/interface types better 2019-11-01 19:19:03 -04:00
glsl_types.h Move blob from compiler/ to util/ 2019-09-19 19:56:22 +00:00
Makefile.sources nir: Add a scheduler pass to reduce maximum register pressure. 2019-11-25 21:12:21 +00:00
meson.build meson: drop unused inc_nir 2019-10-07 21:49:40 +01:00
nir_types.cpp nir: define 8-byte size and alignment for bindless variables 2019-09-23 15:34:22 -04:00
nir_types.h compiler: Add glsl_contains_opaque() helper 2019-09-10 14:36:46 -07:00
SConscript spirv: Fix building with SCons 2018-03-30 14:33:03 -06:00
SConscript.glsl compiler: move build definition of pp_standalone_scaffolding.c 2019-11-21 16:07:08 +11:00
SConscript.nir nir: mako all the intrinsics 2018-03-27 08:36:37 -04:00
SConscript.spirv spirv: Fix building with SCons 2018-03-30 14:33:03 -06:00
shader_enums.c freedreno/ir3: Add ir3 intrinsics for tessellation 2019-11-07 16:36:50 -08:00
shader_enums.h freedreno/ir3: Add ir3 intrinsics for tessellation 2019-11-07 16:36:50 -08:00
shader_info.h compiler: pack shader_info from 160 bytes to 96 bytes 2019-11-08 16:54:08 -05:00