summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland Scheidegger <sroland@vmware.com>2015-07-11 20:03:27 +0200
committerRoland Scheidegger <sroland@vmware.com>2015-07-16 03:07:07 +0200
commit882476fea3ba4fdd05d21582eeb968f84523fb9a (patch)
tree7b6094991f0c49cefc730f7097ba4ba7468b1fc5
parent26c1361ac386bd5b108d79289a3f82d15b01d014 (diff)
radeon/r200: mark state atoms as dirty after blits
Blit submits lots of packets which are usually handled by state atoms, so these must be dirtied. Not sure if this fixes anything, but it was a concern raised by bug 51658 (with this all issues there seen as actual bugs should be fixed, with the exception of the patch to upload non-used texenv state atoms which I just don't understand). Acked-by: Marek Olšák <marek.olsak@amd.com>
-rw-r--r--src/mesa/drivers/dri/r200/r200_blit.c16
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_blit.c8
2 files changed, 24 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/r200/r200_blit.c b/src/mesa/drivers/dri/r200/r200_blit.c
index 3adc69423cd..0e6afa0d481 100644
--- a/src/mesa/drivers/dri/r200/r200_blit.c
+++ b/src/mesa/drivers/dri/r200/r200_blit.c
@@ -547,5 +547,21 @@ unsigned r200_blit(struct gl_context *ctx,
radeonFlush(ctx);
+ /* We submitted those packets outside our state atom mechanism. Thus
+ * make sure the atoms are resubmitted the next time. */
+ r200->hw.cst.dirty = GL_TRUE;
+ r200->hw.ctx.dirty = GL_TRUE;
+ r200->hw.vap.dirty = GL_TRUE;
+ r200->hw.msk.dirty = GL_TRUE;
+ r200->hw.pix[0].dirty = GL_TRUE;
+ r200->hw.pix[1].dirty = GL_TRUE;
+ r200->hw.pix[2].dirty = GL_TRUE;
+ r200->hw.pix[3].dirty = GL_TRUE;
+ r200->hw.sci.dirty = GL_TRUE;
+ r200->hw.set.dirty = GL_TRUE;
+ r200->hw.tex[0].dirty = GL_TRUE;
+ r200->hw.vte.dirty = GL_TRUE;
+ r200->hw.vtx.dirty = GL_TRUE;
+
return GL_TRUE;
}
diff --git a/src/mesa/drivers/dri/radeon/radeon_blit.c b/src/mesa/drivers/dri/radeon/radeon_blit.c
index 0de17514e05..028e8b04bf6 100644
--- a/src/mesa/drivers/dri/radeon/radeon_blit.c
+++ b/src/mesa/drivers/dri/radeon/radeon_blit.c
@@ -425,5 +425,13 @@ unsigned r100_blit(struct gl_context *ctx,
radeonFlush(ctx);
+ /* We submitted those packets outside our state atom mechanism. Thus
+ * make sure they are all resubmitted the next time. */
+ r100->hw.ctx.dirty = GL_TRUE;
+ r100->hw.msk.dirty = GL_TRUE;
+ r100->hw.set.dirty = GL_TRUE;
+ r100->hw.tex[0].dirty = GL_TRUE;
+ r100->hw.txr[0].dirty = GL_TRUE;
+
return GL_TRUE;
}