summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrice Mandin <pmandin@caramail.com>2008-08-23 22:28:25 +0200
committerPatrice Mandin <pmandin@caramail.com>2008-08-23 22:28:25 +0200
commite1520747d8a8cdacfdefdd212da285f36403f493 (patch)
tree506b6864640d2f939bb6ea36773c5b93e59a55bb
parent12e58860f3125d349b4e7f1bd72620f637214a63 (diff)
Separe nop/set color fp
-rw-r--r--tcl_init.c38
1 files changed, 31 insertions, 7 deletions
diff --git a/tcl_init.c b/tcl_init.c
index 1631fa2..7ca60c3 100644
--- a/tcl_init.c
+++ b/tcl_init.c
@@ -39,6 +39,29 @@ static void tcl_fp_color(void)
OUT_RING ((uint32_t)fragprog_offset| NV34TCL_FP_ACTIVE_PROGRAM_DMA0);
}
+static void tcl_fp_nop(void)
+{
+ volatile unsigned int *fragprog_map;
+ uint64_t fragprog_offset;
+
+ fragprog_map = screen_allocmem(0, 0x1000, &fragprog_offset);
+ if (!fragprog_map) {
+ return;
+ }
+ printf("fragprog alloc'd at 0x%08x mapped at %p\n",
+ fragprog_offset, fragprog_map);
+ /*
+ * NOP
+ */
+ fragprog_map[0] = 1;
+ fragprog_map[1] =
+ fragprog_map[2] =
+ fragprog_map[3] = 0;
+
+ BEGIN_RING(NvSub3D, NV34TCL_FP_ACTIVE_PROGRAM, 1);
+ OUT_RING ((uint32_t)fragprog_offset| NV34TCL_FP_ACTIVE_PROGRAM_DMA0);
+}
+
void tcl_init(void)
{
int i;
@@ -158,14 +181,14 @@ void tcl_init(void)
# INST 0: MOVX R0 (TR0.xyzw), attrib.color + END
07bfef01 NV30TCL.FP_ACTIVE_PROGRAM = DMA0=TRUE | DMA1=FALSE | OFFSET=0x07bfef00
#endif
- tcl_fp_color();
-
- BEGIN_RING(NvSub3D, NV34TCL_TX_UNITS_ENABLE, 1);
- OUT_RING(0);
+ /*tcl_fp_color();
BEGIN_RING(NvSub3D, NV34TCL_FP_CONTROL, 1);
OUT_RING(0);
BEGIN_RING(NvSub3D, NV34TCL_FP_REG_CONTROL, 1);
- OUT_RING((1<<16)|4);
+ OUT_RING((1<<16)|4);*/
+
+ BEGIN_RING(NvSub3D, NV34TCL_TX_UNITS_ENABLE, 1);
+ OUT_RING(0);
for (i=0; i<4; i++) {
BEGIN_RING(NvSub3D, NV34TCL_TX_ENABLE(i), 1);
OUT_RING(0);
@@ -346,11 +369,12 @@ void tcl_init(void)
# INST 0: NOP (FL0.xxxx) + END
07bfef41 NV30TCL.FP_ACTIVE_PROGRAM = DMA0=TRUE | DMA1=FALSE | OFFSET=0x07bfef40
#endif
+ tcl_fp_nop();
- /*BEGIN_RING(NvSub3D, NV34TCL_FP_CONTROL, 1);
+ BEGIN_RING(NvSub3D, NV34TCL_FP_CONTROL, 1);
OUT_RING(0x40);
BEGIN_RING(NvSub3D, NV34TCL_FP_REG_CONTROL, 1);
- OUT_RING((1<<16)|4);*/
+ OUT_RING((1<<16)|4);
/*BEGIN_RING(NvSub3D, NV34TCL_CLEAR_DEPTH_VALUE, 2);
OUT_RING(0);