summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorRob Clark <[email protected]>2014-10-23 08:50:50 -0400
committerRob Clark <[email protected]>2014-10-23 10:46:51 -0400
commit4f1fec60608b37ec8f271c09227d8cc6f5093535 (patch)
treeeb4d0310e04c0793dd856be0c92c135e3a34cb0f /src/gallium
parent6eabc119367f637be37d106851d9e90b1d3f07f9 (diff)
Revert "freedreno/a3xx: only emit dirty consts"
This reverts commit 94bb33617d1e8978dc52b8aaa4eb41bfb6703f79. Which somehow broke gnome-shell.. and needs more investigation. For now, revert..
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/freedreno/a3xx/fd3_draw.c10
-rw-r--r--src/gallium/drivers/freedreno/a3xx/fd3_emit.c4
2 files changed, 5 insertions, 9 deletions
diff --git a/src/gallium/drivers/freedreno/a3xx/fd3_draw.c b/src/gallium/drivers/freedreno/a3xx/fd3_draw.c
index 0fb0625bfa5..c4e3d8dffe2 100644
--- a/src/gallium/drivers/freedreno/a3xx/fd3_draw.c
+++ b/src/gallium/drivers/freedreno/a3xx/fd3_draw.c
@@ -136,21 +136,14 @@ fd3_draw(struct fd_context *ctx, const struct pipe_draw_info *info)
},
.rasterflat = ctx->rasterizer && ctx->rasterizer->flatshade,
};
- uint32_t dirty, vconst;
+ unsigned dirty;
fixup_shader_state(ctx, &emit.key);
- /* save/restore vertex const state too, so that vertex
- * shader consts also get emitted for render pass:
- */
- vconst = ctx->constbuf[PIPE_SHADER_VERTEX].dirty_mask;
-
dirty = ctx->dirty;
emit.dirty = dirty & ~(FD_DIRTY_BLEND);
draw_impl(ctx, ctx->binning_ring, &emit);
- ctx->constbuf[PIPE_SHADER_VERTEX].dirty_mask = vconst;
-
/* and now regular (non-binning) pass: */
emit.key.binning_pass = false;
emit.dirty = dirty;
@@ -337,7 +330,6 @@ fd3_clear(struct fd_context *ctx, unsigned buffers,
fd3_emit_vertex_bufs(ring, &emit);
- ctx->constbuf[PIPE_SHADER_FRAGMENT].dirty_mask = ~0;
fd3_emit_constant(ring, SB_FRAG_SHADER, 0, 0, 4, color->ui, NULL);
OUT_PKT0(ring, REG_A3XX_PC_PRIM_VTX_CNTL, 1);
diff --git a/src/gallium/drivers/freedreno/a3xx/fd3_emit.c b/src/gallium/drivers/freedreno/a3xx/fd3_emit.c
index 5bf41b171fa..e22a5ba7df5 100644
--- a/src/gallium/drivers/freedreno/a3xx/fd3_emit.c
+++ b/src/gallium/drivers/freedreno/a3xx/fd3_emit.c
@@ -93,6 +93,10 @@ emit_constants(struct fd_ringbuffer *ring,
uint32_t first_immediate;
uint32_t base = 0;
+ // XXX TODO only emit dirty consts.. but we need to keep track if
+ // they are clobbered by a clear, gmem2mem, or mem2gmem..
+ constbuf->dirty_mask = enabled_mask;
+
/* in particular, with binning shader we may end up with unused
* consts, ie. we could end up w/ constlen that is smaller
* than first_immediate. In that case truncate the user consts