Mercurial > games > semicongine
comparison src/vulkan_helpers.nim @ 465:2fcb9268072b
did: refactor, add resizing, proper cleanup
author | Sam <sam@basx.dev> |
---|---|
date | Tue, 20 Dec 2022 00:28:05 +0700 |
parents | 91544fc1afe5 |
children | 4ed9cb098315 |
comparison
equal
deleted
inserted
replaced
464:7cae1900c9a7 | 465:2fcb9268072b |
---|---|
14 | 14 |
15 template checkVkResult*(call: untyped) = | 15 template checkVkResult*(call: untyped) = |
16 when defined(release): | 16 when defined(release): |
17 discard call | 17 discard call |
18 else: | 18 else: |
19 debug(&"CALLING vulkan: {astToStr(call)}") | |
19 let value = call | 20 let value = call |
20 debug(&"CALLING vulkan: {astToStr(call)}") | |
21 if value != VK_SUCCESS: | 21 if value != VK_SUCCESS: |
22 raise newException(Exception, "Vulkan error: " & astToStr(call) & " returned " & $value) | 22 raise newException(Exception, "Vulkan error: " & astToStr(call) & " returned " & $value) |
23 | 23 |
24 | 24 |
25 proc VK_MAKE_API_VERSION*(variant: uint32, major: uint32, minor: uint32, patch: uint32): uint32 {.compileTime.} = | 25 proc VK_MAKE_API_VERSION*(variant: uint32, major: uint32, minor: uint32, patch: uint32): uint32 {.compileTime.} = |
28 | 28 |
29 proc filterForSurfaceFormat*(formats: seq[VkSurfaceFormatKHR]): seq[VkSurfaceFormatKHR] = | 29 proc filterForSurfaceFormat*(formats: seq[VkSurfaceFormatKHR]): seq[VkSurfaceFormatKHR] = |
30 for format in formats: | 30 for format in formats: |
31 if format.format == VK_FORMAT_B8G8R8A8_SRGB and format.colorSpace == VK_COLOR_SPACE_SRGB_NONLINEAR_KHR: | 31 if format.format == VK_FORMAT_B8G8R8A8_SRGB and format.colorSpace == VK_COLOR_SPACE_SRGB_NONLINEAR_KHR: |
32 result.add(format) | 32 result.add(format) |
33 | |
34 proc getSuitableSurfaceFormat*(formats: seq[VkSurfaceFormatKHR]): VkSurfaceFormatKHR = | |
35 let usableSurfaceFormats = filterForSurfaceFormat(formats) | |
36 if len(usableSurfaceFormats) == 0: | |
37 raise newException(Exception, "No suitable surface formats found") | |
38 return usableSurfaceFormats[0] | |
33 | 39 |
34 | 40 |
35 proc cleanString*(str: openArray[char]): string = | 41 proc cleanString*(str: openArray[char]): string = |
36 for i in 0 ..< len(str): | 42 for i in 0 ..< len(str): |
37 if str[i] == char(0): | 43 if str[i] == char(0): |