Vulkan Specification(Vulkan规范):第十章 10.2.2 延迟内存分配

10.2.2. 延迟内存分配

若从堆中分配的内存带有VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT 标志位, 这个对象对应的内存可能被Vulkan实现延迟分配。 内存真实的提交大小初始的时候可能最小为0(也可能可要求的一样大),当更多的内存被使用时不断的增长。

A memory type with this flag set is only allowed to be bound to a VkImage whose usage flags include VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT.

 

注意

Using lazily allocated memory objects for framebuffer attachments that are not needed once a render pass instance has completed may allow some implementations to never allocate memory for such attachments.

为了查询当前给一个内存对象提交的延迟分配的内存量,可调用:

void vkGetDeviceMemoryCommitment(
    VkDevice                                    device,
    VkDeviceMemory                              memory,
    VkDeviceSize*                               pCommittedMemoryInBytes);
  • device 是拥有内存的逻辑设备。

  • memory 是被查询的内存对象。

  • pCommittedMemoryInBytes 是一个指针,指向一个 VkDeviceSize, 若成功返回,其记录了当前被提交的字节数。

Vulkan实现也许会在任何时刻更新提交的内存,所以这个查询返回的值可能是过期的。

Vulkan实现保证 从内存对象被创建带有的内存类型指示的heapIndex 分配被提交的内存。

正确使用

  • memory must have been created with a memory type that reports VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT

Valid Usage (Implicit)

  • device must be a valid VkDevice handle

  • memory must be a valid VkDeviceMemory handle

  • pCommittedMemoryInBytes must be a pointer to a VkDeviceSize value

  • memory must have been created, allocated, or retrieved from device

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值