diff options
Diffstat (limited to 'src/intel/isl')
-rw-r--r-- | src/intel/isl/isl.h | 10 | ||||
-rw-r--r-- | src/intel/isl/isl_format.c | 14 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/intel/isl/isl.h b/src/intel/isl/isl.h index 248a94d64eb..90193ca08c1 100644 --- a/src/intel/isl/isl.h +++ b/src/intel/isl/isl.h @@ -826,9 +826,19 @@ isl_format_get_layout(enum isl_format fmt) } bool +isl_format_has_uint_channel(enum isl_format fmt) ATTRIBUTE_CONST; + +bool isl_format_has_sint_channel(enum isl_format fmt) ATTRIBUTE_CONST; static inline bool +isl_format_has_int_channel(enum isl_format fmt) +{ + return isl_format_has_uint_channel(fmt) || + isl_format_has_sint_channel(fmt); +} + +static inline bool isl_format_is_compressed(enum isl_format fmt) { const struct isl_format_layout *fmtl = isl_format_get_layout(fmt); diff --git a/src/intel/isl/isl_format.c b/src/intel/isl/isl_format.c index 7842197d861..32bd70186c6 100644 --- a/src/intel/isl/isl_format.c +++ b/src/intel/isl/isl_format.c @@ -26,6 +26,20 @@ #include "isl.h" bool +isl_format_has_uint_channel(enum isl_format fmt) +{ + const struct isl_format_layout *fmtl = isl_format_get_layout(fmt); + + return fmtl->channels.r.type == ISL_UINT || + fmtl->channels.g.type == ISL_UINT || + fmtl->channels.b.type == ISL_UINT || + fmtl->channels.a.type == ISL_UINT || + fmtl->channels.l.type == ISL_UINT || + fmtl->channels.i.type == ISL_UINT || + fmtl->channels.p.type == ISL_UINT; +} + +bool isl_format_has_sint_channel(enum isl_format fmt) { const struct isl_format_layout *fmtl = isl_format_get_layout(fmt); |