Module: Mesa Branch: master Commit: d285ea6467d382e3865c60f57d86501d362380de URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d285ea6467d382e3865c60f57d86501d362380de
Author: Alyssa Rosenzweig <[email protected]> Date: Wed Jul 22 11:07:03 2020 -0400 panfrost: Implement YTR availability check Depends on format. Signed-off-by: Alyssa Rosenzweig <[email protected]> Tested-by: Icecream95 <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6159> --- src/panfrost/lib/pan_afbc.c | 16 ++++++++++++++++ src/panfrost/lib/pan_texture.h | 3 +++ 2 files changed, 19 insertions(+) diff --git a/src/panfrost/lib/pan_afbc.c b/src/panfrost/lib/pan_afbc.c index f1f62baffc9..a75e797190c 100644 --- a/src/panfrost/lib/pan_afbc.c +++ b/src/panfrost/lib/pan_afbc.c @@ -128,3 +128,19 @@ panfrost_afbc_header_size(unsigned width, unsigned height) return ALIGN_POT(header_bytes, AFBC_CACHE_ALIGN); } + +/* The lossless colour transform (AFBC_FORMAT_MOD_YTR) requires RGB. */ + +bool +panfrost_afbc_can_ytr(enum pipe_format format) +{ + const struct util_format_description *desc = + util_format_description(format); + + /* YTR is only defined for RGB(A) */ + if (desc->nr_channels != 3 && desc->nr_channels != 4) + return false; + + /* The fourth channel if it exists doesn't matter */ + return desc->colorspace == UTIL_FORMAT_COLORSPACE_RGB; +} diff --git a/src/panfrost/lib/pan_texture.h b/src/panfrost/lib/pan_texture.h index a085e5a7fe7..fa3918f0f2e 100644 --- a/src/panfrost/lib/pan_texture.h +++ b/src/panfrost/lib/pan_texture.h @@ -85,6 +85,9 @@ panfrost_format_supports_afbc(enum pipe_format format); unsigned panfrost_afbc_header_size(unsigned width, unsigned height); +bool +panfrost_afbc_can_ytr(enum pipe_format format); + /* mali_texture_descriptor */ unsigned _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
