【问题标题】:vkCreateImage returns VK_ERROR_INITIALIZATION_FAILED although supportedvkCreateImage 返回 VK_ERROR_INITIALIZATION_FAILED 虽然支持
【发布时间】:2017-10-31 18:50:04
【问题描述】:

每当我调用 vkCreateImage 时,我的 Vulkan 实现都会返回 VK_ERROR_INITIALIZATION_FAILED。我检查了vkGetPhysicalDeviceImageFormatProperties 的输出以及vkGetPhysicalDeviceFormatProperties 的输出,并确保支持我正在创建的图像格式(关于它的创建参数)。 我已经成功初始化了一个 Vulkan 实例和一个逻辑设备,所以问题一定出在其他地方。

Vulkan 规范没有提到 VK_ERROR_INITIALIZATION_FAILED 作为 vkCreateImage 的可能返回值,这使得根除问题变得更加困难。

我推送到vkCreateImageVkImageCreateInfo结构如下:

imageCreateInfo.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;
imageCreateInfo.pNext = nullptr;
imageCreateInfo.flags = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT;
imageCreateInfo.imageType = VK_IMAGE_TYPE_2D;
imageCreateInfo.format = VK_FORMAT_R8G8B8A8_UNORM;
imageCreateInfo.extent.width = 1024;
imageCreateInfo.extent.height = 1024;
imageCreateInfo.extent.depth = 1;
imageCreateInfo.arrayLayers = 1;
imageCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
imageCreateInfo.samples = VK_SAMPLE_COUNT_1_BIT;
imageCreateInfo.usage = VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT;
imageCreateInfo.mipLevels = 0;
imageCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
imageCreateInfo.tiling = VK_IMAGE_TILING_OPTIMAL;
imageCreateInfo.queueFamilyIndexCount = 0;
imageCreateInfo.pQueueFamilyIndices = nullptr;

【问题讨论】:

    标签: c++ vulkan


    【解决方案1】:

    如规范中所述:

    mipLevels 必须大于 0

    所以从您的代码来看,为 mip 级别数提供 0 值可能是失败的原因(或原因之一)。

    【讨论】:

      猜你喜欢
      • 2019-08-21
      • 2013-05-11
      • 2011-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-25
      • 2015-02-12
      相关资源
      最近更新 更多