Module: Mesa Branch: main Commit: f280b6e8d562897329db48cb95ddeaa3f2a22e3d URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f280b6e8d562897329db48cb95ddeaa3f2a22e3d
Author: Jianxun Zhang <[email protected]> Date: Tue Oct 31 14:46:24 2023 -0700 intel: Move mod_plane_is_clear_color() into isl We are going to reuse this helper in anv driver and also rename it. Signed-off-by: Jianxun Zhang <[email protected]> Reviewed-by: Nanley Chery <[email protected]> Acked-by: Rohan Garg <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25651> --- src/gallium/drivers/iris/iris_resource.c | 29 +++++------------------------ src/intel/isl/isl.h | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+), 24 deletions(-) diff --git a/src/gallium/drivers/iris/iris_resource.c b/src/gallium/drivers/iris/iris_resource.c index c8c280757bd..5dc8db09c90 100644 --- a/src/gallium/drivers/iris/iris_resource.c +++ b/src/gallium/drivers/iris/iris_resource.c @@ -1406,27 +1406,6 @@ iris_resource_from_user_memory(struct pipe_screen *pscreen, return &res->base.b; } -static bool -mod_plane_is_clear_color(uint64_t modifier, uint32_t plane) -{ - ASSERTED const struct isl_drm_modifier_info *mod_info = - isl_drm_modifier_get_info(modifier); - assert(mod_info); - - switch (modifier) { - case I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC: - case I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC: - assert(mod_info->supports_clear_color); - return plane == 2; - case I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC: - assert(mod_info->supports_clear_color); - return plane == 1; - default: - assert(!mod_info->supports_clear_color); - return false; - } -} - static unsigned get_num_planes(const struct pipe_resource *resource) { @@ -1518,7 +1497,8 @@ iris_resource_from_handle(struct pipe_screen *pscreen, * aux image. iris_resource_finish_aux_import will merge the separate aux * parameters back into a single iris_resource. */ - } else if (mod_plane_is_clear_color(modifier, whandle->plane)) { + } else if (isl_drm_modifier_plane_is_clear_color(modifier, + whandle->plane)) { res->aux.clear_color_offset = whandle->offset; res->aux.clear_color_bo = res->bo; res->bo = NULL; @@ -1823,7 +1803,7 @@ iris_resource_get_param(struct pipe_screen *pscreen, res->mod_info && isl_drm_modifier_has_aux(res->mod_info->modifier); bool wants_aux = mod_with_aux && plane != main_plane; bool wants_cc = mod_with_aux && - mod_plane_is_clear_color(res->mod_info->modifier, plane); + isl_drm_modifier_plane_is_clear_color(res->mod_info->modifier, plane); bool result; unsigned handle; @@ -1924,7 +1904,8 @@ iris_resource_get_handle(struct pipe_screen *pscreen, struct iris_bo *bo; if (res->mod_info && - mod_plane_is_clear_color(res->mod_info->modifier, whandle->plane)) { + isl_drm_modifier_plane_is_clear_color(res->mod_info->modifier, + whandle->plane)) { bo = res->aux.clear_color_bo; whandle->offset = res->aux.clear_color_offset; } else if (mod_with_aux && whandle->plane > 0) { diff --git a/src/intel/isl/isl.h b/src/intel/isl/isl.h index d4c4f1f777c..b50c6b96f68 100644 --- a/src/intel/isl/isl.h +++ b/src/intel/isl/isl.h @@ -2344,6 +2344,27 @@ isl_drm_modifier_has_aux(uint64_t modifier) isl_drm_modifier_get_info(modifier)->supports_media_compression; } +static inline bool +isl_drm_modifier_plane_is_clear_color(uint64_t modifier, uint32_t plane) +{ + ASSERTED const struct isl_drm_modifier_info *mod_info = + isl_drm_modifier_get_info(modifier); + assert(mod_info); + + switch (modifier) { + case I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC: + case I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC: + assert(mod_info->supports_clear_color); + return plane == 2; + case I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC: + assert(mod_info->supports_clear_color); + return plane == 1; + default: + assert(!mod_info->supports_clear_color); + return false; + } +} + /** Returns the default isl_aux_state for the given modifier. * * If we have a modifier which supports compression, then the auxiliary data
