[Mesa-dev] [PATCH 1/8] i965: Directly call intel_batchbuffer_flush() after i915 split.
Kenneth Graunke
kenneth at whitecape.org
Tue Aug 27 17:00:33 PDT 2013
On 08/27/2013 03:21 PM, Eric Anholt wrote:
> intel_flush() now did nothing except call through (and
> intel_batchbuffer_flush() does the no-op check, too!)
> ---
> src/mesa/drivers/dri/i965/gen6_blorp.cpp | 4 +---
> src/mesa/drivers/dri/i965/intel_buffer_objects.c | 2 +-
> src/mesa/drivers/dri/i965/intel_context.c | 17 ++++-------------
> src/mesa/drivers/dri/i965/intel_context.h | 3 ---
> src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 3 +--
> src/mesa/drivers/dri/i965/intel_pixel_copy.c | 3 ++-
> src/mesa/drivers/dri/i965/intel_syncobj.c | 2 +-
> 7 files changed, 10 insertions(+), 24 deletions(-)
Series is:
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
When running glxgears with INTEL_DEBUG=bat (and batch decoding turned
off) on master, I see this:
intel_context.c:366: Batchbuffer flush with 5388b (pkt) + 3424b (state)
= 8812b (26.9%)
intel_screen.c:165: Batchbuffer flush with 748b (pkt) + 448b (state) =
1196b (3.6%)
gen6_blorp.cpp:57: Batchbuffer flush with 16b (pkt) + 0b (state) =
16b (0.0%)
gen6_blorp.cpp:57: Batchbuffer flush with 740b (pkt) + 160b (state) =
900b (2.7%)
......repeating......
Which is pretty ridiculous...a 16 byte batch? Really? And we have to
switch to the kernel to execbuffer that. The others aren't much better.
With this series, we get a single batch per frame:
intel_screen.c:176: Batchbuffer flush with 6940b (pkt) + 4096b (state) =
11036b (33.7%)
......repeating......
Clearly much better. Every other application I've looked at sees
similar benefits - much better batch utilization, much fewer tiny batches.
--Ken
More information about the mesa-dev
mailing list