diff --git a/src/SceneGraph/Vulkan/VKDeviceBuffer.cpp b/src/SceneGraph/Vulkan/VKDeviceBuffer.cpp index 57932461..95968186 100644 --- a/src/SceneGraph/Vulkan/VKDeviceBuffer.cpp +++ b/src/SceneGraph/Vulkan/VKDeviceBuffer.cpp @@ -26,7 +26,10 @@ bool GPUDevice::CreateBuffer(DeviceBufferData *buf,VkBufferUsageFlags buf_usage, vkGetBufferMemoryRequirements(attr->device,buf->buffer,&mem_reqs); - DeviceMemory *dm=CreateMemory(mem_reqs,VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT|VK_MEMORY_PROPERTY_HOST_COHERENT_BIT); + DeviceMemory *dm=CreateMemory(mem_reqs, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT //CPU端可以Map + |VK_MEMORY_PROPERTY_HOST_COHERENT_BIT); //CPU端无需Flush,即可被GPU访问 + //注:这个模式并非最佳效能,但是在开发时最为方便 + //Device Local模式仅支持GPU访问,是性能最佳,考虑在一些极端情况下使用 if(dm&&dm->BindBuffer(buf->buffer)) { @@ -38,7 +41,7 @@ bool GPUDevice::CreateBuffer(DeviceBufferData *buf,VkBufferUsageFlags buf_usage, if(!data) return(true); - + dm->Write(data,0,size); return(true); }