[Mesa-dev] [PATCH] swr: call swr_update_derived unconditionally when drawing/clearing
Cherniak, Bruce
bruce.cherniak at intel.com
Mon Nov 21 23:45:57 UTC 2016
Reviewed-by: Bruce Cherniak <bruce.cherniak at intel.com>
> On Nov 19, 2016, at 11:09 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>
> Currently a sequence like draw/map/draw/map will cause the second map to
> not wait for the second draw. This is because the first map will clear
> the resource business bit, and the second draw won't reset it since no
> state has changed.
>
> swr_update_derived does a tiny bit of extra work, including updating the
> SWR_BACKEND_STATE as well as waiting for prending fences. If that's a
> problem, we could call swr_update_resource_status directly from
> draw/clear handlers.
>
> Fixes clearbuffer-stencil, clearbuffer-depth, clearbuffer-depth-stencil,
> and clearbuffer-display-lists.
>
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> ---
> src/gallium/drivers/swr/swr_clear.cpp | 3 +--
> src/gallium/drivers/swr/swr_draw.cpp | 3 +--
> 2 files changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/src/gallium/drivers/swr/swr_clear.cpp b/src/gallium/drivers/swr/swr_clear.cpp
> index 7ac308e..f59179f 100644
> --- a/src/gallium/drivers/swr/swr_clear.cpp
> +++ b/src/gallium/drivers/swr/swr_clear.cpp
> @@ -40,8 +40,7 @@ swr_clear(struct pipe_context *pipe,
> if (!swr_check_render_cond(pipe))
> return;
>
> - if (ctx->dirty)
> - swr_update_derived(pipe);
> + swr_update_derived(pipe);
>
> if (buffers & PIPE_CLEAR_COLOR && fb->nr_cbufs) {
> for (unsigned i = 0; i < fb->nr_cbufs; ++i)
> diff --git a/src/gallium/drivers/swr/swr_draw.cpp b/src/gallium/drivers/swr/swr_draw.cpp
> index fc39f6f..c4d5e5c 100644
> --- a/src/gallium/drivers/swr/swr_draw.cpp
> +++ b/src/gallium/drivers/swr/swr_draw.cpp
> @@ -90,8 +90,7 @@ swr_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
> }
>
> /* Update derived state, pass draw info to update function */
> - if (ctx->dirty)
> - swr_update_derived(pipe, info);
> + swr_update_derived(pipe, info);
>
> swr_update_draw_context(ctx);
>
> --
> 2.7.3
>
More information about the mesa-dev
mailing list