&(struct anv_image_create_info) {
.isl_tiling_flags = ISL_TILING_X_BIT,
.stride = pCreateInfo->strideInBytes,
- .vk_info =
- &(VkImageCreateInfo) {
- .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
- .imageType = VK_IMAGE_TYPE_2D,
- .format = pCreateInfo->format,
- .extent = pCreateInfo->extent,
- .mipLevels = 1,
- .arrayLayers = 1,
- .samples = 1,
- /* FIXME: Need a way to use X tiling to allow scanout */
- .tiling = VK_IMAGE_TILING_OPTIMAL,
- .usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
- .flags = 0,
- }},
- pAllocator, &image_h);
+ .vk_info = &(VkImageCreateInfo) {
+ .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
+ .imageType = VK_IMAGE_TYPE_2D,
+ .format = pCreateInfo->format,
+ .extent = pCreateInfo->extent,
+ .mipLevels = 1,
+ .arrayLayers = 1,
+ .samples = 1,
+ /* FIXME: Need a way to use X tiling to allow scanout */
+ .tiling = VK_IMAGE_TILING_OPTIMAL,
+ .usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
+ .flags = 0,
+ }
+ }, pAllocator, &image_h);
if (result != VK_SUCCESS)
goto fail;
image = anv_image_from_handle(image_h);
- uint64_t bo_flags = 0;
- if (device->instance->physicalDevice.supports_48bit_addresses)
- bo_flags |= EXEC_OBJECT_SUPPORTS_48B_ADDRESS;
-
- result = anv_bo_cache_import(device, &device->bo_cache,
- pCreateInfo->fd, bo_flags, &mem->bo);
+ result = anv_device_import_bo(device, pCreateInfo->fd,
+ ANV_BO_ALLOC_IMPLICIT_SYNC,
+ 0 /* address */,
+ &mem->bo);
if (result != VK_SUCCESS)
goto fail_import;
VkDeviceSize aligned_image_size = align_u64(image->size, 4096);
if (mem->bo->size < aligned_image_size) {
- result = vk_errorf(device->instance, device,
- VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR,
+ result = vk_errorf(device, device, VK_ERROR_INVALID_EXTERNAL_HANDLE,
"dma-buf too small for image in "
- "vkCreateDmaBufImageINTEL: %"PRIu64"B < "PRIu64"B",
+ "vkCreateDmaBufImageINTEL: %"PRIu64"B < %"PRIu64"B",
mem->bo->size, aligned_image_size);
- anv_bo_cache_release(device, &device->bo_cache, mem->bo);
+ anv_device_release_bo(device, mem->bo);
goto fail_import;
}