mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 09:38:07 +02:00
intel/fs: Mark 64-bit values as being contiguous
This isn't often a problem , when we're in a compute shader, we must
push the thread local ID so we decrement the amount of available push
space by 1 and it's no longer even and 64-bit data can, in theory, span
it. By marking those uniforms contiguous, we ensure that they never get
split in half between push and pull constants.
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Cc: mesa-stable@lists.freedesktop.org
(cherry picked from commit 25f7453c9e)
This commit is contained in:
parent
e759beb906
commit
844b437034
1 changed files with 4 additions and 1 deletions
|
|
@ -1966,7 +1966,7 @@ fs_visitor::assign_constant_locations()
|
|||
|
||||
/* For each uniform slot, a value of true indicates that the given slot and
|
||||
* the next slot must remain contiguous. This is used to keep us from
|
||||
* splitting arrays apart.
|
||||
* splitting arrays and 64-bit values apart.
|
||||
*/
|
||||
bool contiguous[uniforms];
|
||||
memset(contiguous, 0, sizeof(contiguous));
|
||||
|
|
@ -2003,6 +2003,9 @@ fs_visitor::assign_constant_locations()
|
|||
if (constant_nr >= 0 && constant_nr < (int) uniforms) {
|
||||
int regs_read = inst->components_read(i) *
|
||||
type_sz(inst->src[i].type) / 4;
|
||||
assert(regs_read <= 2);
|
||||
if (regs_read == 2)
|
||||
contiguous[constant_nr] = true;
|
||||
for (int j = 0; j < regs_read; j++) {
|
||||
is_live[constant_nr + j] = true;
|
||||
bitsize_access[constant_nr + j] =
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue