Enum Info |
|---|
内存用法枚举。 |
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端随机访问的资源。 |