diff options
author | Michel Dänzer <michel.daenzer@amd.com> | 2014-02-13 11:51:09 +0900 |
---|---|---|
committer | Michel Daenzer <michel@daenzer.net> | 2014-02-18 10:46:23 +0900 |
commit | cf0172d46ab940a691da6516057c81f28961482f (patch) | |
tree | ad7d1487d75730537f9d8fdf8a085f076a9e77cb /src/gallium/drivers/radeon | |
parent | adad8fb2e947e3ea9e9d84cb3722e46de91346e4 (diff) | |
download | external_mesa3d-cf0172d46ab940a691da6516057c81f28961482f.zip external_mesa3d-cf0172d46ab940a691da6516057c81f28961482f.tar.gz external_mesa3d-cf0172d46ab940a691da6516057c81f28961482f.tar.bz2 |
r600g,radeonsi: Consolidate logic for short-circuiting flushes
Fixes radeonsi emitting command streams to the kernel even when there
have been no draw calls before a flush, potentially powering up the GPU
needlessly.
Incidentally, this also cuts the runtime of piglit gpu.py in about half
on my Kaveri system, probably because an X11 client going away no longer
always results in a command stream being submitted to the kernel via
glamor.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=65761
Cc: "10.1" mesa-stable@lists.freedesktop.org
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Diffstat (limited to 'src/gallium/drivers/radeon')
-rw-r--r-- | src/gallium/drivers/radeon/r600_buffer_common.c | 2 | ||||
-rw-r--r-- | src/gallium/drivers/radeon/r600_pipe_common.h | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/src/gallium/drivers/radeon/r600_buffer_common.c b/src/gallium/drivers/radeon/r600_buffer_common.c index 068141c..e75b337 100644 --- a/src/gallium/drivers/radeon/r600_buffer_common.c +++ b/src/gallium/drivers/radeon/r600_buffer_common.c @@ -60,7 +60,7 @@ void *r600_buffer_map_sync_with_rings(struct r600_common_context *ctx, rusage = RADEON_USAGE_WRITE; } - if (ctx->rings.gfx.cs->cdw && + if (ctx->rings.gfx.cs->cdw != ctx->initial_gfx_cs_size && ctx->ws->cs_is_buffer_referenced(ctx->rings.gfx.cs, resource->cs_buf, rusage)) { if (usage & PIPE_TRANSFER_DONTBLOCK) { diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h b/src/gallium/drivers/radeon/r600_pipe_common.h index 2fbc6a3..d604f65 100644 --- a/src/gallium/drivers/radeon/r600_pipe_common.h +++ b/src/gallium/drivers/radeon/r600_pipe_common.h @@ -241,6 +241,7 @@ struct r600_common_context { enum radeon_family family; enum chip_class chip_class; struct r600_rings rings; + unsigned initial_gfx_cs_size; struct u_upload_mgr *uploader; struct u_suballocator *allocator_so_filled_size; |