@@ -288,7 +288,7 @@ static void CreateMesh()
288
288
vbInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
289
289
vbInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
290
290
VmaMemoryRequirements vbMemReq = {};
291
- vbMemReq.usage = VMA_MEMORY_USAGE_CPU_TO_GPU ;
291
+ vbMemReq.usage = VMA_MEMORY_USAGE_CPU_ONLY ;
292
292
VkMappedMemoryRange stagingVertexBufferMem;
293
293
VkBuffer stagingVertexBuffer = VK_NULL_HANDLE;
294
294
ERR_GUARD_VULKAN ( vmaCreateBuffer (g_hAllocator, &vbInfo, &vbMemReq, &stagingVertexBuffer, &stagingVertexBufferMem, nullptr ) );
@@ -298,6 +298,8 @@ static void CreateMesh()
298
298
memcpy (pVbData, vertices, vertexBufferSize);
299
299
vmaUnmapMemory (g_hAllocator, &stagingVertexBufferMem);
300
300
301
+ // No need to flush stagingVertexBuffer memory because CPU_ONLY memory is always HOST_COHERENT.
302
+
301
303
vbInfo.usage = VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_VERTEX_BUFFER_BIT;
302
304
vbMemReq.usage = VMA_MEMORY_USAGE_GPU_ONLY;
303
305
ERR_GUARD_VULKAN ( vmaCreateBuffer (g_hAllocator, &vbInfo, &vbMemReq, &g_hVertexBuffer, nullptr , nullptr ) );
@@ -309,7 +311,7 @@ static void CreateMesh()
309
311
ibInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
310
312
ibInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
311
313
VmaMemoryRequirements ibMemReq = {};
312
- ibMemReq.usage = VMA_MEMORY_USAGE_CPU_TO_GPU ;
314
+ ibMemReq.usage = VMA_MEMORY_USAGE_CPU_ONLY ;
313
315
VkMappedMemoryRange stagingIndexBufferMem;
314
316
VkBuffer stagingIndexBuffer = VK_NULL_HANDLE;
315
317
ERR_GUARD_VULKAN ( vmaCreateBuffer (g_hAllocator, &ibInfo, &ibMemReq, &stagingIndexBuffer, &stagingIndexBufferMem, nullptr ) );
@@ -319,6 +321,8 @@ static void CreateMesh()
319
321
memcpy (pIbData, indices, indexBufferSize);
320
322
vmaUnmapMemory (g_hAllocator, &stagingIndexBufferMem);
321
323
324
+ // No need to flush stagingIndexBuffer memory because CPU_ONLY memory is always HOST_COHERENT.
325
+
322
326
ibInfo.usage = VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_INDEX_BUFFER_BIT;
323
327
ibMemReq.usage = VMA_MEMORY_USAGE_GPU_ONLY;
324
328
ERR_GUARD_VULKAN ( vmaCreateBuffer (g_hAllocator, &ibInfo, &ibMemReq, &g_hIndexBuffer, nullptr , nullptr ) );
@@ -469,7 +473,7 @@ static void CreateTexture(uint32_t sizeX, uint32_t sizeY)
469
473
stagingImageInfo.samples = VK_SAMPLE_COUNT_1_BIT;
470
474
stagingImageInfo.flags = 0 ;
471
475
VmaMemoryRequirements stagingImageMemReq = {};
472
- stagingImageMemReq.usage = VMA_MEMORY_USAGE_CPU_TO_GPU ;
476
+ stagingImageMemReq.usage = VMA_MEMORY_USAGE_CPU_ONLY ;
473
477
VkImage stagingImage = VK_NULL_HANDLE;
474
478
VkMappedMemoryRange stagingImageMem;
475
479
ERR_GUARD_VULKAN ( vmaCreateImage (g_hAllocator, &stagingImageInfo, &stagingImageMemReq, &stagingImage, &stagingImageMem, nullptr ) );
@@ -504,6 +508,8 @@ static void CreateTexture(uint32_t sizeX, uint32_t sizeY)
504
508
505
509
vmaUnmapMemory (g_hAllocator, &stagingImageMem);
506
510
511
+ // No need to flush stagingImage memory because CPU_ONLY memory is always HOST_COHERENT.
512
+
507
513
VkImageCreateInfo imageInfo = { VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO };
508
514
imageInfo.imageType = VK_IMAGE_TYPE_2D;
509
515
imageInfo.extent .width = sizeX;
0 commit comments