glsl: apply compile-time rules for the offset layout qualifier
authorTimothy Arceri <timothy.arceri@collabora.com>
Wed, 30 Dec 2015 00:09:22 +0000 (11:09 +1100)
committerTimothy Arceri <timothy.arceri@collabora.com>
Sat, 5 Mar 2016 08:38:30 +0000 (19:38 +1100)
commit8abed7f185329250adf9f8c90a131797feda83b6
tree383f70f4bd85ac09a5c65abef4d9fa632ed282a6
parent6f45484ac7142d9ccda6ee009a0902147f62c75b
glsl: apply compile-time rules for the offset layout qualifier

This implements the rules for the offset qualifier on block members.

From Section 4.4.5 (Uniform and Shader Storage Block Layout Qualifiers)
of the GLSL 4.50 spec:

   "The offset qualifier can only be used on block members of blocks
   declared with std140 or std430 layouts."

   ...

   "It is a compile-time error to specify an offset that is smaller than
   the offset of the previous member in the block or that lies within the
   previous member of the block."

   ...

   "The specified offset must be a multiple of the base alignment of the
   type of the block member it qualifies, or a compile-time error results."

Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
src/compiler/glsl/ast_to_hir.cpp