Skip to content
  • Faith Ekstrand's avatar
    nir/glsl: Add an explicit_alignment field to glsl_type · a0b82c24
    Faith Ekstrand authored
    
    
    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: default avatarBoris Brezillon <boris.brezillon@collabora.com>
    Part-of: <!6472>
    a0b82c24