nvfx: move declarations before code to silence warnings
[mesa.git] / src / gallium / drivers / r300 / r300_vs.h
index 67e9db5366fd9ad6a85eeea5c859d1091f606773..56bcc3b70b8e6f69982a182ef0eb201c5a01dd42 100644 (file)
@@ -28,6 +28,7 @@
 #include "tgsi/tgsi_scan.h"
 #include "radeon_code.h"
 
+#include "r300_context.h"
 #include "r300_shader_semantics.h"
 
 struct r300_context;
@@ -38,19 +39,35 @@ struct r300_vertex_shader {
 
     struct tgsi_shader_info info;
     struct r300_shader_semantics outputs;
-    uint hwfmt[4];
+    struct r300_vap_output_state vap_out;
+
+    /* Whether the shader was replaced by a dummy one due to a shader
+     * compilation failure. */
+    boolean dummy;
+
+    /* Numbers of constants for each type. */
+    unsigned externals_count;
+    unsigned immediates_count;
 
     /* Stream locations for SWTCL or if TCL is bypassed. */
     int stream_loc_notcl[16];
 
-    /* Has this shader been translated yet? */
-    boolean translated;
+    /* Output stream location for WPOS. */
+    int wpos_tex_output;
 
+    /* HWTCL-specific.  */
     /* Machine code (if translated) */
     struct r300_vertex_program_code code;
+
+    /* SWTCL-specific. */
+    void *draw_vs;
 };
 
 void r300_translate_vertex_shader(struct r300_context* r300,
-                                  struct r300_vertex_shader* vs);
+                                  struct r300_vertex_shader* vs,
+                                  const struct tgsi_token *tokens);
+
+/* Return TRUE if VAP (hwfmt) needs to be re-emitted. */
+boolean r300_vertex_shader_setup_wpos(struct r300_context* r300);
 
 #endif /* R300_VS_H */