mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 15:58:05 +02:00
glsl: copy explicit offset to uniform storage
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
This commit is contained in:
parent
e12a49ac12
commit
96527c3cf2
3 changed files with 20 additions and 0 deletions
|
|
@ -97,6 +97,11 @@ private:
|
|||
this->offset, type->std140_base_alignment(row_major));
|
||||
}
|
||||
|
||||
virtual void set_buffer_offset(unsigned offset)
|
||||
{
|
||||
this->offset = offset;
|
||||
}
|
||||
|
||||
virtual void visit_field(const glsl_type *type, const char *name,
|
||||
bool row_major, const glsl_type *,
|
||||
const unsigned packing,
|
||||
|
|
|
|||
|
|
@ -194,6 +194,9 @@ program_resource_visitor::recursion(const glsl_type *t, char **name,
|
|||
if (t->fields.structure[i].type->is_record())
|
||||
this->visit_field(&t->fields.structure[i]);
|
||||
|
||||
if (t->is_interface() && t->fields.structure[i].offset != -1)
|
||||
this->set_buffer_offset(t->fields.structure[i].offset);
|
||||
|
||||
/* Append '.field' to the current variable name. */
|
||||
if (name_length == 0) {
|
||||
ralloc_asprintf_rewrite_tail(name, &new_length, "%s", field);
|
||||
|
|
@ -297,6 +300,11 @@ program_resource_visitor::leave_record(const glsl_type *, const char *, bool,
|
|||
{
|
||||
}
|
||||
|
||||
void
|
||||
program_resource_visitor::set_buffer_offset(unsigned)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
program_resource_visitor::set_record_array_count(unsigned)
|
||||
{
|
||||
|
|
@ -676,6 +684,11 @@ private:
|
|||
}
|
||||
}
|
||||
|
||||
virtual void set_buffer_offset(unsigned offset)
|
||||
{
|
||||
this->ubo_byte_offset = offset;
|
||||
}
|
||||
|
||||
virtual void set_record_array_count(unsigned record_array_count)
|
||||
{
|
||||
this->record_array_count = record_array_count;
|
||||
|
|
|
|||
|
|
@ -182,6 +182,8 @@ protected:
|
|||
virtual void leave_record(const glsl_type *type, const char *name,
|
||||
bool row_major, const unsigned packing);
|
||||
|
||||
virtual void set_buffer_offset(unsigned offset);
|
||||
|
||||
virtual void set_record_array_count(unsigned record_array_count);
|
||||
|
||||
private:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue