mesa/src/compiler
Nicolai Hähnle 77cba992c3 glsl: allow any l-value of an input variable as interpolant in interpolateAt*
The intended rule has been clarified in GLSL 4.60, Section 8.13.2
(Interpolation Functions):

   "For all of the interpolation functions, interpolant must be an l-value
    from an in declaration; this can include a variable, a block or
    structure member, an array element, or some combination of these.
    Component selection operators (e.g., .xy) may be used when specifying
    interpolant."

For members of interface blocks, var->data.must_be_shader_input must be
determined on-the-fly after lowering interface blocks, since we don't want
to disable varying packing for an entire block just because one input in it
is used in interpolateAt*.

v2: keep setting must_be_shader_input in ast_function (Ian)
v3: follow the relaxed rule of GLSL 4.60
v4: only apply the relaxed rules to desktop GL
    (the ES WG decided that the relaxed rules may apply in a future version
     but not retroactively; see also
     dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.negative.*)

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101378
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> (v1)
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
(cherry picked from commit 4f42450b86)
2017-11-29 19:42:24 +00:00
..
glsl glsl: allow any l-value of an input variable as interpolant in interpolateAt* 2017-11-29 19:42:24 +00:00
nir nir/spirv: tg4 requires a sampler 2017-11-17 19:24:29 +00:00
spirv nir/spirv: tg4 requires a sampler 2017-11-17 19:24:29 +00: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: Use intptr_t instead of ssize_t 2017-10-13 15:02:34 -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 st/mesa: get rid of st_glsl_types 2017-07-31 14:55:30 +02:00
glsl_types.h glsl: add get_internal_ifc_packing() type helper 2017-08-22 11:29:27 +10: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: fix derived cs variables 2017-10-27 18:50:02 +01:00
meson.build compiler: Move blob up a level 2017-10-12 21:47:06 -07:00
nir_types.cpp nir: add glsl_channel_type() helper 2017-10-16 09:06:53 +11: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 compiler: Move gl_program::TexelFetchSamplers to shader_info. 2017-10-12 17:22:39 -07:00