diff options
author | Samuel Pitoiset <[email protected]> | 2017-06-14 13:55:12 +0200 |
---|---|---|
committer | Samuel Pitoiset <[email protected]> | 2017-06-18 14:10:38 +0200 |
commit | 6ff6863c329434cfc3d1424db7ca0f614eff63fd (patch) | |
tree | 78974b9450953e6c0a6fddecfef6a2c71e757b9a /src/gallium/drivers/radeonsi/si_blit.c | |
parent | 06ed251c328ebf5c635b972b14039165077d05df (diff) |
radeonsi: reduce overhead for resident textures which need color decompression
This is done by introducing a separate list.
si_decompress_textures() is now 5x faster.
Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeonsi/si_blit.c')
-rw-r--r-- | src/gallium/drivers/radeonsi/si_blit.c | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/src/gallium/drivers/radeonsi/si_blit.c b/src/gallium/drivers/radeonsi/si_blit.c index 06a99fbc8a2..b240c4d355e 100644 --- a/src/gallium/drivers/radeonsi/si_blit.c +++ b/src/gallium/drivers/radeonsi/si_blit.c @@ -693,18 +693,13 @@ static void si_check_render_feedback(struct si_context *sctx) static void si_decompress_resident_textures(struct si_context *sctx) { - util_dynarray_foreach(&sctx->resident_tex_handles, + util_dynarray_foreach(&sctx->resident_tex_needs_color_decompress, struct si_texture_handle *, tex_handle) { struct pipe_sampler_view *view = (*tex_handle)->view; - struct si_sampler_view *sview = (struct si_sampler_view *)view; struct r600_texture *tex = (struct r600_texture *)view->texture; - if (view->texture->target == PIPE_BUFFER) - continue; - - if ((*tex_handle)->needs_color_decompress) - si_decompress_color_texture(sctx, tex, view->u.tex.first_level, - view->u.tex.last_level); + si_decompress_color_texture(sctx, tex, view->u.tex.first_level, + view->u.tex.last_level); } util_dynarray_foreach(&sctx->resident_tex_needs_depth_decompress, @@ -722,17 +717,13 @@ static void si_decompress_resident_textures(struct si_context *sctx) static void si_decompress_resident_images(struct si_context *sctx) { - util_dynarray_foreach(&sctx->resident_img_handles, + util_dynarray_foreach(&sctx->resident_img_needs_color_decompress, struct si_image_handle *, img_handle) { struct pipe_image_view *view = &(*img_handle)->view; struct r600_texture *tex = (struct r600_texture *)view->resource; - if (view->resource->target == PIPE_BUFFER) - continue; - - if ((*img_handle)->needs_color_decompress) - si_decompress_color_texture(sctx, tex, view->u.tex.level, - view->u.tex.level); + si_decompress_color_texture(sctx, tex, view->u.tex.level, + view->u.tex.level); } } |