summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrice Mandin <pmandin@caramail.com>2008-08-30 19:25:06 +0200
committerPatrice Mandin <pmandin@caramail.com>2008-08-30 19:25:06 +0200
commita7ebfd32122bba6f22d6b22ea3af9f78526ffb11 (patch)
treec2a7c5b16940ab4c5b78af7cdcb6aef0723747bb
parent42a5ec67c93a57d3a65d30e8827b0ddb668d2c8c (diff)
Cleanup
-rw-r--r--main.c10
-rw-r--r--tcl_init.c616
-rw-r--r--tcl_init.h2
-rw-r--r--tcl_triangle.c6
4 files changed, 20 insertions, 614 deletions
diff --git a/main.c b/main.c
index 0fd4a7a..7a972fb 100644
--- a/main.c
+++ b/main.c
@@ -51,14 +51,10 @@ int main(int argc, char **argv)
);*/
/* mandatory, or we get PFIFO_CACHE_ERROR */
- /*tcl_init();*/
- /*tcl_init_ddx();*/
- tcl_init_triangle();
+ tcl_init();
/*tcl_clear();*/
-
- /* FIXME: none work atm */
- /*tcl_triangle_fixed();*/
- /*tcl_triangle_vtxattr();*/
+ /*tcl_triangle_fixed();*/ /* does not work */
+ tcl_triangle_vtxattr();
printf("coincoin\n");
diff --git a/tcl_init.c b/tcl_init.c
index 0305cf4..12195c2 100644
--- a/tcl_init.c
+++ b/tcl_init.c
@@ -44,8 +44,6 @@ static void tcl_fp_color(void)
BEGIN_RING(NvSub3D, NV34TCL_FP_ACTIVE_PROGRAM, 1);
OUT_RING ((uint32_t)fragprog_offset| NV34TCL_FP_ACTIVE_PROGRAM_DMA0);
- BEGIN_RING(NvSub3D, NV34TCL_TX_UNITS_ENABLE, 1);
- OUT_RING(0);
BEGIN_RING(NvSub3D, NV34TCL_FP_CONTROL, 1);
OUT_RING(0);
BEGIN_RING(NvSub3D, NV34TCL_FP_REG_CONTROL, 1);
@@ -110,343 +108,34 @@ void tcl_init(void)
BEGIN_RING(NvSub3D, NV34TCL_DMA_IN_MEMORY7, 2);
OUT_RING(NvDmaFB); /* beef0201 1ac */
OUT_RING(NvDmaFB); /* beef0201 1b0 */
-
- BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_CLIP_HORIZ(0), 1);
- OUT_RING((viewport_w-1)<<16);
- BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_CLIP_VERT(0), 1);
- OUT_RING((viewport_h-1)<<16);
- for (i=1; i<8; i++) {
- BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_CLIP_HORIZ(i), 1);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_CLIP_VERT(i), 1);
- OUT_RING(0);
- }
- BEGIN_RING(NvSub3D, 0x2bc, 1);
- OUT_RING(0);
-
- BEGIN_RING(NvSub3D, NV34TCL_RT_ENABLE, 1);
- OUT_RING(NV34TCL_RT_ENABLE_COLOR0);
- BEGIN_RING(NvSub3D, 0x3b0, 1);
- OUT_RING(0x10<<16);
- BEGIN_RING(NvSub3D, 0x1454, 1);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, 0x1d80, 1);
- OUT_RING(3);
- BEGIN_RING(NvSub3D, NV34TCL_FP_REG_CONTROL, 1);
- OUT_RING((3<<16)|4);
-
- BEGIN_RING(NvSub3D, 0x1e98, 1);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, 0x17e0, 3);
- OUT_RINGf(0.0);
- OUT_RINGf(0.0);
- OUT_RINGf(1.0);
-
- BEGIN_RING(NvSub3D, 0x1f80, 16);
- for (i=0; i<16; i++) {
- OUT_RING((i==8) ? 0xffff : 0);
- }
-
- BEGIN_RING(NvSub3D, 0x120, 3);
- OUT_RING(0);
- OUT_RING(1);
- OUT_RING(2);
-
- BEGIN_RING(NvSubImageBlit, 0x120, 3);
- OUT_RING(0);
- OUT_RING(1);
- OUT_RING(2);
-
- BEGIN_RING(NvSub3D, NV34TCL_RT_HORIZ, 2);
- OUT_RING(viewport_w<<16);
- OUT_RING(viewport_h<<16);
- BEGIN_RING(NvSub3D, 0x1d88, 1);
- OUT_RING(0x1200);
- BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_HORIZ, 2);
- OUT_RING(viewport_w<<16);
- OUT_RING(viewport_h<<16);
- BEGIN_RING(NvSub3D, NV34TCL_SCISSOR_HORIZ, 2);
- OUT_RING(viewport_w<<16);
- OUT_RING(viewport_h<<16);
- BEGIN_RING(NvSub3D, NV34TCL_RT_FORMAT, 1);
- OUT_RING(NV34TCL_RT_FORMAT_TYPE_LINEAR | NV34TCL_RT_FORMAT_ZETA_Z24S8 | NV34TCL_RT_FORMAT_COLOR_X8R8G8B8);
- BEGIN_RING(NvSub3D, 0x1da4, 1);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, NV34TCL_COLOR0_PITCH, 5);
- OUT_RING((screen_pitch<<16)|screen_pitch); /* zeta_pitch, color0_pitch */
- OUT_RING(screen_offset); /* color0_offset */
- OUT_RING(screen_offset); /* zeta_offset */
- OUT_RING(screen_offset); /* color1_offset */
- OUT_RING(screen_pitch); /* color1_pitch */
- BEGIN_RING(NvSub3D, NV34TCL_LMA_DEPTH_PITCH, 2);
- OUT_RING(screen_pitch);
- OUT_RING(screen_offset + viewport_w);
- BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_TX_ORIGIN, 1);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, 0x1da4, 1);
- OUT_RING(0);
-
- /* ??? */
- BEGIN_RING(NvSub3D, 0x234, 1);
- OUT_RING(3);
-
- BEGIN_RING(NvSub3D, NV34TCL_ALPHA_FUNC_ENABLE, 3);
- OUT_RING(0);
- OUT_RING(0x207);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, NV34TCL_RC_ENABLE, 1);
- OUT_RING(0);
-
- 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);
- }
-
- BEGIN_RING(NvSub3D, NV34TCL_DO_VERTICES, 1);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, NV34TCL_MULTISAMPLE_CONTROL, 1);
- OUT_RING(0xffff<<16);
-
- BEGIN_RING(NvSub3D, NV34TCL_BLEND_FUNC_ENABLE, 4);
- OUT_RING(0);
- OUT_RING((1<<16)|1);
- OUT_RING(0);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, NV34TCL_STENCIL_BACK_ENABLE, 17);
- OUT_RING(0);
- OUT_RING(0xff);
- OUT_RING(0x207);
- OUT_RING(0);
- OUT_RING(0xff);
- OUT_RING(0x1e00);
- OUT_RING(0x1e00);
- OUT_RING(0x1e00);
- OUT_RING(0);
- OUT_RING(0xff);
- OUT_RING(0x207);
- OUT_RING(0);
- OUT_RING(0xff);
- OUT_RING(0x1e00);
- OUT_RING(0x1e00);
- OUT_RING(0x1e00);
- OUT_RING(0x1d01);
- BEGIN_RING(NvSub3D, NV34TCL_COLOR_LOGIC_OP_ENABLE, 2);
- OUT_RING(0);
- OUT_RING(0x1503);
- BEGIN_RING(NvSub3D, NV34TCL_POLYGON_STIPPLE_ENABLE, 1);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, NV34TCL_LINE_STIPPLE_ENABLE, 2);
- OUT_RING(0);
- OUT_RING(0xffff<<16);
- BEGIN_RING(NvSub3D, 0x1d84, 1);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, NV34TCL_FOG_ENABLE, 2);
- OUT_RING(0);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, NV34TCL_NORMALIZE_ENABLE, 1);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, 0x17cc, 1);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, NV34TCL_POLYGON_STIPPLE_PATTERN(0), 32);
- for (i=0; i<32; i++) {
- OUT_RING(0xffffffff);
- }
- BEGIN_RING(NvSub3D, NV34TCL_POLYGON_OFFSET_POINT_ENABLE, 3);
- OUT_RING(0);
- OUT_RING(0);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, NV34TCL_DEPTH_FUNC, 1);
- OUT_RING(0x201);
- BEGIN_RING(NvSub3D, NV34TCL_DEPTH_WRITE_ENABLE, 1);
- OUT_RING(1);
- BEGIN_RING(NvSub3D, NV34TCL_DEPTH_TEST_ENABLE, 1);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, NV34TCL_POLYGON_OFFSET_FACTOR, 2);
- OUT_RINGf(0.0);
- OUT_RINGf(0.0);
- BEGIN_RING(NvSub3D, 0x1d78, 1);
- OUT_RING(1);
- BEGIN_RING(NvSub3D, NV34TCL_LINE_WIDTH, 2);
- OUT_RING(8);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, NV34TCL_POLYGON_MODE_FRONT, 2);
- OUT_RING(0x1b02);
- OUT_RING(0x1b02);
- BEGIN_RING(NvSub3D, NV34TCL_CULL_FACE, 2);
- OUT_RING(0x405);
- OUT_RING(0x901);
- BEGIN_RING(NvSub3D, NV34TCL_POLYGON_SMOOTH_ENABLE, 1);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, NV34TCL_CULL_FACE_ENABLE, 1);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, NV34TCL_VTX_ATTR_4F_X(1), 60);
- OUT_RINGf(1.0);
- OUT_RINGf(0.0);
- OUT_RINGf(0.0);
- OUT_RINGf(1.0);
- OUT_RINGf(0.0);
- OUT_RINGf(0.0);
- OUT_RINGf(1.0);
- OUT_RINGf(1.0);
- OUT_RINGf(1.0);
- OUT_RINGf(1.0);
- OUT_RINGf(1.0);
- OUT_RINGf(1.0);
- for (i=4; i<16; i++) {
- OUT_RINGf(0.0);
- OUT_RINGf(0.0);
- OUT_RINGf(0.0);
- OUT_RINGf(1.0);
- }
- BEGIN_RING(NvSub3D, 0x145c, 1);
- OUT_RING(1);
- BEGIN_RING(NvSub3D, NV34TCL_DITHER_ENABLE, 1);
- OUT_RING(1);
- BEGIN_RING(NvSub3D, NV34TCL_COLOR_MASK, 1);
- OUT_RING(0x01010101);
- BEGIN_RING(NvSub3D, NV34TCL_BLEND_EQUATION, 1);
- OUT_RING(0x8006);
- BEGIN_RING(NvSub3D, 0x1458, 1);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, 0x1424, 3);
- OUT_RING(2<<16);
- OUT_RING(0);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, NV34TCL_ENABLED_LIGHTS, 1);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, NV34TCL_POINT_SIZE, 3);
- OUT_RINGf(1.0);
- OUT_RING(0);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, NV34TCL_TX_GEN_S(0), 32);
- for (i=0; i<32; i++) {
- OUT_RING(0);
- }
-
- BEGIN_RING(NvSub3D, NV34TCL_FOG_MODE, 1);
- OUT_RING(0x802);
- BEGIN_RING(NvSub3D, NV34TCL_FOG_EQUATION_CONSTANT, 3);
- OUT_RINGf(1.5);
- OUT_RINGf(-0.090168);
- OUT_RINGf(0.0);
- BEGIN_RING(NvSub3D, NV34TCL_FOG_COORD_DIST, 1);
- OUT_RING(2);
- BEGIN_RING(NvSub3D, NV34TCL_FOG_ENABLE, 1);
- OUT_RING(0);
-
- BEGIN_RING(NvSub3D, NV34TCL_ENGINE, 1);
- OUT_RING(0x13 /*NV34TCL_ENGINE_FIXED*/);
-
- BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_TRANSLATE_X, 4);
- OUT_RINGf(viewport_w * 0.5);
- OUT_RINGf(viewport_h * 0.5);
- OUT_RINGf(0.5);
- OUT_RINGf(0.0);
- BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_SCALE_X, 4);
- OUT_RINGf(viewport_w * 0.5);
- OUT_RINGf(viewport_h * -0.5);
- OUT_RINGf(0.5);
- OUT_RINGf(0.0);
-
- BEGIN_RING(NvSub3D, NV34TCL_VP_CLIP_PLANES_ENABLE, 1);
- OUT_RING(0);
-
- BEGIN_RING(NvSub3D, NV34TCL_PROJECTION_MATRIX(0), 16);
- for (i=0; i<16; i++) {
- if ((i==0) || (i==5) || (i==10) || (i==15)) {
- OUT_RINGf(1.0);
- } else {
- OUT_RING(0);
- }
- }
-
- BEGIN_RING(NvSub3D, NV34TCL_MODELVIEW_MATRIX(0), 16);
- for (i=0; i<16; i++) {
- if ((i==0) || (i==5) || (i==10) || (i==15)) {
- OUT_RINGf(1.0);
- } else {
- OUT_RING(0);
- }
- }
-
- BEGIN_RING(NvSub3D, NV34TCL_DEPTH_RANGE_NEAR, 2);
- OUT_RINGf(0.0);
- OUT_RINGf(1.0);
-
- BEGIN_RING(NvSub3D, NV34TCL_TX_MATRIX_ENABLE(0), 8);
- for (i=0; i<8; i++) {
- OUT_RING(0);
- }
-
- /*tcl_fp_nop();*/
- tcl_fp_color();
-
- FIRE_RING();
-}
-
-void tcl_init_triangle(void)
-{
- int i;
-
- printf("-- TCL init, triangle\n");
-
- SetSubchannel(NvSubImageBlit, NvImageBlit);
- SetSubchannel(NvSub3D, Nv3D);
-
- BEGIN_RING(NvSub3D, NV34TCL_DMA_NOTIFY, 1);
- OUT_RING(NvSyncNotify);
-
- BEGIN_RING(NvSub3D, NV34TCL_DMA_TEXTURE0, 2);
- OUT_RING(NvDmaFB); /* beef0201 184 texture0 */
- OUT_RING(NvDmaTT); /* beef0202 188 texture1 */
- BEGIN_RING(NvSub3D, NV34TCL_DMA_IN_MEMORY7, 1);
- OUT_RING(NvDmaFB); /* beef0201 1ac */
- BEGIN_RING(NvSub3D, NV34TCL_DMA_COLOR0, 2);
- OUT_RING(NvDmaFB); /* beef0201 194 color0 */
- OUT_RING(NvDmaFB); /* beef0201 198 zeta */
- BEGIN_RING(NvSub3D, NV34TCL_DMA_COLOR1, 1);
- OUT_RING(NvDmaFB); /* beef0201 18c color1 */
#if 0
+000421a4 size 1, subchannel 1 (0xbeef3097),offset 0x01a4,increment
+beef1e00 NV30TCL.DMA_FENCE = NV01_MEMORY_LOCAL_BANKED
000421a8 size 1, subchannel 1 (0xbeef3097),offset 0x01a8,increment
beef0351 NV30TCL.DMA_QUERY = NV01_MEMORY_LOCAL_BANKED
#endif
BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_TX_ORIGIN, 1);
OUT_RING(0);
- BEGIN_RING(NvSub3D, NV34TCL_RT_HORIZ, 2);
- OUT_RING(0);
- OUT_RING(0);
BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_CLIP_HORIZ(0), 1);
- OUT_RING(4095<<16);
+ OUT_RING((viewport_w-1)<<16);
BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_CLIP_VERT(0), 1);
- OUT_RING(4095<<16);
+ OUT_RING((viewport_h-1)<<16);
for (i=1; i<8; i++) {
BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_CLIP_HORIZ(i), 1);
OUT_RING(0);
BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_CLIP_VERT(i), 1);
OUT_RING(0);
}
- BEGIN_RING(NvSub3D, 0x2bc, 1);
+ BEGIN_RING(NvSub3D, 0x2bc /* NV34TCL_VIEWPORT_CLIP_MODE */, 1);
OUT_RING(0);
- BEGIN_RING(NvSub3D, NV34TCL_RT_ENABLE, 1);
- OUT_RING(NV34TCL_RT_ENABLE_COLOR0);
BEGIN_RING(NvSub3D, 0x3b0, 1);
OUT_RING(0x10<<16);
BEGIN_RING(NvSub3D, 0x1454, 1);
OUT_RING(0);
BEGIN_RING(NvSub3D, 0x1d80, 1);
OUT_RING(3);
- BEGIN_RING(NvSub3D, NV34TCL_FP_REG_CONTROL, 1);
- OUT_RING((3<<16)|4);
-#if 0
-000421a4 size 1, subchannel 1 (0xbeef3097),offset 0x01a4,increment
-beef1e00 NV30TCL.DMA_FENCE = NV01_MEMORY_LOCAL_BANKED
-#endif
- BEGIN_RING(NvSub3D, NV34TCL_DMA_IN_MEMORY8, 1);
- OUT_RING(NvDmaFB); /* beef0201 1b0 */
BEGIN_RING(NvSub3D, 0x1e98, 1);
OUT_RING(0);
@@ -459,14 +148,7 @@ beef1e00 NV30TCL.DMA_FENCE = NV01_MEMORY_LOCAL_BANKED
for (i=0; i<16; i++) {
OUT_RING((i==8) ? 0xffff : 0);
}
-#if 0
-00042104 size 1, subchannel 1 (0xbeef3097),offset 0x0104,increment
-00000000 NV30TCL.NOTIFY
-00042100 size 1, subchannel 1 (0xbeef3097),offset 0x0100,increment
-00000000 NV30TCL.NOP
-00042110 size 1, subchannel 1 (0xbeef3097),offset 0x0110,increment
-00000000 NV30TCL[0x0110/4]
-#endif
+
BEGIN_RING(NvSub3D, 0x120, 3);
OUT_RING(0);
OUT_RING(1);
@@ -477,75 +159,24 @@ beef1e00 NV30TCL.DMA_FENCE = NV01_MEMORY_LOCAL_BANKED
OUT_RING(1);
OUT_RING(2);
- BEGIN_RING(NvSub3D, NV34TCL_RT_HORIZ, 2);
- OUT_RING(viewport_w<<16);
- OUT_RING(viewport_h<<16);
BEGIN_RING(NvSub3D, 0x1d88, 1);
OUT_RING(0x1200);
BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_HORIZ, 2);
- OUT_RING(4095);
- OUT_RING(4095);
- BEGIN_RING(NvSub3D, NV34TCL_SCISSOR_HORIZ, 2);
- OUT_RING(4095);
- OUT_RING(4095);
- BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_TRANSLATE_X, 4);
- OUT_RINGf(0.0);
- OUT_RINGf(viewport_h * 1.0);
- OUT_RINGf(0.0);
- OUT_RINGf(0.0);
-
- BEGIN_RING(NvSub3D, NV34TCL_RT_FORMAT, 1);
- OUT_RING(NV34TCL_RT_FORMAT_TYPE_LINEAR | NV34TCL_RT_FORMAT_ZETA_Z24S8 | NV34TCL_RT_FORMAT_COLOR_X8R8G8B8);
- BEGIN_RING(NvSub3D, NV34TCL_RT_ENABLE, 1);
- OUT_RING(0);
-
- BEGIN_RING(NvSub3D, 0x2bc, 1);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_CLIP_HORIZ(0), 1);
- OUT_RING((viewport_w-1)<<16);
- BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_CLIP_VERT(0), 1);
- OUT_RING((viewport_h-1)<<16);
- BEGIN_RING(NvSub3D, 0x1da4, 1);
- OUT_RING(0);
-
- BEGIN_RING(NvSub3D, NV34TCL_COLOR0_PITCH, 5);
- OUT_RING((screen_pitch<<16)|screen_pitch); /* zeta_pitch, color0_pitch */
- OUT_RING(screen_offset); /* color0_offset */
- OUT_RING(screen_offset); /* zeta_offset */
- OUT_RING(screen_offset); /* color1_offset */
- OUT_RING(screen_pitch); /* color1_pitch */
- BEGIN_RING(NvSub3D, NV34TCL_LMA_DEPTH_PITCH, 2);
- OUT_RING(screen_pitch);
- OUT_RING(screen_offset + viewport_w);
-
- BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_HORIZ, 2);
OUT_RING(viewport_w<<16);
OUT_RING(viewport_h<<16);
BEGIN_RING(NvSub3D, NV34TCL_SCISSOR_HORIZ, 2);
- OUT_RING(4096<<16);
+ OUT_RING(viewport_w<<16);
OUT_RING(viewport_h<<16);
BEGIN_RING(NvSub3D, NV34TCL_RT_HORIZ, 2);
OUT_RING(viewport_w<<16);
OUT_RING(viewport_h<<16);
- BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_TRANSLATE_X, 4);
- OUT_RINGf(0.0);
- OUT_RINGf(viewport_h * 1.0);
- OUT_RINGf(0.0);
- OUT_RINGf(0.0);
-
BEGIN_RING(NvSub3D, NV34TCL_RT_FORMAT, 1);
OUT_RING(NV34TCL_RT_FORMAT_TYPE_LINEAR | NV34TCL_RT_FORMAT_ZETA_Z24S8 | NV34TCL_RT_FORMAT_COLOR_X8R8G8B8);
BEGIN_RING(NvSub3D, NV34TCL_RT_ENABLE, 1);
OUT_RING(NV34TCL_RT_ENABLE_COLOR0);
- BEGIN_RING(NvSub3D, 0x2bc, 1);
- OUT_RING(0);
- BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_CLIP_HORIZ(0), 1);
- OUT_RING((viewport_w-1)<<16);
- BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_CLIP_VERT(0), 1);
- OUT_RING((viewport_h-1)<<16);
BEGIN_RING(NvSub3D, 0x1da4, 1);
OUT_RING(0);
@@ -557,7 +188,7 @@ beef1e00 NV30TCL.DMA_FENCE = NV01_MEMORY_LOCAL_BANKED
OUT_RING(screen_pitch); /* color1_pitch */
BEGIN_RING(NvSub3D, NV34TCL_LMA_DEPTH_PITCH, 2);
OUT_RING(screen_pitch);
- OUT_RING(screen_offset + viewport_w);
+ OUT_RING(screen_offset + viewport_w*(screen_bpp/8)); /* lma put on the right of color/zeta buffer */
BEGIN_RING(NvSub3D, 0x234, 1);
OUT_RING(3);
@@ -569,8 +200,6 @@ beef1e00 NV30TCL.DMA_FENCE = NV01_MEMORY_LOCAL_BANKED
BEGIN_RING(NvSub3D, NV34TCL_RC_ENABLE, 1);
OUT_RING(0);
- tcl_fp_color();
-
for (i=0; i<4; i++) {
BEGIN_RING(NvSub3D, NV34TCL_TX_ENABLE(i), 1);
OUT_RING(0);
@@ -697,9 +326,6 @@ beef1e00 NV30TCL.DMA_FENCE = NV01_MEMORY_LOCAL_BANKED
OUT_RING(0);
OUT_RING(0);
- BEGIN_RING(NvSub3D, 0x3b0, 1);
- OUT_RING(0x10<<16);
-
BEGIN_RING(NvSub3D, NV34TCL_TX_GEN_S(0), 32);
for (i=0; i<32; i++) {
OUT_RING(0);
@@ -726,17 +352,6 @@ beef1e00 NV30TCL.DMA_FENCE = NV01_MEMORY_LOCAL_BANKED
OUT_RINGf(viewport_h * 0.5);
OUT_RINGf(0.5);
OUT_RINGf(0.0);
- BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_TRANSLATE_X, 4);
- OUT_RINGf(viewport_w * 0.5);
- OUT_RINGf(viewport_h * 0.5);
- OUT_RINGf(0.5);
- OUT_RINGf(0.0);
-
- BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_SCALE_X, 4);
- OUT_RINGf(viewport_w * 0.5);
- OUT_RINGf(viewport_h * -0.5);
- OUT_RINGf(0.5);
- OUT_RINGf(0.0);
BEGIN_RING(NvSub3D, NV34TCL_VIEWPORT_SCALE_X, 4);
OUT_RINGf(viewport_w * 0.5);
OUT_RINGf(viewport_h * -0.5);
@@ -759,12 +374,16 @@ beef1e00 NV30TCL.DMA_FENCE = NV01_MEMORY_LOCAL_BANKED
OUT_RINGf(0.0);
OUT_RINGf(1.0);
+ BEGIN_RING(NvSub3D, NV34TCL_TX_UNITS_ENABLE, 1);
+ OUT_RING(0);
BEGIN_RING(NvSub3D, NV34TCL_TX_MATRIX_ENABLE(0), 8);
for (i=0; i<8; i++) {
OUT_RING(0);
}
- BEGIN_RING(NvSub3D, 0x1dac, 1);
+ tcl_fp_color();
+
+ /*BEGIN_RING(NvSub3D, 0x1dac, 1);
OUT_RING(0);
BEGIN_RING(NvSub3D, NV34TCL_VERTEX_BEGIN_END, 1);
@@ -784,214 +403,7 @@ beef1e00 NV30TCL.DMA_FENCE = NV01_MEMORY_LOCAL_BANKED
OUT_RINGf(1.0);
BEGIN_RING(NvSub3D, NV34TCL_VERTEX_BEGIN_END, 1);
- OUT_RING(NV34TCL_VERTEX_BEGIN_END_STOP);
-
- FIRE_RING();
-}
-
-void tcl_init_ddx(void)
-{
- int i;
-
- printf("-- TCL init, from ddx\n");
-
- SetSubchannel(NvSub3D, Nv3D);
- SetSubchannel(NvSubImageBlit, NvImageBlit);
-
- BEGIN_RING( NvSub3D, NV34TCL_DMA_TEXTURE0, 3);
- OUT_RING ( NvDmaFB);
- OUT_RING ( NvDmaTT);
- OUT_RING ( NvDmaFB);
- BEGIN_RING( NvSub3D, NV34TCL_DMA_IN_MEMORY7, 1);
- OUT_RING ( NvDmaFB);
- BEGIN_RING( NvSub3D, NV34TCL_DMA_COLOR0, 2);
- OUT_RING ( NvDmaFB);
- OUT_RING ( NvDmaFB);
- BEGIN_RING( NvSub3D, NV34TCL_DMA_IN_MEMORY8, 1);
- OUT_RING ( NvDmaFB);
-
- for (i=1; i<8; i++) {
- BEGIN_RING( NvSub3D, NV34TCL_VIEWPORT_CLIP_HORIZ(i), 2);
- OUT_RING ( 0);
- OUT_RING ( 0);
- }
-
- BEGIN_RING( NvSub3D, 0x220, 1);
- OUT_RING ( 1);
-
- BEGIN_RING( NvSub3D, 0x03b0, 1);
- OUT_RING ( 0x00100000);
- BEGIN_RING( NvSub3D, 0x1454, 1);
- OUT_RING ( 0);
- BEGIN_RING( NvSub3D, 0x1d80, 1);
- OUT_RING ( 3);
- BEGIN_RING( NvSub3D, 0x1450, 1);
- OUT_RING ( 0x00030004);
-
- /* NEW */
- BEGIN_RING( NvSub3D, 0x1e98, 1);
- OUT_RING ( 0);
- BEGIN_RING( NvSub3D, 0x17e0, 3);
- OUT_RING ( 0);
- OUT_RING ( 0);
- OUT_RING ( 0x3f800000);
- BEGIN_RING( NvSub3D, 0x1f80, 16);
- OUT_RING ( 0); OUT_RING ( 0); OUT_RING ( 0); OUT_RING ( 0);
- OUT_RING ( 0); OUT_RING ( 0); OUT_RING ( 0); OUT_RING ( 0);
- OUT_RING ( 0x0000ffff);
- OUT_RING ( 0); OUT_RING ( 0); OUT_RING ( 0); OUT_RING ( 0);
- OUT_RING ( 0); OUT_RING ( 0); OUT_RING ( 0);
-
- BEGIN_RING( NvSub3D, 0x120, 3);
- OUT_RING ( 0);
- OUT_RING ( 1);
- OUT_RING ( 2);
-
- BEGIN_RING( NvSubImageBlit, 0x120, 3);
- OUT_RING ( 0);
- OUT_RING ( 1);
- OUT_RING ( 2);
-
- BEGIN_RING( NvSub3D, 0x1d88, 1);
- OUT_RING ( 0x00001200);
-
- BEGIN_RING( NvSub3D, NV34TCL_RC_ENABLE, 1);
- OUT_RING ( 0);
-
- /* Attempt to setup a known state.. Probably missing a heap of
- * stuff here..
- */
- BEGIN_RING( NvSub3D, NV34TCL_STENCIL_FRONT_ENABLE, 1);
- OUT_RING ( 0);
- BEGIN_RING( NvSub3D, NV34TCL_STENCIL_BACK_ENABLE, 1);
- OUT_RING ( 0);
- BEGIN_RING( NvSub3D, NV34TCL_ALPHA_FUNC_ENABLE, 1);
- OUT_RING ( 0);
- BEGIN_RING( NvSub3D, NV34TCL_DEPTH_WRITE_ENABLE, 2);
- OUT_RING ( 0); /* wr disable */
- OUT_RING ( 0); /* test disable */
- BEGIN_RING( NvSub3D, NV34TCL_COLOR_MASK, 1);
- OUT_RING ( 0x01010101); /* TR,TR,TR,TR */
- BEGIN_RING( NvSub3D, NV34TCL_CULL_FACE_ENABLE, 1);
- OUT_RING ( 0);
- BEGIN_RING( NvSub3D, NV34TCL_BLEND_FUNC_ENABLE, 5);
- OUT_RING ( 0); /* Blend enable */
- OUT_RING ( 0); /* Blend src */
- OUT_RING ( 0); /* Blend dst */
- OUT_RING ( 0x00000000); /* Blend colour */
- OUT_RING ( 0x8006); /* FUNC_ADD */
- BEGIN_RING( NvSub3D, NV34TCL_COLOR_LOGIC_OP_ENABLE, 2);
- OUT_RING ( 0);
- OUT_RING ( 0x1503 /*GL_COPY*/);
- BEGIN_RING( NvSub3D, NV34TCL_DITHER_ENABLE, 1);
- OUT_RING ( 1);
- BEGIN_RING( NvSub3D, NV34TCL_SHADE_MODEL, 1);
- OUT_RING ( 0x1d01 /*GL_SMOOTH*/);
- BEGIN_RING( NvSub3D, NV34TCL_POLYGON_OFFSET_FACTOR,2);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- BEGIN_RING( NvSub3D, NV34TCL_POLYGON_MODE_FRONT, 2);
- OUT_RING ( 0x1b02 /*GL_FILL*/);
- OUT_RING ( 0x1b02 /*GL_FILL*/);
- /* - Disable texture units
- * - Set fragprog to MOVR result.color, fragment.color */
- for (i=0;i<4;i++) {
- BEGIN_RING( NvSub3D, NV34TCL_TX_ENABLE(i), 1);
- OUT_RING ( 0);
- }
- /* Polygon stipple */
- BEGIN_RING( NvSub3D, NV34TCL_POLYGON_STIPPLE_PATTERN(0), 0x20);
- for (i=0;i<0x20;i++)
- OUT_RING ( 0xFFFFFFFF);
-
- BEGIN_RING( NvSub3D, NV34TCL_DEPTH_RANGE_NEAR, 2);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 1.0);
-
- /* Ok. If you start X with the nvidia driver, kill it, and then
- * start X with nouveau you will get black rendering instead of
- * what you'd expect. This fixes the problem, and it seems that
- * it's not needed between nouveau restarts - which suggests that
- * the 3D context (wherever it's stored?) survives somehow.
- */
- //BEGIN_RING( NvSub3D, 0x1d60,1);
- //OUT_RING ( 0x03008000);
-
- int w=viewport_w;
- int h=viewport_h;
- int pitch=screen_pitch;
- BEGIN_RING( NvSub3D, NV34TCL_RT_HORIZ, 5);
- OUT_RING ( w<<16);
- OUT_RING ( h<<16);
- OUT_RING ( 0x148); /* format */
- OUT_RING ( pitch << 16 | pitch);
- OUT_RING ( 0x0);
- BEGIN_RING( NvSub3D, NV34TCL_VIEWPORT_TX_ORIGIN, 1);
- OUT_RING ( 0);
- BEGIN_RING( NvSub3D, 0x0a00, 2);
- OUT_RING ((w<<16) | 0);
- OUT_RING ((h<<16) | 0);
- BEGIN_RING( NvSub3D, NV34TCL_VIEWPORT_CLIP_HORIZ(0), 2);
- OUT_RING ((w-1)<<16);
- OUT_RING ((h-1)<<16);
- BEGIN_RING( NvSub3D, NV34TCL_SCISSOR_HORIZ, 2);
- OUT_RING ( w<<16);
- OUT_RING ( h<<16);
- BEGIN_RING( NvSub3D, NV34TCL_VIEWPORT_HORIZ, 2);
- OUT_RING ( w<<16);
- OUT_RING ( h<<16);
-
- BEGIN_RING( NvSub3D, NV34TCL_VIEWPORT_TRANSLATE_X, 8);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 1.0);
- OUT_RINGf ( 1.0);
- OUT_RINGf ( 1.0);
- OUT_RINGf ( 0.0);
-
- BEGIN_RING( NvSub3D, NV34TCL_MODELVIEW_MATRIX(0), 16);
- OUT_RINGf ( 1.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 1.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 1.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 1.0);
-
- BEGIN_RING( NvSub3D, NV34TCL_PROJECTION_MATRIX(0), 16);
- OUT_RINGf ( 1.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 1.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 1.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 0.0);
- OUT_RINGf ( 1.0);
-
- BEGIN_RING( NvSub3D, NV34TCL_SCISSOR_HORIZ, 2);
- OUT_RING ( 4096<<16);
- OUT_RING ( 4096<<16);
-
- tcl_fp_color();
+ OUT_RING(NV34TCL_VERTEX_BEGIN_END_STOP);*/
FIRE_RING();
}
diff --git a/tcl_init.h b/tcl_init.h
index eebfc84..b510d98 100644
--- a/tcl_init.h
+++ b/tcl_init.h
@@ -2,8 +2,6 @@
#define TCL_INIT_H
void tcl_init(void);
-void tcl_init_triangle(void);
-void tcl_init_ddx(void);
void tcl_clear(void);
diff --git a/tcl_triangle.c b/tcl_triangle.c
index 064de67..ba10027 100644
--- a/tcl_triangle.c
+++ b/tcl_triangle.c
@@ -25,11 +25,11 @@ void tcl_triangle_fixed(void)
OUT_RING(NV34TCL_VERTEX_BEGIN_END_TRIANGLES);
BEGIN_RING(NvSub3D, NV34TCL_VERTEX_DATA|METHOD_CONSTANT, 3*(4+3));
- OUT_RINGf(1.0); OUT_RINGf(0.0); OUT_RINGf(0.0); OUT_RINGf(1.0f);
+ OUT_RINGf(1.0); OUT_RINGf(1.0); OUT_RINGf(0.0); OUT_RINGf(0.0);
OUT_RINGf(1.0); OUT_RINGf(0.0); OUT_RINGf(0.0);
- OUT_RINGf(0.0); OUT_RINGf(1.0); OUT_RINGf(0.0); OUT_RINGf(1.0f);
+ OUT_RINGf(1.0); OUT_RINGf(1.0); OUT_RINGf(1.0); OUT_RINGf(0.0);
OUT_RINGf(0.0); OUT_RINGf(1.0); OUT_RINGf(0.0);
- OUT_RINGf(0.0); OUT_RINGf(0.0); OUT_RINGf(1.0); OUT_RINGf(1.0f);
+ OUT_RINGf(1.0); OUT_RINGf(0.0); OUT_RINGf(0.0); OUT_RINGf(1.0);
OUT_RINGf(0.0); OUT_RINGf(0.0); OUT_RINGf(1.0);
BEGIN_RING(NvSub3D, NV34TCL_VERTEX_BEGIN_END, 1);