diff options
author | Luca Barbieri <luca@luca-barbieri.com> | 2010-02-23 16:48:22 +0100 |
---|---|---|
committer | Luca Barbieri <luca@luca-barbieri.com> | 2010-04-12 12:21:25 +0200 |
commit | 330925d9118120863f5e76e01fdfa1a1f44be2b1 (patch) | |
tree | feb63f5237b7d1cc2cd8ff8a0f3f90774c030cb9 /src/gallium/drivers/nvfx/nvfx_state.c | |
parent | 26e40448becb07e292d269dc4d8fbc56caebba3c (diff) |
nvfx: rework validation logic to use code and avoid stateobjs
This makes the code faster due to the lack of indirect calls and also
makes it much easier to understand what is actually going on.
Diffstat (limited to 'src/gallium/drivers/nvfx/nvfx_state.c')
-rw-r--r-- | src/gallium/drivers/nvfx/nvfx_state.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/gallium/drivers/nvfx/nvfx_state.c b/src/gallium/drivers/nvfx/nvfx_state.c index 4053f28a65..0f03c2eb3d 100644 --- a/src/gallium/drivers/nvfx/nvfx_state.c +++ b/src/gallium/drivers/nvfx/nvfx_state.c @@ -303,6 +303,23 @@ nvfx_rasterizer_state_bind(struct pipe_context *pipe, void *hwcso) { struct nvfx_context *nvfx = nvfx_context(pipe); + if(nvfx->rasterizer && hwcso) + { + if(!nvfx->rasterizer || ((struct nvfx_rasterizer_state*)hwcso)->pipe.scissor + != nvfx->rasterizer->pipe.scissor) + { + nvfx->dirty |= NVFX_NEW_SCISSOR; + nvfx->draw_dirty |= NVFX_NEW_SCISSOR; + } + + if(((struct nvfx_rasterizer_state*)hwcso)->pipe.poly_stipple_enable + != nvfx->rasterizer->pipe.poly_stipple_enable) + { + nvfx->dirty |= NVFX_NEW_STIPPLE; + nvfx->draw_dirty |= NVFX_NEW_STIPPLE; + } + } + nvfx->rasterizer = hwcso; nvfx->dirty |= NVFX_NEW_RAST; nvfx->draw_dirty |= NVFX_NEW_RAST; |