目录

MemCreateUsage

Enum Info

内存用法枚举。

Enum Value Summary

Enum Value and Description

MEMORY_UNKNOWN_USAGE

没有预设的内存使用。

MEMORY_GPU_ONLY

内存只能被GPU使用,在GPU上访问速度是最快的,不需要在host端做mapping操作。用途:GPU对其进行读写的设备,比如作为attachments的图片。只会从CPU端传输一次或者特别低频的数据,而且这个数据会被GPU高频读取,比如纹理贴图,VBO以及大部分的只在GPU使用的资源。在某些情况下(比如AMD的256M的VRAM)可以使用HOST_VISIBLE与此并存,所以也可以进行Map后来直接操作数据。

MEMORY_CPU_ONLY

此类内存可以直接通过Map到CPU端进行操作,这个usage绝对保证是HOST_VISIBLE并且是HOST_COHERENT(即时同步),CPU端是uncached状态,就是说不需要flush到GPU。写入操作有可能是Write-Combined类型(也就是说写入一堆数据一起送入GPU)。GPU端也是可以自由访问这种内存,但是会比较慢。用途:用于StagingBuffer(中间传输跳板)

MEMORY_CPU_TO_GPU

此类内存可以从CPU进行Map操作后访问(一定是HOST_VISIBLE),并且尽可能快速地从GPU访问。CPU端Uncached,写入操作可能是Write-Combined。用途:CPU端频繁进行数据写入,GPU端对数据进行读取。比如说纹理,VBO,UniformBuffers,这些Buffer如果每一帧都更新,可以这么使用。

MEMORY_GPU_TO_CPU

此类内存可以通过Map操作在CPU访问(一定是HOST_VISIBLE)并且是拥有Cached状态。用途:被GPU写入并且被CPU读取的buffer/image,比如录屏,HDR的全屏操作等。任何在CPU端随机访问的资源。