Skip to content
  • Andrii Simiklit's avatar
    glsl: disallow incompatible matrices multiplication · 70ef5d63
    Andrii Simiklit authored and Juan A. Suárez's avatar Juan A. Suárez committed
    
    
    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: default avatarEric Anholt <eric@anholt.net>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111664
    
    
    Signed-off-by: default avatarAndrii Simiklit <andrii.simiklit@globallogic.com>
    (cherry picked from commit b32bb888)
    70ef5d63