mesa/src/compiler
Andrii Simiklit b32bb888c7 glsl: disallow incompatible matrices multiplication
glsl 4.4 spec section '5.9 expressions':
"The operator is multiply (*), where both operands are matrices or one operand is a vector and the
 other a matrix. A right vector operand is treated as a column vector and a left vector operand as a
 row vector. In all these cases, it is required that the number of columns of the left operand is equal
 to the number of rows of the right operand. Then, the multiply (*) operation does a linear
 algebraic multiply, yielding an object that has the same number of rows as the left operand and the
 same number of columns as the right operand. Section 5.10 “Vector and Matrix Operations”
 explains in more detail how vectors and matrices are operated on."

This fix disallows a multiplication of incompatible matrices like:
mat4x3(..) * mat4x3(..)
mat4x2(..) * mat4x2(..)
mat3x2(..) * mat3x2(..)
....

CC: <mesa-stable@lists.freedesktop.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111664
Signed-off-by: Andrii Simiklit <andrii.simiklit@globallogic.com>
2019-09-27 21:42:09 +00:00
..
glsl glsl: turn runtime asserts of compile-time value into compile-time asserts 2019-09-25 21:14:52 +00:00
nir nir/range-analysis: Use types to provide better ranges from bcsel and mov 2019-09-25 15:37:05 -07:00
spirv spirv: Add missing break for capability handling 2019-09-18 15:49:14 -07: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: disallow incompatible matrices multiplication 2019-09-27 21:42:09 +00:00
glsl_types.h Move blob from compiler/ to util/ 2019-09-19 19:56:22 +00:00
Makefile.sources Move blob from compiler/ to util/ 2019-09-19 19:56:22 +00:00
meson.build Move blob from compiler/ to util/ 2019-09-19 19:56:22 +00: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 scons: Generate float64_glsl.h for glsl_to_nir fp64 lowering 2019-03-02 14:33:44 -08: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 glsl: Optionally declare gl_PointCoord as a system value 2019-07-18 13:20:39 +00:00
shader_enums.h shader_enums: Move MAX_DRAW_BUFFERS to this file. 2019-09-27 13:34:28 -07:00
shader_info.h spirv/nir: keep track of SPV_KHR_float_controls execution modes 2019-09-17 23:39:18 +03:00