iris: print binder utilization in INTEL_DEBUG=submit

This commit is contained in:
Kenneth Graunke
2018-06-17 22:22:03 -07:00
parent f8179dc760
commit 432790bacd
4 changed files with 10 additions and 8 deletions

View File

@@ -431,12 +431,14 @@ _iris_batch_flush_fence(struct iris_batch *batch,
if (unlikely(INTEL_DEBUG & (DEBUG_BATCH | DEBUG_SUBMIT))) {
int bytes_for_commands = batch_bytes_used(batch);
int bytes_for_binder = batch->binder.insert_point;
if (batch->bo != batch->exec_bos[0])
bytes_for_commands += batch->primary_batch_size;
fprintf(stderr, "%19s:%-3d: Batchbuffer flush with %5db (%0.1f%%), "
"%4d BOs (%0.1fMb aperture)\n",
fprintf(stderr, "%19s:%-3d: Batchbuffer flush with %5db (%0.1f%%) "
"(cmds), %5db (%0.1f%%) (binder), %4d BOs (%0.1fMb aperture)\n",
file, line,
bytes_for_commands, 100.0f * bytes_for_commands / BATCH_SZ,
bytes_for_binder, 100.0f * bytes_for_binder / IRIS_BINDER_SIZE,
batch->exec_count,
(float) batch->aperture_space / (1024 * 1024));
dump_validation_list(batch);

View File

@@ -27,9 +27,6 @@
#include "iris_bufmgr.h"
#include "iris_context.h"
/* 64kb */
#define BINDER_SIZE (64 * 1024)
/**
* Reserve a block of space in the binder.
*/
@@ -44,13 +41,13 @@ iris_binder_reserve(struct iris_batch *batch, unsigned size)
/* If we can't fit all stages in the binder, flush the batch which
* will cause us to gain a new empty binder.
*/
if (binder->insert_point + size > BINDER_SIZE)
if (binder->insert_point + size > IRIS_BINDER_SIZE)
iris_batch_flush(batch);
uint32_t offset = binder->insert_point;
/* It had better fit now. */
assert(offset + size <= BINDER_SIZE);
assert(offset + size <= IRIS_BINDER_SIZE);
binder->insert_point = align(binder->insert_point + size, 64);
@@ -97,7 +94,7 @@ void
iris_init_binder(struct iris_binder *binder, struct iris_bufmgr *bufmgr)
{
binder->bo =
iris_bo_alloc(bufmgr, "binder", BINDER_SIZE, IRIS_MEMZONE_BINDER);
iris_bo_alloc(bufmgr, "binder", IRIS_BINDER_SIZE, IRIS_MEMZONE_BINDER);
binder->map = iris_bo_map(NULL, binder->bo, MAP_WRITE);
binder->insert_point = INIT_INSERT_POINT;
}

View File

@@ -33,6 +33,8 @@ struct iris_batch;
struct iris_bufmgr;
struct iris_compiled_shader;
#define IRIS_BINDER_SIZE (64 * 1024)
struct iris_binder
{
struct iris_bo *bo;

View File

@@ -63,6 +63,7 @@ iris_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info)
IRIS_DIRTY_BINDINGS_FS;
}
// XXX: don't do this unless things are dirty...
iris_binder_reserve_3d(batch, ice->shaders.prog);
ice->vtbl.upload_render_state(ice, batch, info);