summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrice Mandin <pmandin@caramail.com>2008-08-23 18:09:59 +0200
committerPatrice Mandin <pmandin@caramail.com>2008-08-23 18:09:59 +0200
commit53b624e8e2eef07358eed4457b6467eca701076a (patch)
tree4d5c1ff2ba5e00f2c79182e34c4211b625601142
parentb2ac9af464a5690761ac982eaa5082e09b4207e7 (diff)
Add fixed pipe triangle, still no rendering
-rw-r--r--main.c5
-rw-r--r--tcl_triangle.c54
-rw-r--r--tcl_triangle.h3
3 files changed, 54 insertions, 8 deletions
diff --git a/main.c b/main.c
index 66aa0d7..6098d14 100644
--- a/main.c
+++ b/main.c
@@ -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