[Mesa-dev] [v3 4/5] i965: Add helper for lossless compression support
Topi Pohjolainen
topi.pohjolainen at intel.com
Thu Feb 25 09:58:25 UTC 2016
v2: Check explicitly against base type of GL_FLOAT instead of
using _mesa_is_format_integer_color(). Otherwise we miss
GL_UNSIGNED_NORMALIZED.
Signed-off-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
---
src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 22 ++++++++++++++++++++++
src/mesa/drivers/dri/i965/intel_mipmap_tree.h | 3 +++
2 files changed, 25 insertions(+)
diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
index 6c233d8..e9fbeeb 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
@@ -294,6 +294,28 @@ intel_miptree_is_lossless_compressed(const struct brw_context *brw,
return mt->num_samples <= 1;
}
+bool
+intel_miptree_supports_lossless_compressed(mesa_format format)
+{
+ /* For now compression is only enabled for integer formats even though
+ * there exist supported floating point formats also. This is a heuristic
+ * decision based on current public benchmarks. In none of the cases these
+ * formats provided any improvement but a few cases were seen to regress.
+ * Hence these are left to to be enabled in the future when they are known
+ * to improve things.
+ */
+ if (_mesa_get_format_datatype(format) == GL_FLOAT)
+ return false;
+
+ /* In principle, fast clear mechanism and lossless compression go hand in
+ * hand. However, fast clear can be also used to clear srgb surfaces by
+ * using equivalent linear format. This trick, however, can't be extended
+ * to be used with lossless compression and therefore a check is needed to
+ * see if the format really is linear.
+ */
+ return _mesa_get_srgb_format_linear(format) == format;
+}
+
/**
* Determine depth format corresponding to a depth+stencil format,
* for separate stencil.
diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
index 7cdfb37..6ce9f75 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
@@ -679,6 +679,9 @@ intel_miptree_supports_non_msrt_fast_clear(struct brw_context *brw,
const struct intel_mipmap_tree *mt);
bool
+intel_miptree_supports_lossless_compressed(mesa_format format);
+
+bool
intel_miptree_alloc_non_msrt_mcs(struct brw_context *brw,
struct intel_mipmap_tree *mt);
--
2.5.0
More information about the mesa-dev
mailing list