-
When creating explicit type, the alignment information is lost, thus forcing explicit type users to recalculate the alignment using the same size_align() function. Let's add a new field to cache this information. Only structs, matrices, and vectors have and explicit alignment. Arrays alignment is implicitly set to its element alignment and matrices are required to have an alignment that matches that of its vector columns. the concept of alignment simply doesn't apply to other types. We make the strategic choice to not allow explicit alignments on scalars. This is for a couple of reasons: 1. There are no cases today where we use explicit types where we want any other alignment for scalars than natural alignment. 2. Vectors don't have a component alignment that's separate from the explicit_alignment so it's impossible to get an explicitly aligned scalar type which is the component of the explicitly aligned vector type. This choice may cause problems if we ever want to use explicitly laid out types for things like varyings where we sometimes want vec4 alignment of scalars. We can deal with that when the time comes. Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Part-of: <mesa/mesa!6472>
525d74cb