anv: add feature flags for linearly tiled ASTC images

In case of emulated ASTC on supported platforms, currently returning
0 for linear tiled images causes vpGetPhysicalDeviceProfileSupport
failure during AndroidBaselineProfile test. The patch handles it
similar to linearly-tiled images that are used for transfers.

Fixes android.graphics.cts.VulkanFeaturesTest#testAndroidBaselineProfile2021Support.

Cc: mesa-stable
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36798>
(cherry picked from commit f67edacf8b)
This commit is contained in:
Nataraj Deshpande 2025-08-14 11:12:18 -07:00 committed by Eric Engestrom
parent 199ee1bada
commit 8eddb8e456
2 changed files with 14 additions and 12 deletions

View file

@ -8404,7 +8404,7 @@
"description": "anv: add feature flags for linearly tiled ASTC images",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": null,
"notes": null

View file

@ -660,17 +660,19 @@ anv_get_image_format_features2(const struct anv_physical_device *physical_device
if (anv_is_compressed_format_emulated(physical_device, vk_format)) {
assert(isl_format_is_compressed(anv_format->planes[0].isl_format));
/* require optimal tiling so that we can decompress on upload */
if (vk_tiling != VK_IMAGE_TILING_OPTIMAL)
return 0;
/* required features for compressed formats */
flags |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT |
VK_FORMAT_FEATURE_2_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT |
VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT |
VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT;
/* Require optimal tiling so that we can decompress on upload */
if (vk_tiling == VK_IMAGE_TILING_OPTIMAL) {
/* Required features for compressed formats */
flags |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT |
VK_FORMAT_FEATURE_2_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT |
VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT |
VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT;
} else if (vk_tiling == VK_IMAGE_TILING_LINEAR) {
/* Images used for transfers */
flags |= VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT |
VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT;
}
return flags;
}