diff options
Diffstat (limited to 'tcl_triangle.c')
-rw-r--r-- | tcl_triangle.c | 54 |
1 files changed, 48 insertions, 6 deletions
diff --git a/tcl_triangle.c b/tcl_triangle.c index 44a6cc2..c0b212c 100644 --- a/tcl_triangle.c +++ b/tcl_triangle.c @@ -2,30 +2,72 @@ #include "screen.h" #include "object.h" +#include "fifo.h" #include "nouveau_class.h" -void tcl_triangle(void) +void tcl_triangle_fixed(void) { - printf("--TCL triangle\n"); + printf("--TCL triangle, fixed pipe\n"); SetSubchannel(NvSub3D, Nv3D); - BEGIN_RING(NvSub3D, NV34TCL_VTX_ATTR_3F_X(3), 3); - OUT_RINGf(1.0); - OUT_RINGf(1.0); - OUT_RINGf(1.0); + /* + 3 for pos + 4 for color0 + */ + BEGIN_RING(NvSub3D, NV34TCL_VTXFMT(0), 4); + OUT_RING((3<<NV34TCL_VTXFMT_SIZE_SHIFT)|NV34TCL_VTXFMT_TYPE_FLOAT); + OUT_RING(NV34TCL_VTXFMT_TYPE_FLOAT); + OUT_RING(NV34TCL_VTXFMT_TYPE_FLOAT); + OUT_RING((4<<NV34TCL_VTXFMT_SIZE_SHIFT)|NV34TCL_VTXFMT_TYPE_FLOAT); + + BEGIN_RING(NvSub3D, NV34TCL_VERTEX_BEGIN_END, 1); + 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(0.0); OUT_RINGf(0.0); + OUT_RINGf(0.0); OUT_RINGf(1.0); OUT_RINGf(0.0); OUT_RINGf(1.0f); + 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(0.0); OUT_RINGf(0.0); OUT_RINGf(1.0); + + BEGIN_RING(NvSub3D, NV34TCL_VERTEX_BEGIN_END, 1); + OUT_RING(NV34TCL_VERTEX_BEGIN_END_STOP); + + FIRE_RING(); +} + +void tcl_triangle_vtxattr(void) +{ + printf("--TCL triangle, vertex attribs\n"); + + SetSubchannel(NvSub3D, Nv3D); + /* set color, then pos */ BEGIN_RING(NvSub3D, NV34TCL_VERTEX_BEGIN_END, 1); OUT_RING(NV34TCL_VERTEX_BEGIN_END_TRIANGLES); + BEGIN_RING(NvSub3D, NV34TCL_VTX_ATTR_3F_X(3), 3); + OUT_RINGf(1.0); + OUT_RINGf(0.0); + OUT_RINGf(0.0); BEGIN_RING(NvSub3D, NV34TCL_VTX_ATTR_3F_X(0), 3); OUT_RINGf(1.0); OUT_RINGf(0.0); OUT_RINGf(0.0); + BEGIN_RING(NvSub3D, NV34TCL_VTX_ATTR_3F_X(3), 3); + OUT_RINGf(0.0); + OUT_RINGf(1.0); + OUT_RINGf(0.0); BEGIN_RING(NvSub3D, NV34TCL_VTX_ATTR_3F_X(0), 3); OUT_RINGf(0.0); OUT_RINGf(1.0); OUT_RINGf(0.0); + BEGIN_RING(NvSub3D, NV34TCL_VTX_ATTR_3F_X(3), 3); + OUT_RINGf(0.0); + OUT_RINGf(0.0); + OUT_RINGf(1.0); BEGIN_RING(NvSub3D, NV34TCL_VTX_ATTR_3F_X(0), 3); OUT_RINGf(0.0); OUT_RINGf(0.0); |