diff options
author | Patrice Mandin <pmandin@caramail.com> | 2008-08-23 18:09:59 +0200 |
---|---|---|
committer | Patrice Mandin <pmandin@caramail.com> | 2008-08-23 18:09:59 +0200 |
commit | 53b624e8e2eef07358eed4457b6467eca701076a (patch) | |
tree | 4d5c1ff2ba5e00f2c79182e34c4211b625601142 | |
parent | b2ac9af464a5690761ac982eaa5082e09b4207e7 (diff) |
Add fixed pipe triangle, still no rendering
-rw-r--r-- | main.c | 5 | ||||
-rw-r--r-- | tcl_triangle.c | 54 | ||||
-rw-r--r-- | tcl_triangle.h | 3 |
3 files changed, 54 insertions, 8 deletions
@@ -40,9 +40,12 @@ int main(int argc, char **argv) tcl_init(); fflush(stdout); - tcl_triangle(); + tcl_triangle_fixed(); fflush(stdout); + /*tcl_triangle_vtxattr(); + fflush(stdout);*/ + printf("coincoin\n"); screen_close(); 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); diff --git a/tcl_triangle.h b/tcl_triangle.h index 14560ef..dfd4ada 100644 --- a/tcl_triangle.h +++ b/tcl_triangle.h @@ -1,5 +1,6 @@ #ifndef TCL_TRIANGLE_H -void tcl_triangle(void); +void tcl_triangle_fixed(void); +void tcl_triangle_vtxattr(void); #endif |