[Mesa-dev] [PATCH 1/3] gallium/radeon: add separate stencil level dirty flags

Michel Dänzer michel at daenzer.net
Wed Sep 9 01:07:31 PDT 2015


On 07.09.2015 07:17, Marek Olšák wrote:
> From: Marek Olšák <marek.olsak at amd.com>
> 
> We will only do depth-only or stencil-only decompress blits, whichever is
> needed by textures, instead of always doing both.
> ---
>  src/gallium/drivers/r600/evergreen_state.c    | 4 ++--
>  src/gallium/drivers/r600/r600_state_common.c  | 3 +++
>  src/gallium/drivers/radeon/r600_pipe_common.h | 1 +
>  src/gallium/drivers/radeonsi/cik_sdma.c       | 4 ++--
>  src/gallium/drivers/radeonsi/si_dma.c         | 4 ++--
>  src/gallium/drivers/radeonsi/si_state_draw.c  | 3 +++
>  6 files changed, 13 insertions(+), 6 deletions(-)
> 
> diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c
> index 6f4cb55..8ecc498 100644
> --- a/src/gallium/drivers/r600/evergreen_state.c
> +++ b/src/gallium/drivers/r600/evergreen_state.c
> @@ -3372,11 +3372,11 @@ static void evergreen_dma_copy(struct pipe_context *ctx,
>  	}
>  
>  	if (src->format != dst->format || src_box->depth > 1 ||
> -	    rdst->dirty_level_mask != 0) {
> +	    (rdst->dirty_level_mask | rdst->stencil_dirty_level_mask) & (1 << dst_level)) {
>  		goto fallback;
>  	}
>  
> -	if (rsrc->dirty_level_mask) {
> +	if ((rsrc->dirty_level_mask | rsrc->stencil_dirty_level_mask) & (1 << src_level)) {
>  		ctx->flush_resource(ctx, src);
>  	}

AFAICT ctx->flush_resource only decompresses colour resources, so is the
second change really necessary? Same in si_dma_copy().


With that fixed, or if it's correct as is,

Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer


More information about the mesa-dev mailing list