Merge remote branch 'origin/7.8'
[mesa.git] / src / gallium / drivers / nv30 / nv30_context.h
index b3b26f7f94a12d25986e43b9a6095914519c7928..1786460aec10b9a4ad1274bfb39048c5834e170c 100644 (file)
@@ -61,7 +61,8 @@ enum nv30_state_index {
        NV30_STATE_VTXBUF = 31,
        NV30_STATE_VTXFMT = 32,
        NV30_STATE_VTXATTR = 33,
-       NV30_STATE_MAX = 34
+       NV30_STATE_SR = 34,
+       NV30_STATE_MAX = 35
 };
 
 #include "nv30_screen.h"
@@ -79,6 +80,7 @@ enum nv30_state_index {
 #define NV30_NEW_FRAGPROG      (1 << 10)
 #define NV30_NEW_ARRAYS                (1 << 11)
 #define NV30_NEW_UCP           (1 << 12)
+#define NV30_NEW_SR            (1 << 13)
 
 struct nv30_rasterizer_state {
        struct pipe_rasterizer_state pipe;
@@ -99,13 +101,17 @@ struct nv30_blend_state {
 struct nv30_state {
        unsigned scissor_enabled;
        unsigned stipple_enabled;
-       unsigned viewport_bypass;
        unsigned fp_samplers;
 
        uint64_t dirty;
        struct nouveau_stateobj *hw[NV30_STATE_MAX];
 };
 
+struct nv30_vtxelt_state {
+       struct pipe_vertex_element pipe[16];
+       unsigned num_elements;
+};
+
 struct nv30_context {
        struct pipe_context pipe;
 
@@ -129,6 +135,7 @@ struct nv30_context {
        struct nv30_zsa_state *zsa;
        struct nv30_blend_state *blend;
        struct pipe_blend_color blend_colour;
+       struct pipe_stencil_ref stencil_ref;
        struct pipe_viewport_state viewport;
        struct pipe_framebuffer_state framebuffer;
        struct pipe_buffer *idxbuf;
@@ -140,8 +147,7 @@ struct nv30_context {
        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;
+       struct nv30_vtxelt_state *vtxelt;
 };
 
 static INLINE struct nv30_context *
@@ -194,6 +200,7 @@ 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;
+extern struct nv30_state_entry nv30_state_sr;
 
 /* nv30_vbo.c */
 extern void nv30_draw_arrays(struct pipe_context *, unsigned mode,