mesa/src/compiler
Kenneth Graunke 688d695868 glsl: Make #pragma STDGL invariant(all) only modify outputs.
According to the GLSL ES 3.20, GLSL 4.50, and GLSL 1.20 specs:

   "To force all output variables to be invariant, use the pragma

       #pragma STDGL invariant(all)

    before all declarations in a shader."

Notably, this is only supposed to affect output variables.  Furthermore,

   "Only variables output from a shader can be candidates for invariance."

It looks like this has been wrong since we first supported the pragma in
2011 (commit 86b4398cd1).

Fixes dEQP-GLES2.functional.shaders.preprocessor.pragmas.pragma_fragment.

v2: Now that all cases are identical (other than compute shaders, which
    have no output variables anyway), we can drop the switch statement
    entirely.  We also don't need the current_function == NULL check;
    this was a hold over from when we had a single var_mode_out for both
    function parameters and shader varyings, in the bad old days.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
2017-11-08 23:11:48 -08:00
..
glsl glsl: Make #pragma STDGL invariant(all) only modify outputs. 2017-11-08 23:11:48 -08:00
nir nir: Don't print swizzles when there are more than 4 components 2017-11-08 13:22:26 -08:00
spirv spirv: Claim support for the simple memory model 2017-10-26 15:24:38 -07:00
.gitignore nir/spirv: Remove a duplicate spirv2nir from .gitignore 2016-10-04 07:43:15 -07:00
Android.glsl.gen.mk Android: clean-up trailing '\' in make variables 2017-03-22 17:52:06 +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 Android: fix spirv_info.c generation 2017-07-21 08:48:45 +03:00
Android.nir.mk android: fix libmesa_nir build 2017-07-21 08:47:56 +03:00
blob.c blob: Don't set overrun if reading 0 bytes at end of data 2017-10-31 23:36:54 -07:00
blob.h blob: Use intptr_t instead of ssize_t 2017-10-13 15:02:34 -07:00
builtin_type_macros.h glsl: Add basic ARB_gpu_shader_int64 types 2017-01-20 15:41:23 -08:00
glsl_types.cpp compiler/types: Support [de]serializing void types 2017-10-25 12:36:21 -07:00
glsl_types.h glsl: Add field initializers for glsl_struct_field default constructor 2017-10-25 12:36:21 -07:00
Makefile.am compiler: Add $(WNO_OVERRIDE_INIT) to AM_CFLAGS 2017-08-29 15:20:57 -07:00
Makefile.glsl.am glsl: automake: export abs_builddir for the tests 2017-03-28 15:31:22 +01:00
Makefile.nir.am spirv: Generate spirv_info.c 2017-07-18 09:43:12 -07:00
Makefile.sources glsl: Combine nop-swizzle optimization with swizzle-swizzle optimization 2017-11-08 18:37:29 -08:00
meson.build compiler: Move blob up a level 2017-10-12 21:47:06 -07:00
nir_types.cpp compiler/nir_types: Handle vectors in glsl_get_array_element 2017-11-07 10:41:24 -08:00
nir_types.h nir: add glsl_channel_type() helper 2017-10-16 09:06:53 +11:00
SConscript glsl: Generate ir_expression_operation.h from Python 2016-08-30 16:28:00 -07:00
SConscript.glsl mesa: Remove prog_hash_table.c 2016-09-12 10:48:35 +10:00
SConscript.nir glsl: Generate ir_expression_operation.h from Python 2016-08-30 16:28:00 -07:00
shader_enums.c compiler: Add a system value and varying for ViewIndex 2017-05-03 11:25:46 -07:00
shader_enums.h nir: Move vc4's alpha test lowering to core NIR. 2017-10-10 11:42:04 -07:00
shader_info.h nir: Make nir_gather_info collect a uses_fddx_fddy flag. 2017-10-29 20:52:20 -07:00