FD_DIRTY_PROG = BIT(16),
FD_DIRTY_CONST = BIT(17),
FD_DIRTY_TEX = BIT(18),
+ FD_DIRTY_IMAGE = BIT(19),
+ FD_DIRTY_SSBO = BIT(20),
/* only used by a2xx.. possibly can be removed.. */
- FD_DIRTY_TEXSTATE = BIT(19),
+ FD_DIRTY_TEXSTATE = BIT(21),
};
/* per shader-stage dirty state: */
struct fd_context {
struct pipe_context base;
+ struct list_head node; /* node in screen->context_list */
+
/* We currently need to serialize emitting GMEM batches, because of
* VSC state access in the context.
*
*/
bool update_active_queries;
+ /* Current state of pctx->set_active_query_state() (i.e. "should drawing
+ * be counted against non-perfcounter queries")
+ */
+ bool active_queries;
+
/* table with PIPE_PRIM_MAX entries mapping PIPE_PRIM_x to
* DI_PT_x value to use for draw initiator. There are some
* slight differences between generation:
/* handling for barriers: */
void (*framebuffer_barrier)(struct fd_context *ctx);
+ /* logger: */
+ void (*record_timestamp)(struct fd_ringbuffer *ring, struct fd_bo *bo, unsigned offset);
+ uint64_t (*ts_to_ns)(uint64_t ts);
+
+ struct list_head log_chunks; /* list of flushed log chunks in fifo order */
+ unsigned frame_nr; /* frame counter (for fd_log) */
+ FILE *log_out;
+
/*
* Common pre-cooked VBO state (used for a3xx and later):
*/
{
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)
- stage = FD_STAGE_BLIT;
-
if (ctx->query_set_stage)
ctx->query_set_stage(batch, stage);