diff options
author | Patrice Mandin <pmandin@caramail.com> | 2008-08-30 19:25:06 +0200 |
---|---|---|
committer | Patrice Mandin <pmandin@caramail.com> | 2008-08-30 19:25:06 +0200 |
commit | a7ebfd32122bba6f22d6b22ea3af9f78526ffb11 (patch) | |
tree | c2a7c5b16940ab4c5b78af7cdcb6aef0723747bb | |
parent | 42a5ec67c93a57d3a65d30e8827b0ddb668d2c8c (diff) |
Cleanup
-rw-r--r-- | main.c | 10 | ||||
-rw-r--r-- | tcl_init.c | 616 | ||||
-rw-r--r-- | tcl_init.h | 2 | ||||
-rw-r--r-- | tcl_triangle.c | 6 |
4 files changed, 20 insertions, 614 deletions
@@ -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"); @@ -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(); } @@ -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); |