* The driver doesn't decompress resources automatically while u_blitter is
* rendering. */
void si_decompress_subresource(struct pipe_context *ctx, struct pipe_resource *tex, unsigned planes,
- unsigned level, unsigned first_layer, unsigned last_layer)
+ unsigned level, unsigned first_layer, unsigned last_layer,
+ bool need_fmask_expand)
{
struct si_context *sctx = (struct si_context *)ctx;
struct si_texture *stex = (struct si_texture *)tex;
}
}
- si_blit_decompress_color(sctx, stex, level, level, first_layer, last_layer, false, false);
+ si_blit_decompress_color(sctx, stex, level, level, first_layer, last_layer, false,
+ need_fmask_expand);
}
}
/* The driver doesn't decompress resources automatically while
* u_blitter is rendering. */
si_decompress_subresource(ctx, src, PIPE_MASK_RGBAZS, src_level, src_box->z,
- src_box->z + src_box->depth - 1);
+ src_box->z + src_box->depth - 1, false);
util_blitter_default_dst_texture(&dst_templ, dst, dst_level, dstz);
util_blitter_default_src_texture(sctx->blitter, &src_templ, src, src_level);
vi_disable_dcc_if_incompatible_format(sctx, info->dst.resource, info->dst.level,
info->dst.format);
si_decompress_subresource(ctx, info->src.resource, PIPE_MASK_RGBAZS, info->src.level,
- info->src.box.z, info->src.box.z + info->src.box.depth - 1);
+ info->src.box.z, info->src.box.z + info->src.box.depth - 1,
+ false);
if (unlikely(sctx->thread_trace_enabled))
sctx->sqtt_next_event = EventCmdBlitImage;
/* The driver doesn't decompress resources automatically while
* u_blitter is rendering. */
vi_disable_dcc_if_incompatible_format(sctx, tex, base_level, format);
- si_decompress_subresource(ctx, tex, PIPE_MASK_RGBAZS, base_level, first_layer, last_layer);
+ si_decompress_subresource(ctx, tex, PIPE_MASK_RGBAZS, base_level, first_layer, last_layer,
+ false);
/* Clear dirty_level_mask for the levels that will be overwritten. */
assert(base_level < last_level);
void si_init_blit_functions(struct si_context *sctx);
void si_decompress_textures(struct si_context *sctx, unsigned shader_mask);
void si_decompress_subresource(struct pipe_context *ctx, struct pipe_resource *tex, unsigned planes,
- unsigned level, unsigned first_layer, unsigned last_layer);
+ unsigned level, unsigned first_layer, unsigned last_layer,
+ bool need_fmask_expand);
void si_resource_copy_region(struct pipe_context *ctx, struct pipe_resource *dst,
unsigned dst_level, unsigned dstx, unsigned dsty, unsigned dstz,
struct pipe_resource *src, unsigned src_level,