|
|
|
|
|
|
|
|
glsl_type_size_align_func size_align) |
|
|
glsl_type_size_align_func size_align) |
|
|
{ |
|
|
{ |
|
|
unsigned elem_size, elem_align; |
|
|
unsigned elem_size, elem_align; |
|
|
glsl_get_natural_size_align_bytes(elem_type, &elem_size, &elem_align); |
|
|
|
|
|
|
|
|
size_align(elem_type, &elem_size, &elem_align); |
|
|
return ALIGN_POT(elem_size, elem_align); |
|
|
return ALIGN_POT(elem_size, elem_align); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
unsigned offset = 0; |
|
|
unsigned offset = 0; |
|
|
for (unsigned i = 0; i <= field_idx; i++) { |
|
|
for (unsigned i = 0; i <= field_idx; i++) { |
|
|
unsigned elem_size, elem_align; |
|
|
unsigned elem_size, elem_align; |
|
|
glsl_get_natural_size_align_bytes(glsl_get_struct_field(struct_type, i), |
|
|
|
|
|
&elem_size, &elem_align); |
|
|
|
|
|
|
|
|
size_align(glsl_get_struct_field(struct_type, i), &elem_size, &elem_align); |
|
|
offset = ALIGN_POT(offset, elem_align); |
|
|
offset = ALIGN_POT(offset, elem_align); |
|
|
if (i < field_idx) |
|
|
if (i < field_idx) |
|
|
offset += elem_size; |
|
|
offset += elem_size; |