Mesa (master): iris: Remove the CCS_D fallback
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Jun 19 21:15:53 UTC 2020
Module: Mesa
Branch: master
Commit: fbbf79377bcad0ed51d00a7d7e981375f8c29d54
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=fbbf79377bcad0ed51d00a7d7e981375f8c29d54
Author: Nanley Chery <nanley.g.chery at intel.com>
Date: Mon Jun 1 08:48:56 2020 -0700
iris: Remove the CCS_D fallback
Remove the CCS_D fallback logic so that iris doesn't attempt to use a
non-existent surface state for some renders. Also, add an assertion to
catch the issue.
The fallback in iris_resource_render_aux_usage can lead to this problem
because it doesn't account for the fact that surface states created from
resources with the Y_TILED_CCS modifier may only have CCS_E or NONE as
aux usages (due to iris_resource_create_with_modifiers).
Without this change, the next commit would have triggered the fallback
and regressed the following tests on gen9:
* dEQP-EGL.functional.wide_color.window_888_colorspace_srgb
* dEQP-EGL.functional.wide_color.window_8888_colorspace_srgb
* dEQP-EGL.functional.wide_color.pbuffer_888_colorspace_srgb
* dEQP-EGL.functional.wide_color.pbuffer_8888_colorspace_srgb
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4972>
---
src/gallium/drivers/iris/iris_resolve.c | 3 +--
src/gallium/drivers/iris/iris_resource.c | 3 +--
src/gallium/drivers/iris/iris_state.c | 1 +
3 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/src/gallium/drivers/iris/iris_resolve.c b/src/gallium/drivers/iris/iris_resolve.c
index 0350e58a225..0d647630f5d 100644
--- a/src/gallium/drivers/iris/iris_resolve.c
+++ b/src/gallium/drivers/iris/iris_resolve.c
@@ -1019,8 +1019,7 @@ iris_resource_render_aux_usage(struct iris_context *ice,
format_ccs_e_compat_with_resource(devinfo, res, render_format))
return ISL_AUX_USAGE_CCS_E;
- /* Otherwise, we try to fall back to CCS_D */
- if (isl_format_supports_ccs_d(devinfo, render_format))
+ if (res->aux.usage == ISL_AUX_USAGE_CCS_D)
return ISL_AUX_USAGE_CCS_D;
default:
diff --git a/src/gallium/drivers/iris/iris_resource.c b/src/gallium/drivers/iris/iris_resource.c
index 513105d5c2c..232494a9c1f 100644
--- a/src/gallium/drivers/iris/iris_resource.c
+++ b/src/gallium/drivers/iris/iris_resource.c
@@ -525,8 +525,7 @@ iris_resource_configure_aux(struct iris_screen *screen,
} else if (has_ccs) {
if (want_ccs_e_for_format(devinfo, res->surf.format))
res->aux.possible_usages |= 1 << ISL_AUX_USAGE_CCS_E;
-
- if (isl_format_supports_ccs_d(devinfo, res->surf.format))
+ else if (isl_format_supports_ccs_d(devinfo, res->surf.format))
res->aux.possible_usages |= 1 << ISL_AUX_USAGE_CCS_D;
}
diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c
index 462a04091be..9d824507ad8 100644
--- a/src/gallium/drivers/iris/iris_state.c
+++ b/src/gallium/drivers/iris/iris_state.c
@@ -4521,6 +4521,7 @@ surf_state_offset_for_aux(struct iris_resource *res,
unsigned aux_modes,
enum isl_aux_usage aux_usage)
{
+ assert(aux_modes & (1 << aux_usage));
return SURFACE_STATE_ALIGNMENT *
util_bitcount(aux_modes & ((1 << aux_usage) - 1));
}
More information about the mesa-commit
mailing list