Merge branch 'gallium-edgeflags'
[mesa.git] / src / gallium / drivers / nv30 / nv30_context.h
index 5d7080a555dd5856df94ebb1a9c61b4cf246e2da..864ddaeb598eefb937c2bc7e1ddb482ecba99098 100644 (file)
@@ -4,11 +4,16 @@
 #include "pipe/p_context.h"
 #include "pipe/p_defines.h"
 #include "pipe/p_state.h"
+#include "pipe/p_compiler.h"
+
+#include "util/u_memory.h"
+#include "util/u_math.h"
 
 #include "draw/draw_vertex.h"
 
 #include "nouveau/nouveau_winsys.h"
 #include "nouveau/nouveau_gldefs.h"
+#include "nouveau/nouveau_context.h"
 
 #define NOUVEAU_PUSH_CONTEXT(ctx)                                              \
        struct nv30_screen *ctx = nv30->screen
@@ -114,17 +119,12 @@ struct nv30_context {
        /* HW state derived from pipe states */
        struct nv30_state state;
 
-       struct nv30_sampler_state *tex_sampler[PIPE_MAX_SAMPLERS];
-       struct nv30_miptree *tex_miptree[PIPE_MAX_SAMPLERS];
-       unsigned dirty_samplers;
-       unsigned fp_samplers;
-       unsigned vp_samplers;
-
        /* Context state */
        unsigned dirty;
        struct pipe_scissor_state scissor;
        unsigned stipple[32];
        struct nv30_vertex_program *vertprog;
+       struct nv30_fragment_program *fragprog;
        struct pipe_buffer *constbuf[PIPE_SHADER_TYPES];
        unsigned constbuf_nr[PIPE_SHADER_TYPES];
        struct nv30_rasterizer_state *rasterizer;
@@ -133,31 +133,17 @@ struct nv30_context {
        struct pipe_blend_color blend_colour;
        struct pipe_viewport_state viewport;
        struct pipe_framebuffer_state framebuffer;
+       struct pipe_buffer *idxbuf;
+       unsigned idxbuf_format;
+       struct nv30_sampler_state *tex_sampler[PIPE_MAX_SAMPLERS];
+       struct nv30_miptree *tex_miptree[PIPE_MAX_SAMPLERS];
        unsigned nr_samplers;
        unsigned nr_textures;
-
-       uint32_t rt_enable;
-       struct pipe_buffer *rt[2];
-       struct pipe_buffer *zeta;
-
-       /*struct {
-               struct pipe_buffer *buffer;
-               uint32_t format;
-       } tex[16];*/
-
-       unsigned vb_enable;
-       struct {
-               struct pipe_buffer *buffer;
-               unsigned delta;
-       } vb[16];
-
-       struct {
-               struct nv30_fragment_program *active;
-               struct nv30_fragment_program *current;
-       } fragprog;
-
-       struct pipe_vertex_buffer  vtxbuf[PIPE_MAX_ATTRIBS];
+       unsigned dirty_samplers;
+       struct pipe_vertex_buffer vtxbuf[PIPE_MAX_ATTRIBS];
+       unsigned vtxbuf_nr;
        struct pipe_vertex_element vtxelt[PIPE_MAX_ATTRIBS];
+       unsigned vtxelt_nr;
 };
 
 static INLINE struct nv30_context *
@@ -188,10 +174,6 @@ extern void nv30_vertprog_destroy(struct nv30_context *,
                                  struct nv30_vertex_program *);
 
 /* nv30_fragprog.c */
-extern void nv30_fragprog_translate(struct nv30_context *,
-                                   struct nv30_fragment_program *);
-extern void nv30_fragprog_bind(struct nv30_context *,
-                              struct nv30_fragment_program *);
 extern void nv30_fragprog_destroy(struct nv30_context *,
                                  struct nv30_fragment_program *);
 
@@ -200,11 +182,12 @@ extern void nv30_fragtex_bind(struct nv30_context *);
 
 /* nv30_state.c and friends */
 extern boolean nv30_state_validate(struct nv30_context *nv30);
-extern void nv30_emit_hw_state(struct nv30_context *nv30);
-extern void nv30_state_tex_update(struct nv30_context *nv30);
+extern void nv30_state_emit(struct nv30_context *nv30);
+extern void nv30_state_flush_notify(struct nouveau_channel *chan);
 extern struct nv30_state_entry nv30_state_rasterizer;
 extern struct nv30_state_entry nv30_state_scissor;
 extern struct nv30_state_entry nv30_state_stipple;
+extern struct nv30_state_entry nv30_state_fragprog;
 extern struct nv30_state_entry nv30_state_vertprog;
 extern struct nv30_state_entry nv30_state_blend;
 extern struct nv30_state_entry nv30_state_blend_colour;
@@ -212,6 +195,7 @@ extern struct nv30_state_entry nv30_state_zsa;
 extern struct nv30_state_entry nv30_state_viewport;
 extern struct nv30_state_entry nv30_state_framebuffer;
 extern struct nv30_state_entry nv30_state_fragtex;
+extern struct nv30_state_entry nv30_state_vbo;
 
 /* nv30_vbo.c */
 extern boolean nv30_draw_arrays(struct pipe_context *, unsigned mode,
@@ -223,7 +207,7 @@ extern boolean nv30_draw_elements(struct pipe_context *pipe,
                                  unsigned count);
 
 /* nv30_clear.c */
-extern void nv30_clear(struct pipe_context *pipe, struct pipe_surface *ps,
-                      unsigned clearValue);
+extern void nv30_clear(struct pipe_context *pipe, unsigned buffers,
+                      const float *rgba, double depth, unsigned stencil);
 
 #endif