[Mesa-dev] [PATCH] r600: refactor out some compressed resource state code.

Glenn Kennard glenn.kennard at gmail.com
Mon Jun 5 19:47:59 UTC 2017


On Mon, 05 Jun 2017 05:35:02 +0200, Dave Airlie <airlied at gmail.com> wrote:

> From: Dave Airlie <airlied at redhat.com>
>
> This just takes this out to a separate function as it will
> get more complex with images.
> ---
>  src/gallium/drivers/r600/r600_state_common.c | 52 +++++++++++++++-------------
>  1 file changed, 28 insertions(+), 24 deletions(-)
>
> diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c
> index 3b24f36..8ace779 100644
> --- a/src/gallium/drivers/r600/r600_state_common.c
> +++ b/src/gallium/drivers/r600/r600_state_common.c
> @@ -1400,6 +1400,32 @@ static void r600_generate_fixed_func_tcs(struct r600_context *rctx)
>  		ureg_create_shader_and_destroy(ureg, &rctx->b.b);
>  }
>+static void r600_update_compressed_resource_state(struct r600_context *rctx)
> +{
> +	unsigned i;
> +	unsigned counter;
> +
> +	counter = p_atomic_read(&rctx->screen->b.compressed_colortex_counter);
> +	if (counter != rctx->b.last_compressed_colortex_counter) {
> +		rctx->b.last_compressed_colortex_counter = counter;
> +
> +		for (i = 0; i < PIPE_SHADER_TYPES; ++i) {
> +			r600_update_compressed_colortex_mask(&rctx->samplers[i].views);
> +		}
> +	}
> +
> +	/* Decompress textures if needed. */
> +	for (i = 0; i < PIPE_SHADER_TYPES; i++) {
> +		struct r600_samplerview_state *views = &rctx->samplers[i].views;
> +		if (views->compressed_depthtex_mask) {
> +			r600_decompress_depth_textures(rctx, views);
> +		}
> +		if (views->compressed_colortex_mask) {
> +			r600_decompress_color_textures(rctx, views);
> +		}
> +	}
> +}
> +
>  #define SELECT_SHADER_OR_FAIL(x) do {					\
>  		r600_shader_select(ctx, rctx->x##_shader, &x##_dirty);	\
>  		if (unlikely(!rctx->x##_shader->current))		\
> @@ -1440,30 +1466,8 @@ static bool r600_update_derived_state(struct r600_context *rctx)
>  	bool need_buf_const;
>  	struct r600_pipe_shader *clip_so_current = NULL;
>-	if (!rctx->blitter->running) {
> -		unsigned i;
> -		unsigned counter;
> -
> -		counter = p_atomic_read(&rctx->screen->b.compressed_colortex_counter);
> -		if (counter != rctx->b.last_compressed_colortex_counter) {
> -			rctx->b.last_compressed_colortex_counter = counter;
> -
> -			for (i = 0; i < PIPE_SHADER_TYPES; ++i) {
> -				r600_update_compressed_colortex_mask(&rctx->samplers[i].views);
> -			}
> -		}
> -
> -		/* Decompress textures if needed. */
> -		for (i = 0; i < PIPE_SHADER_TYPES; i++) {
> -			struct r600_samplerview_state *views = &rctx->samplers[i].views;
> -			if (views->compressed_depthtex_mask) {
> -				r600_decompress_depth_textures(rctx, views);
> -			}
> -			if (views->compressed_colortex_mask) {
> -				r600_decompress_color_textures(rctx, views);
> -			}
> -		}
> -	}
> +	if (!rctx->blitter->running)
> +		r600_update_compressed_resource_state(rctx);
> 	SELECT_SHADER_OR_FAIL(ps);
>

Patch series is Reviewed-by: Glenn Kennard <glenn.kennard at gmail.com>


More information about the mesa-dev mailing list