From 598cc1f74d7ae924e84dee801b456ab7b0b22f84 Mon Sep 17 00:00:00 2001 From: Marek Olšák Date: Fri, 21 Dec 2012 17:03:22 +0100 Subject: gallium: extend pipe_context::flush for it to accept an END_OF_FRAME flag MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Usage with pipe_context: pipe->flush(pipe, NULL, PIPE_FLUSH_END_OF_FRAME); Usage with st_context_iface: st->flush(st, ST_FLUSH_END_OF_FRAME, NULL); The flag is only a hint for drivers. Radeon will use it for buffer eviction heuristics in the kernel (e.g. for queries like how many frames have passed since a buffer was used). The flag is currently only generated by st/dri on SwapBuffers. Reviewed-by: Brian Paul Reviewed-by: Stéphane Marchesin --- src/gallium/state_trackers/dri/common/dri_drawable.c | 2 ++ src/gallium/state_trackers/dri/drm/dri2.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'src/gallium/state_trackers/dri') diff --git a/src/gallium/state_trackers/dri/common/dri_drawable.c b/src/gallium/state_trackers/dri/common/dri_drawable.c index ee4d11d1495..2ea54781d17 100644 --- a/src/gallium/state_trackers/dri/common/dri_drawable.c +++ b/src/gallium/state_trackers/dri/common/dri_drawable.c @@ -441,6 +441,8 @@ dri_flush(__DRIcontext *cPriv, flush_flags = 0; if (flags & __DRI2_FLUSH_CONTEXT) flush_flags |= ST_FLUSH_FRONT; + if (reason == __DRI2_THROTTLE_SWAPBUFFER) + flush_flags |= ST_FLUSH_END_OF_FRAME; /* Flush the context and throttle if needed. */ if (dri_screen(ctx->sPriv)->throttling_enabled && diff --git a/src/gallium/state_trackers/dri/drm/dri2.c b/src/gallium/state_trackers/dri/drm/dri2.c index 7f4f2f00c77..f8d311ca8fa 100644 --- a/src/gallium/state_trackers/dri/drm/dri2.c +++ b/src/gallium/state_trackers/dri/drm/dri2.c @@ -420,7 +420,7 @@ dri2_flush_frontbuffer(struct dri_context *ctx, struct pipe_context *pipe = ctx->st->pipe; dri_msaa_resolve(ctx, drawable, ST_ATTACHMENT_FRONT_LEFT); - pipe->flush(pipe, NULL); + pipe->flush(pipe, NULL, 0); } if (loader->flushFrontBuffer) { -- cgit v1.2.3