From 76360d6abc9e0195bc5c373101ae616e68b2e6e6 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Tue, 9 Nov 2010 13:30:27 -0800 Subject: intel: Fix the client-side swapbuffers throttling. We were asking for a wait to GTT read (all GPU rendering to it complete), instead of asking for all GPU reading from it to be complete. Prevents swapbuffers-based apps from running away with rendering, and produces a better input experience. --- src/mesa/drivers/dri/intel/intel_context.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c index de4bcde20b6..60c401b75bc 100644 --- a/src/mesa/drivers/dri/intel/intel_context.c +++ b/src/mesa/drivers/dri/intel/intel_context.c @@ -470,7 +470,11 @@ intel_prepare_render(struct intel_context *intel) * so we just us the first batch we emitted after the last swap. */ if (intel->need_throttle && intel->first_post_swapbuffers_batch) { - drm_intel_bo_wait_rendering(intel->first_post_swapbuffers_batch); + /* Can't use drm_intel_bo_wait_rendering, since that only waits + * for rendering *to* the buffer, not from it. + */ + drm_intel_gem_bo_map_gtt(intel->first_post_swapbuffers_batch); + drm_intel_gem_bo_unmap_gtt(intel->first_post_swapbuffers_batch); drm_intel_bo_unreference(intel->first_post_swapbuffers_batch); intel->first_post_swapbuffers_batch = NULL; intel->need_throttle = GL_FALSE; -- cgit v1.2.3