summaryrefslogtreecommitdiffstats
path: root/src/intel/isl
diff options
context:
space:
mode:
Diffstat (limited to 'src/intel/isl')
-rw-r--r--src/intel/isl/isl.h10
-rw-r--r--src/intel/isl/isl_format.c14
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);