mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 08:10:09 +01:00
radeonsi: split texture decompression for compute shaders
Signed-off-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
e56514f631
commit
061ce9399a
4 changed files with 16 additions and 4 deletions
|
|
@ -374,7 +374,8 @@ si_decompress_image_color_textures(struct si_context *sctx,
|
|||
}
|
||||
}
|
||||
|
||||
void si_decompress_textures(struct si_context *sctx)
|
||||
static void si_decompress_textures(struct si_context *sctx, int shader_start,
|
||||
int shader_end)
|
||||
{
|
||||
unsigned compressed_colortex_counter;
|
||||
|
||||
|
|
@ -389,7 +390,7 @@ void si_decompress_textures(struct si_context *sctx)
|
|||
}
|
||||
|
||||
/* Flush depth textures which need to be flushed. */
|
||||
for (int i = 0; i < SI_NUM_SHADERS; i++) {
|
||||
for (int i = shader_start; i < shader_end; i++) {
|
||||
if (sctx->samplers[i].depth_texture_mask) {
|
||||
si_flush_depth_textures(sctx, &sctx->samplers[i]);
|
||||
}
|
||||
|
|
@ -402,6 +403,14 @@ void si_decompress_textures(struct si_context *sctx)
|
|||
}
|
||||
}
|
||||
|
||||
void si_decompress_graphics_textures(struct si_context *sctx) {
|
||||
si_decompress_textures(sctx, 0, SI_NUM_GRAPHICS_SHADERS);
|
||||
}
|
||||
|
||||
void si_decompress_compute_textures(struct si_context *sctx) {
|
||||
si_decompress_textures(sctx, SI_NUM_GRAPHICS_SHADERS, SI_NUM_SHADERS);
|
||||
}
|
||||
|
||||
static void si_clear(struct pipe_context *ctx, unsigned buffers,
|
||||
const union pipe_color_union *color,
|
||||
double depth, unsigned stencil)
|
||||
|
|
|
|||
|
|
@ -434,6 +434,8 @@ static void si_launch_grid(
|
|||
struct si_compute *program = sctx->cs_shader_state.program;
|
||||
int i;
|
||||
|
||||
si_decompress_compute_textures(sctx);
|
||||
|
||||
si_need_cs_space(sctx);
|
||||
|
||||
if (!sctx->cs_shader_state.initialized)
|
||||
|
|
|
|||
|
|
@ -339,7 +339,8 @@ void cik_sdma_copy(struct pipe_context *ctx,
|
|||
|
||||
/* si_blit.c */
|
||||
void si_init_blit_functions(struct si_context *sctx);
|
||||
void si_decompress_textures(struct si_context *sctx);
|
||||
void si_decompress_graphics_textures(struct si_context *sctx);
|
||||
void si_decompress_compute_textures(struct si_context *sctx);
|
||||
void si_resource_copy_region(struct pipe_context *ctx,
|
||||
struct pipe_resource *dst,
|
||||
unsigned dst_level,
|
||||
|
|
|
|||
|
|
@ -812,7 +812,7 @@ void si_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info)
|
|||
si_mark_atom_dirty(sctx, &sctx->framebuffer.atom);
|
||||
}
|
||||
|
||||
si_decompress_textures(sctx);
|
||||
si_decompress_graphics_textures(sctx);
|
||||
|
||||
/* Set the rasterization primitive type.
|
||||
*
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue