[Mesa-dev] [PATCH 5/5] r600g: Invalidate texture cache when creating vertex buffers for compute
Marek Olšák
maraeo at gmail.com
Mon Sep 17 14:35:29 PDT 2012
On Mon, Sep 17, 2012 at 11:09 PM, Tom Stellard <tom at stellard.net> wrote:
> From: Tom Stellard <thomas.stellard at amd.com>
>
> Compute shaders fetch data from vertex buffers via the texture cache, so
> we need to make sure the texture cache is flushed.
> ---
> src/gallium/drivers/r600/evergreen_compute.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/src/gallium/drivers/r600/evergreen_compute.c b/src/gallium/drivers/r600/evergreen_compute.c
> index 2749b05..e5396d8 100644
> --- a/src/gallium/drivers/r600/evergreen_compute.c
> +++ b/src/gallium/drivers/r600/evergreen_compute.c
> @@ -96,7 +96,10 @@ static void evergreen_cs_set_vertex_buffer(
> vb->buffer = buffer;
> vb->user_buffer = NULL;
>
> - rctx->flags |= rctx->has_vertex_cache ? R600_CONTEXT_VTX_FLUSH : R600_CONTEXT_TEX_FLUSH;
> + /* The vertex instructions in the compute shaders use the texture cache,
> + * so we need to invalid it. */
> + rctx->flags |= rctx->has_vertex_cache | R600_CONTEXT_VTX_FLUSH
> + | R600_CONTEXT_TEX_FLUSH;
Here you combine the has_vertex_cache bool variable with the context
flush flags. That doesn't look right. I think you wanted to do (if I
understand correctly):
ctx->flags |= R600_CONTEXT_TEX_FLUSH;
Other than that, this series is:
Reviewed-by: Marek Olšák <maraeo at gmail.com>
Marek
More information about the mesa-dev
mailing list