/* Offset can only be used with std430 and std140 layouts an initial
* value of 0 is used for error detection.
*/
- unsigned align = 0;
+ unsigned base_alignment = 0;
unsigned size = 0;
if (layout) {
bool row_major;
}
if(layout->flags.q.std140) {
- align = field_type->std140_base_alignment(row_major);
+ base_alignment = field_type->std140_base_alignment(row_major);
size = field_type->std140_size(row_major);
} else if (layout->flags.q.std430) {
- align = field_type->std430_base_alignment(row_major);
+ base_alignment = field_type->std430_base_alignment(row_major);
size = field_type->std430_size(row_major);
}
}
unsigned qual_offset;
if (process_qualifier_constant(state, &loc, "offset",
qual->offset, &qual_offset)) {
- if (align != 0 && size != 0) {
+ if (base_alignment != 0 && size != 0) {
if (next_offset > qual_offset)
_mesa_glsl_error(&loc, state, "layout qualifier "
"offset overlaps previous member");
- if (qual_offset % align) {
+ if (qual_offset % base_alignment) {
_mesa_glsl_error(&loc, state, "layout qualifier offset "
"must be a multiple of the base "
"alignment of %s", field_type->name);
if (qual->flags.q.explicit_align || expl_align != 0) {
unsigned offset = fields[i].offset != -1 ? fields[i].offset :
next_offset;
- if (align == 0 || size == 0) {
+ if (base_alignment == 0 || size == 0) {
_mesa_glsl_error(&loc, state, "align can only be used with "
"std430 and std140 layouts");
} else if (qual->flags.q.explicit_align) {
next_offset = fields[i].offset + size;
}
} else if (!qual->flags.q.explicit_offset) {
- if (align != 0 && size != 0)
- next_offset = glsl_align(next_offset, align) + size;
+ if (base_alignment != 0 && size != 0)
+ next_offset = glsl_align(next_offset, base_alignment) + size;
}
/* From the ARB_enhanced_layouts spec:
}
} else {
if (layout && layout->flags.q.explicit_xfb_offset) {
- unsigned align = field_type->is_64bit() ? 8 : 4;
- fields[i].offset = glsl_align(block_xfb_offset, align);
+ unsigned base_alignment = field_type->is_64bit() ? 8 : 4;
+ fields[i].offset = glsl_align(block_xfb_offset, base_alignment);
block_xfb_offset += 4 * field_type->component_slots();
}
}
}
const struct glsl_type *field_type = this->fields.structure[i].type;
- unsigned align = field_type->std140_base_alignment(field_row_major);
+ unsigned base_alignment = field_type->std140_base_alignment(field_row_major);
/* Ignore unsized arrays when calculating size */
if (field_type->is_unsized_array())
continue;
- size = glsl_align(size, align);
+ size = glsl_align(size, base_alignment);
size += field_type->std140_size(field_row_major);
- max_align = MAX2(align, max_align);
+ max_align = MAX2(base_alignment, max_align);
if (field_type->is_struct() && (i + 1 < this->length))
size = glsl_align(size, 16);
}
const struct glsl_type *field_type = this->fields.structure[i].type;
- unsigned align = field_type->std430_base_alignment(field_row_major);
- size = glsl_align(size, align);
+ unsigned base_alignment = field_type->std430_base_alignment(field_row_major);
+ size = glsl_align(size, base_alignment);
size += field_type->std430_size(field_row_major);
- max_align = MAX2(align, max_align);
+ max_align = MAX2(base_alignment, max_align);
}
size = glsl_align(size, max_align);
return size;