[Mesa-dev] [PATCH] st/dri: Remove useless flush front.
Jose Fonseca
jfonseca at vmware.com
Wed Jan 11 05:10:08 PST 2012
Stephane,
Although flushing the front buffer may be unnecessary, flushing itself is not, as glXMakeCurrent mandates that the current must be flushed:
"Pending commands to the previous context, if any, are flushed before it is released."
So this flush call can only be removed, if a flush is done elsewhere in DRI shared code, otherwise rendering queued in that context may not happen.
Jose
----- Original Message -----
> In the following scenario:
> - CreateContext C1
> - MakeCurrent C1
> - DestroyContext C1 (does not actually destroy the first context,
> postponed
> until the next MakeCurrent)
> - CreateContext C2
> - MakeCurrent C2
>
> MakeCurrent will call flush on a context which might not even have
> had a front
> buffer, leading to crashes. Since none of the dri drivers use the
> flush in
> their unbind_context implementation either, we remove this useless
> flush front
> call.
>
> This fixes GPU crashes with Chrome and gallium drivers.
> ---
> .../state_trackers/dri/common/dri_context.c | 1 -
> 1 files changed, 0 insertions(+), 1 deletions(-)
>
> diff --git a/src/gallium/state_trackers/dri/common/dri_context.c
> b/src/gallium/state_trackers/dri/common/dri_context.c
> index b47d8d9..226c630 100644
> --- a/src/gallium/state_trackers/dri/common/dri_context.c
> +++ b/src/gallium/state_trackers/dri/common/dri_context.c
> @@ -188,7 +188,6 @@ dri_unbind_context(__DRIcontext * cPriv)
>
> if (--ctx->bind_count == 0) {
> if (ctx->st == ctx->stapi->get_current(ctx->stapi)) {
> - ctx->st->flush(ctx->st, ST_FLUSH_FRONT, NULL);
> stapi->make_current(stapi, NULL, NULL, NULL);
> }
> }
> --
> 1.7.5.3.367.ga9930
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
More information about the mesa-dev
mailing list