Mercurial > games > semicongine
comparison src/zamikongine/buffer.nim @ 494:0c18638c7217
did: refactoring, move more from make to nimscript
| author | Sam <sam@basx.dev> |
|---|---|
| date | Sun, 15 Jan 2023 23:23:54 +0700 |
| parents | 680c4b8ca28a |
| children |
comparison
equal
deleted
inserted
replaced
| 493:680c4b8ca28a | 494:0c18638c7217 |
|---|---|
| 19 persistentMapping: bool | 19 persistentMapping: bool |
| 20 mapped: pointer | 20 mapped: pointer |
| 21 | 21 |
| 22 proc trash*(buffer: var Buffer) = | 22 proc trash*(buffer: var Buffer) = |
| 23 assert int64(buffer.vkBuffer) != 0 | 23 assert int64(buffer.vkBuffer) != 0 |
| 24 assert int64(buffer.memory) != 0 | |
| 25 vkDestroyBuffer(buffer.device, buffer.vkBuffer, nil) | 24 vkDestroyBuffer(buffer.device, buffer.vkBuffer, nil) |
| 26 buffer.vkBuffer = VkBuffer(0) | 25 buffer.vkBuffer = VkBuffer(0) |
| 26 if buffer.size == 0: # for zero-size buffers there are no memory allocations | |
| 27 return | |
| 28 assert int64(buffer.memory) != 0 | |
| 27 vkFreeMemory(buffer.device, buffer.memory, nil) | 29 vkFreeMemory(buffer.device, buffer.memory, nil) |
| 28 buffer.memory = VkDeviceMemory(0) | 30 buffer.memory = VkDeviceMemory(0) |
| 29 | 31 |
| 30 proc findMemoryType(buffer: Buffer, physicalDevice: VkPhysicalDevice, properties: VkMemoryPropertyFlags): uint32 = | 32 proc findMemoryType(buffer: Buffer, physicalDevice: VkPhysicalDevice, properties: VkMemoryPropertyFlags): uint32 = |
| 31 var physicalProperties: VkPhysicalDeviceMemoryProperties | 33 var physicalProperties: VkPhysicalDeviceMemoryProperties |
| 63 var allocInfo = VkMemoryAllocateInfo( | 65 var allocInfo = VkMemoryAllocateInfo( |
| 64 sType: VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, | 66 sType: VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, |
| 65 allocationSize: result.memoryRequirements.size, | 67 allocationSize: result.memoryRequirements.size, |
| 66 memoryTypeIndex: result.findMemoryType(physicalDevice, VkMemoryPropertyFlags(memoryProperties)) | 68 memoryTypeIndex: result.findMemoryType(physicalDevice, VkMemoryPropertyFlags(memoryProperties)) |
| 67 ) | 69 ) |
| 68 checkVkResult result.device.vkAllocateMemory(addr(allocInfo), nil, addr(result.memory)) | 70 if result.size > 0: |
| 71 checkVkResult result.device.vkAllocateMemory(addr(allocInfo), nil, addr(result.memory)) | |
| 69 checkVkResult result.device.vkBindBufferMemory(result.vkBuffer, result.memory, VkDeviceSize(0)) | 72 checkVkResult result.device.vkBindBufferMemory(result.vkBuffer, result.memory, VkDeviceSize(0)) |
| 70 if persistentMapping: | 73 if persistentMapping: |
| 71 checkVkResult vkMapMemory( | 74 checkVkResult vkMapMemory( |
| 72 result.device, | 75 result.device, |
| 73 result.memory, | 76 result.memory, |
