Module: Mesa Branch: master Commit: 71704794750578cd90b4ba4ed7aaf66eb1744424 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=71704794750578cd90b4ba4ed7aaf66eb1744424
Author: Nanley Chery <[email protected]> Date: Mon Dec 14 11:10:02 2020 -0800 iris: Keep aux_usage in iris_blorp_surf_for_resource Avoid the surprising behavior of overriding the aux usage for depth resources. Reviewed-by: Kenneth Graunke <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8853> --- src/gallium/drivers/iris/iris_blit.c | 13 ++++++------- src/gallium/drivers/iris/iris_clear.c | 15 +++++++++------ 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/gallium/drivers/iris/iris_blit.c b/src/gallium/drivers/iris/iris_blit.c index a15a006e8c8..b7a3cf3d4ac 100644 --- a/src/gallium/drivers/iris/iris_blit.c +++ b/src/gallium/drivers/iris/iris_blit.c @@ -240,10 +240,6 @@ iris_blorp_surf_for_resource(struct isl_device *isl_dev, assert(!iris_resource_unfinished_aux_import(res)); - if (isl_aux_usage_has_hiz(aux_usage) && - !iris_resource_level_has_hiz(res, level)) - aux_usage = ISL_AUX_USAGE_NONE; - *surf = (struct blorp_surf) { .surf = &res->surf, .addr = (struct blorp_address) { @@ -550,6 +546,7 @@ iris_blit(struct pipe_context *ctx, const struct pipe_blit_info *info) static void get_copy_region_aux_settings(struct iris_context *ice, struct iris_resource *res, + unsigned level, enum isl_aux_usage *out_aux_usage, bool *out_clear_supported, bool is_render_target) @@ -563,7 +560,9 @@ get_copy_region_aux_settings(struct iris_context *ice, case ISL_AUX_USAGE_HIZ_CCS_WT: case ISL_AUX_USAGE_STC_CCS: if (is_render_target) { - *out_aux_usage = res->aux.usage; + *out_aux_usage = iris_resource_render_aux_usage(ice, res, level, + res->surf.format, + false); } else { *out_aux_usage = iris_resource_texture_aux_usage(ice, res, res->surf.format); @@ -630,9 +629,9 @@ iris_copy_region(struct blorp_context *blorp, enum isl_aux_usage src_aux_usage, dst_aux_usage; bool src_clear_supported, dst_clear_supported; - get_copy_region_aux_settings(ice, src_res, &src_aux_usage, + get_copy_region_aux_settings(ice, src_res, src_level, &src_aux_usage, &src_clear_supported, false); - get_copy_region_aux_settings(ice, dst_res, &dst_aux_usage, + get_copy_region_aux_settings(ice, dst_res, dst_level, &dst_aux_usage, &dst_clear_supported, true); if (iris_batch_references(batch, src_res->bo)) diff --git a/src/gallium/drivers/iris/iris_clear.c b/src/gallium/drivers/iris/iris_clear.c index 69c459848b7..0fc468aaa39 100644 --- a/src/gallium/drivers/iris/iris_clear.c +++ b/src/gallium/drivers/iris/iris_clear.c @@ -573,11 +573,14 @@ clear_depth_stencil(struct iris_context *ice, } if (clear_depth && z_res) { - iris_resource_prepare_depth(ice, batch, z_res, level, box->z, box->depth); + const enum isl_aux_usage aux_usage = + iris_resource_render_aux_usage(ice, z_res, level, z_res->surf.format, + false); + iris_resource_prepare_render(ice, z_res, level, box->z, box->depth, + aux_usage); iris_emit_buffer_barrier_for(batch, z_res->bo, IRIS_DOMAIN_DEPTH_WRITE); - iris_blorp_surf_for_resource(&batch->screen->isl_dev, - &z_surf, &z_res->base, z_res->aux.usage, - level, true); + iris_blorp_surf_for_resource(&batch->screen->isl_dev, &z_surf, + &z_res->base, aux_usage, level, true); } uint8_t stencil_mask = clear_stencil && stencil_res ? 0xff : 0; @@ -611,8 +614,8 @@ clear_depth_stencil(struct iris_context *ice, "cache history: post slow ZS clear"); if (clear_depth && z_res) { - iris_resource_finish_depth(ice, z_res, level, - box->z, box->depth, true); + iris_resource_finish_render(ice, z_res, level, box->z, box->depth, + z_surf.aux_usage); } if (stencil_mask) { _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
