From d285ea6467d382e3865c60f57d86501d362380de Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Wed, 22 Jul 2020 11:07:03 -0400 Subject: [PATCH] panfrost: Implement YTR availability check Depends on format. Signed-off-by: Alyssa Rosenzweig Tested-by: Icecream95 Part-of: --- 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 -- 2.30.2