[Mesa-dev] [PATCH] i965: Move hiz resolve to after renderbuffer resizing (v2)

Paul Berry stereotype441 at gmail.com
Wed Aug 22 14:48:15 PDT 2012


On 20 August 2012 16:13, Chad Versace <chad.versace at linux.intel.com> wrote:

> Do all pre-draw hiz resolves *after* the renderbuffers are resized by
> intel_prepare_render. Otherwise, we may resolve buffers that are
> immediately discarded afterwards.
>
> Fixes the assertion failure below when resizing windows in KDE and under
> some unknown circumstance in Chrome OS:
>     intel_resolve_map.c:46: intel_resolve_map_set: Assertion
>     `(*tail)->need == need' failed.
>
> Also, remove the comment that "resolves must occur [...] before setting up
> any hardware state". That was true when resolves were implemented with
> meta-ops, but no longer with blorp.
>
> v2:
>   - Keep brw_predraw_resolve_buffers in its current position, which is
>     before any brw_context bits are modified. Instead, move the
>     intel_prepare_render.
>
> CC: Paul Berry <stereotype441 at gmail.com>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=52252
> Reported-by: Lu Hua <huax.lu at intel.com>
> Signed-off-by: Chad Versace <chad.versace at linux.intel.com>
> ---
>

Reviewed-by: Paul Berry <stereotype441 at gmail.com>


>  src/mesa/drivers/dri/i965/brw_draw.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_draw.c
> b/src/mesa/drivers/dri/i965/brw_draw.c
> index 7ae3f6f..b335e96 100644
> --- a/src/mesa/drivers/dri/i965/brw_draw.c
> +++ b/src/mesa/drivers/dri/i965/brw_draw.c
> @@ -432,8 +432,11 @@ static bool brw_try_draw_prims( struct gl_context
> *ctx,
>      */
>     brw_validate_textures( brw );
>
> -   /* Resolves must occur after updating state and finalizing textures but
> -    * before setting up any hardware state for this draw call.
> +   intel_prepare_render(intel);
> +
> +   /* Resolves must occur after updating renderbuffers, updating context
> state,
> +    * and finalizing textures but before setting up any hardware state for
> +    * this draw call.
>      */
>     brw_predraw_resolve_buffers(brw);
>
> @@ -455,8 +458,6 @@ static bool brw_try_draw_prims( struct gl_context *ctx,
>      * so can't access it earlier.
>      */
>
> -   intel_prepare_render(intel);
> -
>     for (i = 0; i < nr_prims; i++) {
>        int estimated_max_prim_size;
>
> --
> 1.7.11.4
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20120822/589e3472/attachment.html>


More information about the mesa-dev mailing list