glsl: Propagate UBO binding qualifier into UBO member variables.
Without an instance name, there is no ir_variable representing the actual uniform block declaration. When the linker goes to set uniform initializers, it only sees the members as ir_variables; never the block. So, unfortunately, the members need to know about the binding. There has to be a better way to do this. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Paul Berry <stereotype441@gmail.com>
This commit is contained in:
parent
34e2ccc9f0
commit
f25d94084c
|
@ -4387,6 +4387,13 @@ ast_interface_block::hir(exec_list *instructions,
|
||||||
var_mode);
|
var_mode);
|
||||||
var->interface_type = block_type;
|
var->interface_type = block_type;
|
||||||
|
|
||||||
|
/* Propagate the "binding" keyword into this UBO's fields;
|
||||||
|
* the UBO declaration itself doesn't get an ir_variable unless it
|
||||||
|
* has an instance name. This is ugly.
|
||||||
|
*/
|
||||||
|
var->explicit_binding = this->layout.flags.q.explicit_binding;
|
||||||
|
var->binding = this->layout.binding;
|
||||||
|
|
||||||
state->symbols->add_variable(var);
|
state->symbols->add_variable(var);
|
||||||
instructions->push_tail(var);
|
instructions->push_tail(var);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue