微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VkDescriptorBufferInfo 范围是 x,大于此设备的 maxStorageBufferRange

如何解决VkDescriptorBufferInfo 范围是 x,大于此设备的 maxStorageBufferRange

出于兼容性原因,我将 vulkan api 用于 GPGPU 计算。 我想使用 vulkan 计算着色器进行图像处理任务。我有 8 位彩色 rbg 图像 我想转移到VkBuffer。由于 glsl 不支持 8 位数据,所以我想将 caste 输入到 C 32 bit int 并复制到 VkBuffer 。现在的问题是缓冲区存储变得巨大。我收到类似这样的验证错误

 vkUpdateDescriptorSets() pDescriptorWrites[0] Failed write update validation for VkDescriptorSet 0x7c45730000000006[] with error: Write update to VkDescriptorSet 0x7c45730000000006[] allocated with VkDescriptorSetLayout 0xf018750000000004[] binding #1 Failed with error message: Attempted write update to buffer descriptor Failed due to: For buffer VkBuffer 0x683e70000000002[] VkDescriptorBufferInfo range is 432000000 which is greater than this device's maxStorageBufferRange (134217728). The Vulkan spec states: If descriptorType is VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,the range member of each element of pBufferInfo,or the effective range if range is VK_WHOLE_SIZE,must be less than or equal to VkPhysicalDeviceLimits::maxStorageBufferRange 

在 opencl 中,我不会遇到这种类型的数据问题。

这是我的VkBufferCreateInfo

VkBufferCreateInfo bufferCreateInfo = {};
bufferCreateInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
bufferCreateInfo.size = bufferSize;
bufferCreateInfo.usage = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT;
bufferCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;

如何处理更大的数据(300-400MB)?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。