Mesa (main): anv: Allow transfer-only linear ASTC images
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Nov 30 14:06:56 UTC 2021
Module: Mesa
Branch: main
Commit: 355f3188438d22712850d65e48660d8f46316dc5
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=355f3188438d22712850d65e48660d8f46316dc5
Author: Nanley Chery <nanley.g.chery at intel.com>
Date: Fri Nov 12 13:37:32 2021 -0500
anv: Allow transfer-only linear ASTC images
Some apps depend on this to run.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2397
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13881>
---
src/intel/vulkan/anv_blorp.c | 6 ++----
src/intel/vulkan/anv_formats.c | 16 +++++++++-------
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/src/intel/vulkan/anv_blorp.c b/src/intel/vulkan/anv_blorp.c
index f14716c154c..a4f5ff15039 100644
--- a/src/intel/vulkan/anv_blorp.c
+++ b/src/intel/vulkan/anv_blorp.c
@@ -546,10 +546,8 @@ copy_buffer_to_image(struct anv_cmd_buffer *cmd_buffer,
buffer_row_pitch;
/* Some formats have additional restrictions which may cause ISL to
- * fail to create a surface for us. Some examples include:
- *
- * 1. ASTC formats are not allowed to be LINEAR and must be tiled
- * 2. YCbCr formats have to have 2-pixel aligned strides
+ * fail to create a surface for us. For example, YCbCr formats
+ * have to have 2-pixel aligned strides.
*
* To avoid these issues, we always bind the buffer as if it's a
* "normal" format like RGBA32_UINT. Since we're using blorp_copy,
diff --git a/src/intel/vulkan/anv_formats.c b/src/intel/vulkan/anv_formats.c
index 82bd618d183..abaa6a46540 100644
--- a/src/intel/vulkan/anv_formats.c
+++ b/src/intel/vulkan/anv_formats.c
@@ -600,14 +600,16 @@ anv_get_image_format_features2(const struct intel_device_info *devinfo,
enum isl_format base_isl_format = base_plane_format.isl_format;
- /* ASTC textures must be in Y-tiled memory, and we reject compressed formats
- * with modifiers.
- */
- if (vk_tiling != VK_IMAGE_TILING_OPTIMAL &&
- isl_format_get_layout(plane_format.isl_format)->txc == ISL_TXC_ASTC)
- return 0;
-
if (isl_format_supports_sampling(devinfo, plane_format.isl_format)) {
+ /* ASTC textures must be in Y-tiled memory, and we reject compressed
+ * formats with modifiers. We do however interpret ASTC textures with
+ * uncompressed formats during data transfers.
+ */
+ if (vk_tiling != VK_IMAGE_TILING_OPTIMAL &&
+ isl_format_get_layout(plane_format.isl_format)->txc == ISL_TXC_ASTC)
+ return VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR |
+ VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR;
+
flags |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR;
if (devinfo->ver >= 9)
More information about the mesa-commit
mailing list