mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 19:40:10 +01:00
glsl: Do not add extra padding to structures
This code was attemping to align the base of the structure to the required alignment of the structure. However, it had two problems: 1. It was aligning the target structure member, not the base of the structure. 2. It was calculating the alignment based on the members previous to the target member instead of all the members of the structure. Fixes gles3conform failures in: ES3-CTS.shaders.uniform_block.random.nested_structs.6 ES3-CTS.shaders.uniform_block.random.nested_structs_arrays_instance_arrays.2 ES3-CTS.shaders.uniform_block.random.nested_structs_arrays_instance_arrays.6 ES3-CTS.shaders.uniform_block.random.all_per_block_buffers.5 ES3-CTS.shaders.uniform_block.random.all_per_block_buffers.19 ES3-CTS.shaders.uniform_block.random.all_shared_buffer.0 ES3-CTS.shaders.uniform_block.random.all_shared_buffer.2 ES3-CTS.shaders.uniform_block.random.all_shared_buffer.6 ES3-CTS.shaders.uniform_block.random.all_shared_buffer.12 v2: Fix rebase failure noticed by Matt. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
parent
b17a4d5dab
commit
b48621c348
1 changed files with 0 additions and 3 deletions
|
|
@ -327,7 +327,6 @@ lower_ubo_reference_visitor::handle_rvalue(ir_rvalue **rvalue)
|
|||
const glsl_type *struct_type = deref_record->record->type;
|
||||
unsigned intra_struct_offset = 0;
|
||||
|
||||
unsigned max_field_align = 16;
|
||||
for (unsigned int i = 0; i < struct_type->length; i++) {
|
||||
const glsl_type *type = struct_type->fields.structure[i].type;
|
||||
|
||||
|
|
@ -341,7 +340,6 @@ lower_ubo_reference_visitor::handle_rvalue(ir_rvalue **rvalue)
|
|||
|
||||
unsigned field_align = type->std140_base_alignment(field_row_major);
|
||||
|
||||
max_field_align = MAX2(field_align, max_field_align);
|
||||
intra_struct_offset = glsl_align(intra_struct_offset, field_align);
|
||||
|
||||
if (strcmp(struct_type->fields.structure[i].name,
|
||||
|
|
@ -350,7 +348,6 @@ lower_ubo_reference_visitor::handle_rvalue(ir_rvalue **rvalue)
|
|||
intra_struct_offset += type->std140_size(field_row_major);
|
||||
}
|
||||
|
||||
const_offset = glsl_align(const_offset, max_field_align);
|
||||
const_offset += intra_struct_offset;
|
||||
|
||||
deref = deref_record->record->as_dereference();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue