mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-05 11:10:10 +01:00
i965/fs: calculate first non-payload GRF using attrib slots
When computing where the first non-payload GRF starts, we can't rely on the number of attributes, as each attribute can be using 1 or 2 slots depending on whether they are a dvec3/4 or other. Instead, we need to use the number of slots used by the attributes. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
b7423b485e
commit
7ea09511ca
3 changed files with 3 additions and 1 deletions
|
|
@ -611,6 +611,7 @@ struct brw_vs_prog_data {
|
|||
GLbitfield64 inputs_read;
|
||||
|
||||
unsigned nr_attributes;
|
||||
unsigned nr_attribute_slots;
|
||||
|
||||
bool uses_vertexid;
|
||||
bool uses_instanceid;
|
||||
|
|
|
|||
|
|
@ -1768,7 +1768,7 @@ fs_visitor::assign_vs_urb_setup()
|
|||
assert(stage == MESA_SHADER_VERTEX);
|
||||
|
||||
/* Each attribute is 4 regs. */
|
||||
this->first_non_payload_grf += 4 * vs_prog_data->nr_attributes;
|
||||
this->first_non_payload_grf += 4 * vs_prog_data->nr_attribute_slots;
|
||||
|
||||
assert(vs_prog_data->base.urb_read_length <= 15);
|
||||
|
||||
|
|
|
|||
|
|
@ -2120,6 +2120,7 @@ brw_compile_vs(const struct brw_compiler *compiler, void *log_data,
|
|||
DIV_ROUND_UP(MAX2(nr_attribute_slots, 1), 2);
|
||||
|
||||
prog_data->nr_attributes = nr_attributes;
|
||||
prog_data->nr_attribute_slots = nr_attribute_slots;
|
||||
|
||||
/* Since vertex shaders reuse the same VUE entry for inputs and outputs
|
||||
* (overwriting the original contents), we need to make sure the size is
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue