mesa/src/compiler
Ilia Mirkin 4d24a7cb97 glsl: fix derived cs variables
There are two issues with the current implementation. First, it relies
on the layout(local_size_*) happening in the same shader as the main
function, and secondly it doesn't work for variable group sizes.

In both cases, the simplest fix is to move the setup of these derived
values to a later time, similar to how the gl_VertexID workarounds are
done. There already exist system values defined for both of the derived
values, so we use them unconditionally, and lower them after linking is
performed.

While we're at it, we move to using gl_LocalGroupSizeARB instead of
gl_WorkGroupSize for variable group sizes.

Also the dead code elimination avoidance can be removed, since there
can be situations where gl_LocalGroupSizeARB is needed but has not been
inserted for the shader with main function. As a result, the lowering
code has to insert its own copies of the system values if needed.

Reported-by: Stephane Chevigny <stephane.chevigny@polymtl.ca>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103393
Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
2017-10-23 08:34:56 -04:00
..
glsl glsl: fix derived cs variables 2017-10-23 08:34:56 -04:00
nir nir: Print the components referenced for split or packed shader in/outs. 2017-10-20 16:26:46 -07:00
spirv nir: Get rid of nir_shader::stage 2017-10-20 12:49:17 -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: 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-23 08:34:56 -04: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