vulkan - 如何配置 SwiftShader 设备内存?
问题描述
我正在使用 SwiftShader 进行 Vulkan 渲染的项目,我不能依赖一个正常运行的硬件实现。今天我在尝试通过vkCreateBuffer()
. 由于 SwiftShader 是一个软件实现,我假设设备内存是可配置的。是吗?如果是这样,它是如何配置的?
这是我失败的电话:
size_t sz=1323371088; // > 1GB
size_t usage_flags = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT;
VkBufferCreateInfo bufferCreateInfo = vks::initializers::bufferCreateInfo(usageFlags, size);
bufferCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
int ret = vkCreateBuffer(device, &bufferCreateInfo, nullptr, buffer);
(此示例使用VulkanInitializers.hpp
Sasha Willems 的宏。)
解决方案
SwiftShader 的 Vulkan 部分的最大单个内存分配大小在 VkConfig.hpp 中定义,默认设置为 1 GiB。如果您需要更大的单次分配限制,请增加MAX_MEMORY_ALLOCATION_SIZE
. 请注意,这不能超过 2 GiB(请参阅该文件中的注释)。
推荐阅读
- selenium - Selenium (Java):dndScript() 方法未定义
- mysql - 内连接不准确匹配
- android - 如何使用 php 和 mysql 将视频上传到服务器?
- java - spark 3.0.0 中的 CBORFactory NoClassDefFoundError 异常
- jpa - JPA多对多关系:无法插入生成的表
- powershell - 使用 PowerShell 写入输出创建后损坏的 Cmd 脚本
- html - 显示弹性元素的中间
- spring-kafka - MessageListenerContainer 的度量方法未捕获正确的值
- reactjs - prevState 和 ...state 之间的区别
- python - 如何在 django rest 框架中返回当前用户的预订历史记录?