From f084d3c7aa03c7d32db74841fa79f62cb1bae61a Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Thu, 19 Jan 2017 16:20:00 +0000 Subject: [PATCH] anv: don't require render target isl bit for depth/stencil surfaces Blorp can deal with depth/stencil surfaces blits/copies without the render target requirement. Also having both render target and depth/stencil requirement is incompatible from isl's point of view. This fixes an image creation issue in the high level quality settings of the Unity3D player, which requires a depth texture with src/dst transfer & 4x multisampling. v2: Simply aspect checking condition (Jason) Signed-off-by: Lionel Landwerlin Reviewed-by: Jason Ekstrand Cc: 13.0 17.0 (cherry picked from commit 74c23bde5b8155a84233265c56bedac8f38de14e) --- src/intel/vulkan/anv_image.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c index 0d2de1d9b2f..41574b3010d 100644 --- a/src/intel/vulkan/anv_image.c +++ b/src/intel/vulkan/anv_image.c @@ -79,8 +79,11 @@ choose_isl_surf_usage(VkImageUsageFlags vk_usage, isl_usage |= ISL_SURF_USAGE_TEXTURE_BIT; } - if (vk_usage & VK_IMAGE_USAGE_TRANSFER_DST_BIT) { - /* blorp implements transfers by rendering into the destination image. */ + if (vk_usage & VK_IMAGE_USAGE_TRANSFER_DST_BIT && + aspect == VK_IMAGE_ASPECT_COLOR_BIT) { + /* blorp implements transfers by rendering into the destination image. + * Only request this with color images, as we deal with depth/stencil + * formats differently. */ isl_usage |= ISL_SURF_USAGE_RENDER_TARGET_BIT; }