mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 17:48:10 +02:00
r600g: fix sampler/ubo indexing on cayman
Cayman needs a different method to upload the CF IDX0/1 This fixes 31 piglits when ARB_gpu_shader5 is forced on with cayman. Reviewed-by: Glenn Kennard <glenn.kennard@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
1bfa25e88d
commit
c397bd1407
2 changed files with 18 additions and 6 deletions
|
|
@ -160,6 +160,9 @@ int egcm_load_index_reg(struct r600_bytecode *bc, unsigned id, bool inside_alu_c
|
|||
alu.op = ALU_OP1_MOVA_INT;
|
||||
alu.src[0].sel = bc->index_reg[id];
|
||||
alu.src[0].chan = 0;
|
||||
if (bc->chip_class == CAYMAN)
|
||||
alu.dst.sel = id == 0 ? CM_V_SQ_MOVA_DST_CF_IDX0 : CM_V_SQ_MOVA_DST_CF_IDX1;
|
||||
|
||||
alu.last = 1;
|
||||
r = r600_bytecode_add_alu(bc, &alu);
|
||||
if (r)
|
||||
|
|
@ -167,12 +170,14 @@ int egcm_load_index_reg(struct r600_bytecode *bc, unsigned id, bool inside_alu_c
|
|||
|
||||
bc->ar_loaded = 0; /* clobbered */
|
||||
|
||||
memset(&alu, 0, sizeof(alu));
|
||||
alu.op = id == 0 ? ALU_OP0_SET_CF_IDX0 : ALU_OP0_SET_CF_IDX1;
|
||||
alu.last = 1;
|
||||
r = r600_bytecode_add_alu(bc, &alu);
|
||||
if (r)
|
||||
return r;
|
||||
if (bc->chip_class == EVERGREEN) {
|
||||
memset(&alu, 0, sizeof(alu));
|
||||
alu.op = id == 0 ? ALU_OP0_SET_CF_IDX0 : ALU_OP0_SET_CF_IDX1;
|
||||
alu.last = 1;
|
||||
r = r600_bytecode_add_alu(bc, &alu);
|
||||
if (r)
|
||||
return r;
|
||||
}
|
||||
|
||||
/* Must split ALU group as index only applies to following group */
|
||||
if (inside_alu_clause) {
|
||||
|
|
|
|||
|
|
@ -521,4 +521,11 @@
|
|||
|
||||
#define V_SQ_REL_ABSOLUTE 0
|
||||
#define V_SQ_REL_RELATIVE 1
|
||||
|
||||
/* CAYMAN has special encoding for MOVA_INT destination */
|
||||
#define CM_V_SQ_MOVA_DST_AR_X 0
|
||||
#define CM_V_SQ_MOVA_DST_CF_PC 1
|
||||
#define CM_V_SQ_MOVA_DST_CF_IDX0 2
|
||||
#define CM_V_SQ_MOVA_DST_CF_IDX1 3
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue