r300-gallium: Calculate vert shader inputs for HW TCL.
authorCorbin Simpson <MostAwesomeDude@gmail.com>
Sat, 4 Apr 2009 09:38:13 +0000 (02:38 -0700)
committerCorbin Simpson <MostAwesomeDude@gmail.com>
Sat, 4 Apr 2009 09:38:13 +0000 (02:38 -0700)
This is definitely not perfect.

src/gallium/drivers/r300/r300_state_derived.c

index 0e7a2b6726f9137fcf5b7175f68624e5c6b4fea4..2f34698e359f8db49ff31625a2a53481293dcb15 100644 (file)
@@ -30,9 +30,9 @@
  * The vertex_info struct describes the post-TCL format of vertices. It is
  * required for Draw when doing SW TCL, and also for describing the
  * dreaded RS block on R300 chipsets. */
-/* XXX this function should be able to handle vert shaders as well as draw */
 static void r300_update_vertex_layout(struct r300_context* r300)
 {
+    struct r300_screen* r300screen = r300_screen(r300->context.screen);
     struct r300_vertex_format vformat;
     struct vertex_info vinfo;
     boolean pos = FALSE, psize = FALSE, fog = FALSE;
@@ -74,6 +74,13 @@ static void r300_update_vertex_layout(struct r300_context* r300)
         }
     }
 
+    if (r300screen->caps->has_tcl) {
+        for (i = 0; i < info->num_inputs; i++) {
+            /* XXX should probably do real lookup with vert shader */
+            tab[i] = i;
+        }
+    }
+
     /* Do the actual vertex_info setup.
      *
      * vertex_info has four uints of hardware-specific data in it.