[Mesa-dev] [PATCH 5/5] anv/image: Support CCS_E for images which may be used for storage
Jason Ekstrand
jason at jlekstrand.net
Mon Feb 5 23:13:27 UTC 2018
We have to do resolves whenever we go into the general layout for these
images. However, it also means that images which declare the storage
usage but don't actually need it most of the time will still get
compression.
---
src/intel/vulkan/anv_image.c | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c
index 011e952..38f1c47 100644
--- a/src/intel/vulkan/anv_image.c
+++ b/src/intel/vulkan/anv_image.c
@@ -459,8 +459,7 @@ make_surface(const struct anv_device *dev,
* a render target. This means that it's safe to just leave
* compression on at all times for these formats.
*/
- if (!(vk_info->usage & VK_IMAGE_USAGE_STORAGE_BIT) &&
- all_formats_ccs_e_compatible(&dev->info, vk_info)) {
+ if (all_formats_ccs_e_compatible(&dev->info, vk_info)) {
image->planes[plane].aux_usage = ISL_AUX_USAGE_CCS_E;
}
}
@@ -795,9 +794,22 @@ anv_layout_to_aux_usage(const struct gen_device_info * const devinfo,
return ISL_AUX_USAGE_NONE;
+ case VK_IMAGE_LAYOUT_GENERAL:
+ if (aspect == VK_IMAGE_ASPECT_DEPTH_BIT) {
+ return ISL_AUX_USAGE_NONE;
+ } else if (image->usage & VK_IMAGE_USAGE_STORAGE_BIT) {
+ /* If we might be used as a storage image and we're in the general
+ * layout, we have to disable aux because the dataport doesn't
+ * support CCS.
+ */
+ return ISL_AUX_USAGE_NONE;
+ } else {
+ return image->planes[plane].aux_usage;
+ }
+
+
/* Transfer Layouts
*/
- case VK_IMAGE_LAYOUT_GENERAL:
case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:
case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:
if (aspect == VK_IMAGE_ASPECT_DEPTH_BIT) {
--
2.5.0.400.gff86faf
More information about the mesa-dev
mailing list