diff options
-rw-r--r-- | hwtest/pgraph_state_tests.cc | 4 | ||||
-rw-r--r-- | include/nvhw/pgraph.h | 1 | ||||
-rw-r--r-- | nvhw/pgraph_celsius.c | 4 |
3 files changed, 7 insertions, 2 deletions
diff --git a/hwtest/pgraph_state_tests.cc b/hwtest/pgraph_state_tests.cc index 154fa557..437f9a77 100644 --- a/hwtest/pgraph_state_tests.cc +++ b/hwtest/pgraph_state_tests.cc @@ -759,7 +759,7 @@ protected: if (cls == 0x37 || cls == 0x77 || cls == 0x63 || cls == 0x67 || cls == 0x89 || cls == 0x87 || cls == 0x38 || cls == 0x88 || cls == 0x60 || cls == 0x64) orig.ctx_switch[0] ^= 0x80; } - if (orig.celsius_pipe_begin_end == 3 || orig.celsius_pipe_begin_end == 0xa) { + if (nv04_pgraph_is_nv17p(&chipset) && (orig.celsius_pipe_begin_end == 3 || orig.celsius_pipe_begin_end == 0xa)) { insrt(orig.celsius_pipe_vtx_state, 28, 3, 0); } } @@ -1233,7 +1233,7 @@ class PipeWriteICmdTest : public StateTest { val = rnd(); nva_wr32(cnum, 0x400f50, 0x0400 | reg); nva_wr32(cnum, 0x400f54, val); - pgraph_celsius_icmd(&exp, extr(reg, 3, 6), val); + pgraph_celsius_raw_icmd(&exp, extr(reg, 3, 6), val); } void print_fail() { printf("After writing %08x <- %08x\n", reg, val); diff --git a/include/nvhw/pgraph.h b/include/nvhw/pgraph.h index b1a483e8..8b3a0085 100644 --- a/include/nvhw/pgraph.h +++ b/include/nvhw/pgraph.h @@ -346,6 +346,7 @@ uint32_t pgraph_celsius_ub_to_float(uint8_t val); uint32_t pgraph_celsius_short_to_float(struct pgraph_state *state, int16_t val); uint32_t pgraph_celsius_nshort_to_float(int16_t val); void pgraph_celsius_icmd(struct pgraph_state *state, int cmd, uint32_t val); +void pgraph_celsius_raw_icmd(struct pgraph_state *state, int cmd, uint32_t val); static inline bool nv04_pgraph_is_nv11p(const struct chipset_info *chipset) { return chipset->chipset > 0x10 && chipset->chipset != 0x15; diff --git a/nvhw/pgraph_celsius.c b/nvhw/pgraph_celsius.c index 4b877e50..46a9fa48 100644 --- a/nvhw/pgraph_celsius.c +++ b/nvhw/pgraph_celsius.c @@ -110,6 +110,10 @@ void pgraph_celsius_icmd(struct pgraph_state *state, int cmd, uint32_t val) { insrt(val, 13, 1, 1); } } + pgraph_celsius_raw_icmd(state, cmd, val); +} + +void pgraph_celsius_raw_icmd(struct pgraph_state *state, int cmd, uint32_t val) { state->celsius_pipe_junk[0] = cmd << 2; state->celsius_pipe_junk[1] = val; insrt(state->celsius_pipe_vtx_state, 28, 3, 0); |