Mercurial > games > semicongine
comparison semiconginev2/rendering/vulkan_wrappers.nim @ 1239:69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
| author | sam <sam@basx.dev> |
|---|---|
| date | Mon, 22 Jul 2024 00:46:10 +0700 |
| parents | 5dcb503ef0c0 |
| children |
comparison
equal
deleted
inserted
replaced
| 1238:03634915bbdb | 1239:69489a678141 |
|---|---|
| 345 ) | 345 ) |
| 346 checkVkResult vkFlushMappedMemoryRanges(vulkan.device, 1, addr(stagingRange)) | 346 checkVkResult vkFlushMappedMemoryRanges(vulkan.device, 1, addr(stagingRange)) |
| 347 | 347 |
| 348 WithSingleUseCommandBuffer(commandBuffer): | 348 WithSingleUseCommandBuffer(commandBuffer): |
| 349 when T is (VkBuffer, uint64): | 349 when T is (VkBuffer, uint64): |
| 350 # first make sure memory has been made available with a memory barrier | |
| 351 # we are just waiting for the vertex input stage, but I think that is fine for most buffer copies (for now at least) | |
| 352 let memoryBarrier = VkMemoryBarrier(sType: VK_STRUCTURE_TYPE_MEMORY_BARRIER) | |
| 353 vkCmdPipelineBarrier( | |
| 354 commandBuffer = commandBuffer, | |
| 355 srcStageMask = toBits [VK_PIPELINE_STAGE_VERTEX_INPUT_BIT], | |
| 356 dstStageMask = toBits [VK_PIPELINE_STAGE_TRANSFER_BIT], | |
| 357 dependencyFlags = VkDependencyFlags(0), | |
| 358 memoryBarrierCount = 1, | |
| 359 pMemoryBarriers = addr(memoryBarrier), | |
| 360 bufferMemoryBarrierCount = 0, | |
| 361 pBufferMemoryBarriers = nil, | |
| 362 imageMemoryBarrierCount = 0, | |
| 363 pImageMemoryBarriers = nil, | |
| 364 ) | |
| 365 # now copy stuff | |
| 350 let copyRegion = VkBufferCopy( | 366 let copyRegion = VkBufferCopy( |
| 351 size: bufferSize, | 367 size: bufferSize, |
| 352 dstOffset: target[1], | 368 dstOffset: target[1], |
| 353 srcOffset: 0 | 369 srcOffset: 0 |
| 354 ) | 370 ) |
