summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/nvc0/nvc0_surface.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/nvc0/nvc0_surface.c')
-rw-r--r--src/gallium/drivers/nvc0/nvc0_surface.c10
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;
}