summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPatrice Mandin <[email protected]>2008-07-03 22:31:23 +0200
committerPatrice Mandin <[email protected]>2008-07-03 22:31:23 +0200
commite7e231a5116aed9f1ca685a297032a3e3e6a2433 (patch)
treed45751a8c306955a673050d4bdbee43657354ec7 /src
parentf1d24c1d27255e4ff5ba451e6d58558f9ccdc801 (diff)
nv30: Emit polygon stipple state using state objects
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/nv30/nv30_context.h10
-rw-r--r--src/gallium/drivers/nv30/nv30_state.c4
-rw-r--r--src/gallium/drivers/nv30/nv30_state_emit.c1
3 files changed, 8 insertions, 7 deletions
diff --git a/src/gallium/drivers/nv30/nv30_context.h b/src/gallium/drivers/nv30/nv30_context.h
index 2a48903e32a..ed7b0759ad4 100644
--- a/src/gallium/drivers/nv30/nv30_context.h
+++ b/src/gallium/drivers/nv30/nv30_context.h
@@ -112,9 +112,6 @@ struct nv30_context {
/* HW state derived from pipe states */
struct nv30_state state;
- struct pipe_scissor_state scissor;
-
- uint32_t dirty;
struct nv30_sampler_state *tex_sampler[PIPE_MAX_SAMPLERS];
struct nv30_miptree *tex_miptree[PIPE_MAX_SAMPLERS];
@@ -123,13 +120,15 @@ struct nv30_context {
unsigned vp_samplers;
/* Context state */
+ unsigned dirty;
+ struct pipe_scissor_state scissor;
+ unsigned stipple[32];
struct nv30_rasterizer_state *rasterizer;
+ struct nv30_zsa_state *zsa;
struct nv30_blend_state *blend;
struct pipe_blend_color blend_colour;
struct pipe_viewport_state viewport;
struct pipe_framebuffer_state framebuffer;
- struct nv30_zsa_state *zsa;
- unsigned stipple[32];
uint32_t rt_enable;
struct pipe_buffer *rt[2];
@@ -212,6 +211,7 @@ extern void nv30_emit_hw_state(struct nv30_context *nv30);
extern void nv30_state_tex_update(struct nv30_context *nv30);
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_blend;
extern struct nv30_state_entry nv30_state_blend_colour;
extern struct nv30_state_entry nv30_state_zsa;
diff --git a/src/gallium/drivers/nv30/nv30_state.c b/src/gallium/drivers/nv30/nv30_state.c
index f2413a3372c..7109deae552 100644
--- a/src/gallium/drivers/nv30/nv30_state.c
+++ b/src/gallium/drivers/nv30/nv30_state.c
@@ -597,8 +597,8 @@ nv30_set_polygon_stipple(struct pipe_context *pipe,
{
struct nv30_context *nv30 = nv30_context(pipe);
- BEGIN_RING(rankine, NV34TCL_POLYGON_STIPPLE_PATTERN(0), 32);
- OUT_RINGp ((uint32_t *)stipple->stipple, 32);
+ memcpy(nv30->stipple, stipple->stipple, 4 * 32);
+ nv30->dirty |= NV30_NEW_STIPPLE;
}
static void
diff --git a/src/gallium/drivers/nv30/nv30_state_emit.c b/src/gallium/drivers/nv30/nv30_state_emit.c
index f45a340b5d6..4f9079184d4 100644
--- a/src/gallium/drivers/nv30/nv30_state_emit.c
+++ b/src/gallium/drivers/nv30/nv30_state_emit.c
@@ -5,6 +5,7 @@ static struct nv30_state_entry *render_states[] = {
&nv30_state_framebuffer,
&nv30_state_rasterizer,
&nv30_state_scissor,
+ &nv30_state_stipple,
&nv30_state_blend,
&nv30_state_blend_colour,
&nv30_state_zsa,