Mesa (master): anv/blorp: Don't create linear ASTC surfaces for buffers
Nanley Chery
nchery at kemper.freedesktop.org
Thu Nov 3 18:23:23 UTC 2016
Module: Mesa
Branch: master
Commit: 1625d911d7368a9a96411012c69512074a3ff506
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1625d911d7368a9a96411012c69512074a3ff506
Author: Nanley Chery <nanley.g.chery at intel.com>
Date: Wed Nov 2 16:18:44 2016 -0700
anv/blorp: Don't create linear ASTC surfaces for buffers
Such a surface is not possible on our hardware. Without this change, ISL
surface creation would fail with the next patch.
Signed-off-by: Nanley Chery <nanley.g.chery at intel.com>
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
---
src/intel/vulkan/anv_blorp.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/src/intel/vulkan/anv_blorp.c b/src/intel/vulkan/anv_blorp.c
index 87f242c..0feb5d5 100644
--- a/src/intel/vulkan/anv_blorp.c
+++ b/src/intel/vulkan/anv_blorp.c
@@ -126,6 +126,22 @@ get_blorp_surf_for_anv_buffer(struct anv_device *device,
struct blorp_surf *blorp_surf,
struct isl_surf *isl_surf)
{
+ const struct isl_format_layout *fmtl =
+ isl_format_get_layout(format);
+
+ /* ASTC is the only format which doesn't support linear layouts.
+ * Create an equivalently sized surface with ISL to get around this.
+ */
+ if (fmtl->txc == ISL_TXC_ASTC) {
+ /* Use an equivalently sized format */
+ format = ISL_FORMAT_R32G32B32A32_UINT;
+ assert(fmtl->bpb == isl_format_get_layout(format)->bpb);
+
+ /* Shrink the dimensions for the new format */
+ width = DIV_ROUND_UP(width, fmtl->bw);
+ height = DIV_ROUND_UP(height, fmtl->bh);
+ }
+
*blorp_surf = (struct blorp_surf) {
.surf = isl_surf,
.addr = {
More information about the mesa-commit
mailing list