summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hwtest/pgraph_state_tests.cc4
-rw-r--r--include/nvhw/pgraph.h1
-rw-r--r--nvhw/pgraph_celsius.c4
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);