mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-18 08:20:29 +01:00
nv50: delayed write of fragprog result regs until end of program
This commit is contained in:
parent
34a039ae7b
commit
776e9581d1
1 changed files with 15 additions and 3 deletions
|
|
@ -27,6 +27,8 @@
|
|||
*
|
||||
* FUCK! watch dst==src vectors, can overwrite components that are needed.
|
||||
* ie. SUB R0, R0.yzxw, R0
|
||||
*
|
||||
* NV50_PROG* -> PIPE_SHADER*
|
||||
*/
|
||||
struct nv50_reg {
|
||||
enum {
|
||||
|
|
@ -1198,11 +1200,13 @@ nv50_program_tx_prep(struct nv50_pc *pc)
|
|||
|
||||
for (i = 0; i < pc->result_nr; i++) {
|
||||
for (c = 0; c < 4; c++) {
|
||||
if (pc->p->type == NV50_PROG_FRAGMENT)
|
||||
if (pc->p->type == NV50_PROG_FRAGMENT) {
|
||||
pc->result[i*4+c].type = P_TEMP;
|
||||
else
|
||||
pc->result[i*4+c].hw = -1;
|
||||
} else {
|
||||
pc->result[i*4+c].type = P_RESULT;
|
||||
pc->result[i*4+c].hw = rid++;
|
||||
pc->result[i*4+c].hw = rid++;
|
||||
}
|
||||
pc->result[i*4+c].index = i;
|
||||
}
|
||||
}
|
||||
|
|
@ -1281,6 +1285,14 @@ nv50_program_tx(struct nv50_program *p)
|
|||
}
|
||||
}
|
||||
|
||||
if (p->type == NV50_PROG_FRAGMENT) {
|
||||
struct nv50_reg out;
|
||||
|
||||
out.type = P_TEMP;
|
||||
for (out.hw = 0; out.hw < pc->result_nr * 4; out.hw++)
|
||||
emit_mov(pc, &out, &pc->result[out.hw]);
|
||||
}
|
||||
|
||||
p->immd_nr = pc->immd_nr * 4;
|
||||
p->immd = pc->immd_buf;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue