X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Ffreedreno%2Fvulkan%2Ftu_image.c;h=657612d42c37fab25dae2771453ab388b51629bb;hb=1bced0fad2feeca34ef9d2a2d28b05e234d25e36;hp=af90b1ff310911e11ec29cb9d3b98b1e23afb483;hpb=1085df8176cbc18c5ad59bed3906e27c26ab1766;p=mesa.git diff --git a/src/freedreno/vulkan/tu_image.c b/src/freedreno/vulkan/tu_image.c index af90b1ff310..657612d42c3 100644 --- a/src/freedreno/vulkan/tu_image.c +++ b/src/freedreno/vulkan/tu_image.c @@ -161,7 +161,7 @@ tu_image_create(VkDevice _device, if (pCreateInfo->sharingMode == VK_SHARING_MODE_CONCURRENT) { for (uint32_t i = 0; i < pCreateInfo->queueFamilyIndexCount; ++i) if (pCreateInfo->pQueueFamilyIndices[i] == - VK_QUEUE_FAMILY_EXTERNAL_KHR) + VK_QUEUE_FAMILY_EXTERNAL) image->queue_family_mask |= (1u << TU_MAX_QUEUE_FAMILIES) - 1u; else image->queue_family_mask |= @@ -170,7 +170,7 @@ tu_image_create(VkDevice _device, image->shareable = vk_find_struct_const(pCreateInfo->pNext, - EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR) != NULL; + EXTERNAL_MEMORY_IMAGE_CREATE_INFO) != NULL; image->tile_mode = pCreateInfo->tiling == VK_IMAGE_TILING_OPTIMAL ? 3 : 0; setup_slices(image, pCreateInfo); @@ -230,7 +230,7 @@ tu_image_queue_family_mask(const struct tu_image *image, { if (!image->exclusive) return image->queue_family_mask; - if (family == VK_QUEUE_FAMILY_EXTERNAL_KHR) + if (family == VK_QUEUE_FAMILY_EXTERNAL) return (1u << TU_MAX_QUEUE_FAMILIES) - 1u; if (family == VK_QUEUE_FAMILY_IGNORED) return 1u << queue_family; @@ -283,6 +283,18 @@ tu_GetImageSubresourceLayout(VkDevice _device, const VkImageSubresource *pSubresource, VkSubresourceLayout *pLayout) { + TU_FROM_HANDLE(tu_image, image, _image); + + const uint32_t layer_offset = image->layer_size * pSubresource->arrayLayer; + const struct tu_image_level *level = + image->levels + pSubresource->mipLevel; + + pLayout->offset = layer_offset + level->offset; + pLayout->size = level->size; + pLayout->rowPitch = + level->pitch * vk_format_get_blocksize(image->vk_format); + pLayout->arrayPitch = image->layer_size; + pLayout->depthPitch = level->size; } VkResult