diff --git a/src/freedreno/vulkan/tu_device.cc b/src/freedreno/vulkan/tu_device.cc index 090c23886da..9d177faa456 100644 --- a/src/freedreno/vulkan/tu_device.cc +++ b/src/freedreno/vulkan/tu_device.cc @@ -3016,6 +3016,11 @@ tu_BindBufferMemory2(VkDevice device, VK_FROM_HANDLE(tu_device_memory, mem, pBindInfos[i].memory); VK_FROM_HANDLE(tu_buffer, buffer, pBindInfos[i].buffer); + const VkBindMemoryStatusKHR *status = + vk_find_struct_const(pBindInfos[i].pNext, BIND_MEMORY_STATUS_KHR); + if (status) + *status->pResult = VK_SUCCESS; + if (mem) { buffer->bo = mem->bo; buffer->iova = mem->bo->iova + pBindInfos[i].memoryOffset; diff --git a/src/freedreno/vulkan/tu_image.cc b/src/freedreno/vulkan/tu_image.cc index 97686a1909d..330f28d5aca 100644 --- a/src/freedreno/vulkan/tu_image.cc +++ b/src/freedreno/vulkan/tu_image.cc @@ -851,6 +851,11 @@ tu_BindImageMemory2(VkDevice _device, } #endif + const VkBindMemoryStatusKHR *status = + vk_find_struct_const(pBindInfos[i].pNext, BIND_MEMORY_STATUS_KHR); + if (status) + *status->pResult = VK_SUCCESS; + if (mem) { VkResult result; if (vk_image_is_android_hardware_buffer(&image->vk)) { @@ -859,12 +864,18 @@ tu_BindImageMemory2(VkDevice _device, result = vk_android_get_ahb_layout(mem->vk.ahardware_buffer, &eci, a_plane_layouts, TU_MAX_PLANE_COUNT); - if (result != VK_SUCCESS) + if (result != VK_SUCCESS) { + if (status) + *status->pResult = result; return result; + } result = tu_image_update_layout(device, image, eci.drmFormatModifier, a_plane_layouts); - if (result != VK_SUCCESS) + if (result != VK_SUCCESS) { + if (status) + *status->pResult = result; return result; + } } image->bo = mem->bo; image->iova = mem->bo->iova + pBindInfos[i].memoryOffset; @@ -872,8 +883,11 @@ tu_BindImageMemory2(VkDevice _device, if (image->vk.usage & VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT) { if (!mem->bo->map) { result = tu_bo_map(device, mem->bo, NULL); - if (result != VK_SUCCESS) + if (result != VK_SUCCESS) { + if (status) + *status->pResult = result; return result; + } } image->map = (char *)mem->bo->map + pBindInfos[i].memoryOffset;