Without hardware contexts, the pipeline statistics registers are
free-running and include data from every 3D application running.
In order to find out the contributions of one particular context, we
need to take a snapshot at the start and end of each batch.
Previously, we emitted the PIPE_CONTROL necessary to capture
PS_DEPTH_COUNT when drawing primitives. Special tracking ensured it
happened only on the first draw of the batch, rather than on every draw.
Moving this to brw_new_batch increases symmetry, since the final
snapshot has always been in brw_finish_batch, which is just a few lines
below. It should be basically equivalent.
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
brw_prepare_vertices(brw);
- brw_emit_query_begin(brw);
-
nr_elements = brw->vb.nr_enabled + brw->vs.prog_data->uses_vertexid;
/* If the VS doesn't read any inputs (calculating vertex position from
void
intel_batchbuffer_emit_render_ring_prelude(struct brw_context *brw)
{
+ /* Without hardware contexts, we need to capture the pipeline statistics
+ * registers at the start and end of each render ring batch, so we can see
+ * what that batch contributed. Emit state packets to write them to a BO.
+ */
+ brw_emit_query_begin(brw);
}
/**
static void
brw_finish_batch(struct brw_context *brw)
{
+ /* Capture the closing pipeline statistics register values necessary to
+ * support query objects (in the non-hardware context world).
+ */
brw_emit_query_end(brw);
if (brw->curbe.curbe_bo) {