vulkan/VkMemoryPropertyFlagBits说明

发布时间 2024-01-07 21:42:47作者: 经纬视界
typedef enum VkMemoryPropertyFlagBits {
    VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
    VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
    VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
    VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
    VK_MEMORY_PROPERTY_PROTECTED_BIT = 0x00000020,
    VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 0x00000040,
    VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 0x00000080,
    VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV = 0x00000100,
    VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VkMemoryPropertyFlagBits;

VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT:

    表示设备(GPU)访问这块存储效率最高。
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT:

    表示这块存储可以通过调用vkMapMemory进行映射,使得主机(CPU)可以访问。
VK_MEMORY_PROPERTY_HOST_COHERENT_BIT:

    表示这块存储不需要调用vkFlushMappedMemoryRanges和vkInvalidateMappedMemoryRanges来flush主机写入的数据,就可以使设备可见,对于设备写入的数据也可以直接对主机可见。
VK_MEMORY_PROPERTY_HOST_CACHED_BIT:

    表示这块存储缓存在主机上。主机内存访问非缓存内存比缓存内存慢,然而,未缓存的内存始终是主机相关的。
VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT:

    表示只能设备访问。存储不能同时是VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT和VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT类型。
VK_MEMORY_PROPERTY_PROTECTED_BIT:

    表示只运行设备访问,同时允许受保护的队列操作访问。

VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD :

    待补充
VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD :

    待补充
VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV:

    待补充