[Mesa-dev] [PATCH] Revert "i965: Call intel_prepare_render() from intel_update_state()"

Tapani Pälli tapani.palli at intel.com
Thu Jul 20 07:58:20 UTC 2017


Works for Android-IA:
Tested-by: Tapani Pälli <tapani.palli at intel.com>

On 07/20/2017 09:00 AM, Kenneth Graunke wrote:
> This reverts commit b7153c3e9f9d2d430b0338313587a00e531e4800.
> 
> The point of that commit was to ensure intel_prepare_render() occurred
> before color resolves on the current framebuffer.  In 0673bbfd9ba16be8
> (i965: Move surface resolves back to draw/dispatch time), Jason moved
> brw_predraw_resolve_framebuffer back to draw time, which is already
> after a intel_prepare_render() call.  So, this is no longer necessary.
> 
> Furthermore, it caused problems.  "mpv" would only display a small
> corner of movies, and Android started failing camera CTS tests.
> 
> This is because intel_prepare_render() ended up handling DRI2 events
> which caused the drawable to be resized at an inopportune time, flagging
> ctx->NewState |= _NEW_BUFFERS, but at a point where we've already copied
> ctx->NewState, and failed to notice the newly set flag.
> 
> The lack of _NEW_BUFFERS caused us to skip 3DSTATE_DRAWING_RECTANGLE,
> so the drawing ended up being clipped to an outdated framebuffer size.
> 
> Just drop the hack and go back to handling this at the proper time.
> 
> Thanks to Matti Hämäläinen (ccr) and Tomasz Figa (tfiga) for reporting
> these issues.
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101558
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101704
> ---
>   src/mesa/drivers/dri/i965/brw_context.c | 2 --
>   1 file changed, 2 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
> index bd26e2332c7..102d7223a93 100644
> --- a/src/mesa/drivers/dri/i965/brw_context.c
> +++ b/src/mesa/drivers/dri/i965/brw_context.c
> @@ -194,8 +194,6 @@ intel_update_state(struct gl_context * ctx)
>      if (new_state & _NEW_POLYGON)
>         brw->polygon_front_bit = _mesa_polygon_get_front_bit(ctx);
>   
> -   intel_prepare_render(brw);
> -
>      if (new_state & _NEW_BUFFERS) {
>         intel_update_framebuffer(ctx, ctx->DrawBuffer);
>         if (ctx->DrawBuffer != ctx->ReadBuffer)
> 


More information about the mesa-dev mailing list