Mesa (main): crocus: fixup render aux usage function.
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jun 16 03:56:13 UTC 2021
Module: Mesa
Branch: main
Commit: 2a540877d13f7f7cae247de44e03219e70da732f
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2a540877d13f7f7cae247de44e03219e70da732f
Author: Dave Airlie <airlied at redhat.com>
Date: Wed Jun 16 13:35:11 2021 +1000
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: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11409>
---
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,
More information about the mesa-commit
mailing list