diff options
Diffstat (limited to 'src/gallium/drivers/nvc0/nvc0_surface.c')
-rw-r--r-- | src/gallium/drivers/nvc0/nvc0_surface.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/gallium/drivers/nvc0/nvc0_surface.c b/src/gallium/drivers/nvc0/nvc0_surface.c index 77330c52ac5..cd4e3a75dc1 100644 --- a/src/gallium/drivers/nvc0/nvc0_surface.c +++ b/src/gallium/drivers/nvc0/nvc0_surface.c @@ -472,6 +472,7 @@ struct nvc0_blitctx enum pipe_texture_target target; struct { struct pipe_framebuffer_state fb; + struct nvc0_rasterizer_stateobj *rast; struct nvc0_program *vp; struct nvc0_program *tcp; struct nvc0_program *tep; @@ -483,6 +484,7 @@ struct nvc0_blitctx struct nv50_tsc_entry *sampler[2]; uint32_t dirty; } saved; + struct nvc0_rasterizer_stateobj rast; }; static void @@ -701,12 +703,16 @@ nvc0_blitctx_pre_blit(struct nvc0_blitctx *ctx) ctx->saved.fb.cbufs[0] = nvc0->framebuffer.cbufs[0]; ctx->saved.fb.zsbuf = nvc0->framebuffer.zsbuf; + ctx->saved.rast = nvc0->rast; + ctx->saved.vp = nvc0->vertprog; ctx->saved.tcp = nvc0->tctlprog; ctx->saved.tep = nvc0->tevlprog; ctx->saved.gp = nvc0->gmtyprog; ctx->saved.fp = nvc0->fragprog; + nvc0->rast = &ctx->rast; + nvc0->vertprog = &blitter->vp; nvc0->tctlprog = NULL; nvc0->tevlprog = NULL; @@ -760,6 +766,8 @@ nvc0_blitctx_post_blit(struct nvc0_blitctx *blit) nvc0->framebuffer.cbufs[0] = blit->saved.fb.cbufs[0]; nvc0->framebuffer.zsbuf = blit->saved.fb.zsbuf; + nvc0->rast = blit->saved.rast; + nvc0->vertprog = blit->saved.vp; nvc0->tctlprog = blit->saved.tcp; nvc0->tevlprog = blit->saved.tep; @@ -1182,6 +1190,8 @@ nvc0_blitctx_create(struct nvc0_context *nvc0) nvc0->blit->nvc0 = nvc0; + nvc0->blit->rast.pipe.gl_rasterization_rules = 1; + return TRUE; } |