From 2a540877d13f7f7cae247de44e03219e70da732f Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 16 Jun 2021 13:35:11 +1000 Subject: [PATCH] crocus: fixup render aux usage function. This got misaligned somewhere in development, should fix the regressions vs i965 in tesseract as seen on phoronix benchmarks. Part-of: --- src/gallium/drivers/crocus/crocus_clear.c | 3 +-- src/gallium/drivers/crocus/crocus_resolve.c | 11 ++++++++--- src/gallium/drivers/crocus/crocus_resource.h | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/crocus/crocus_clear.c b/src/gallium/drivers/crocus/crocus_clear.c index 1c56e23f794..8ea21d9d227 100644 --- a/src/gallium/drivers/crocus/crocus_clear.c +++ b/src/gallium/drivers/crocus/crocus_clear.c @@ -362,8 +362,7 @@ clear_color(struct crocus_context *ice, bool color_write_disable[4] = { false, false, false, false }; enum isl_aux_usage aux_usage = - crocus_resource_render_aux_usage(ice, res, format, - false, false); + crocus_resource_render_aux_usage(ice, res, level, format, false); crocus_resource_prepare_render(ice, res, level, box->z, box->depth, aux_usage); diff --git a/src/gallium/drivers/crocus/crocus_resolve.c b/src/gallium/drivers/crocus/crocus_resolve.c index a38eb4a94a7..ae9334a0b5f 100644 --- a/src/gallium/drivers/crocus/crocus_resolve.c +++ b/src/gallium/drivers/crocus/crocus_resolve.c @@ -279,8 +279,8 @@ crocus_predraw_resolve_framebuffer(struct crocus_context *ice, crocus_update_align_res(batch, surf, true); enum isl_aux_usage aux_usage = - crocus_resource_render_aux_usage(ice, res, surf->view.format, - ice->state.blend_enables & (1u << i), + crocus_resource_render_aux_usage(ice, res, surf->view.base_level, + surf->view.format, draw_aux_buffer_disabled[i]); if (ice->state.draw_aux_usage[i] != aux_usage) { @@ -984,8 +984,8 @@ crocus_resource_prepare_texture(struct crocus_context *ice, enum isl_aux_usage crocus_resource_render_aux_usage(struct crocus_context *ice, struct crocus_resource *res, + uint32_t level, enum isl_format render_format, - bool blend_enabled, bool draw_aux_disabled) { struct crocus_screen *screen = (void *) ice->ctx.screen; @@ -1005,6 +1005,11 @@ crocus_resource_render_aux_usage(struct crocus_context *ice, return ISL_AUX_USAGE_NONE; + case ISL_AUX_USAGE_HIZ: + assert(render_format == res->surf.format); + return crocus_resource_level_has_hiz(res, level) ? + res->aux.usage : ISL_AUX_USAGE_NONE; + default: return ISL_AUX_USAGE_NONE; } diff --git a/src/gallium/drivers/crocus/crocus_resource.h b/src/gallium/drivers/crocus/crocus_resource.h index 505bf0ad41e..725732cf109 100644 --- a/src/gallium/drivers/crocus/crocus_resource.h +++ b/src/gallium/drivers/crocus/crocus_resource.h @@ -497,8 +497,8 @@ bool crocus_has_color_unresolved(const struct crocus_resource *res, enum isl_aux_usage crocus_resource_render_aux_usage(struct crocus_context *ice, struct crocus_resource *res, + uint32_t level, enum isl_format render_fmt, - bool blend_enabled, bool draw_aux_disabled); void crocus_resource_prepare_render(struct crocus_context *ice, struct crocus_resource *res, uint32_t level,