summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/freedreno/freedreno_context.h
diff options
context:
space:
mode:
authorRob Clark <[email protected]>2017-04-21 11:31:20 -0400
committerRob Clark <[email protected]>2017-04-22 10:03:02 -0400
commit935623af141930db8cbe1089e448cde4066da114 (patch)
treec427926a58365ce0ed4aa54395e687f650b987dd /src/gallium/drivers/freedreno/freedreno_context.h
parentdf63ff4d8248d81ecb8d0f3059bf2c67431e6f2f (diff)
freedreno: a bit of query refactor
Move a bit more of the logic shared by all query types (active tracking, etc) into common code. This avoids introducing a 3rd copy of that logic for a5xx. Signed-off-by: Rob Clark <[email protected]>
Diffstat (limited to 'src/gallium/drivers/freedreno/freedreno_context.h')
-rw-r--r--src/gallium/drivers/freedreno/freedreno_context.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/gallium/drivers/freedreno/freedreno_context.h b/src/gallium/drivers/freedreno/freedreno_context.h
index fe685e1767d..041e2260561 100644
--- a/src/gallium/drivers/freedreno/freedreno_context.h
+++ b/src/gallium/drivers/freedreno/freedreno_context.h
@@ -381,8 +381,21 @@ fd_batch_set_stage(struct fd_batch *batch,
struct fd_ringbuffer *ring, enum fd_render_stage stage)
{
struct fd_context *ctx = batch->ctx;
+
+ /* special case: internal blits (like mipmap level generation)
+ * go through normal draw path (via util_blitter_blit()).. but
+ * we need to ignore the FD_STAGE_DRAW which will be set, so we
+ * don't enable queries which should be paused during internal
+ * blits:
+ */
+ if ((batch->stage == FD_STAGE_BLIT) &&
+ (stage != FD_STAGE_NULL))
+ return;
+
if (ctx->query_set_stage)
ctx->query_set_stage(batch, ring, stage);
+
+ batch->stage = stage;
}
void fd_context_setup_common_vbos(struct fd_context *ctx);