comparison src/zamikongine/vulkan.nim @ 38:c3c963e7c1a6

did: tons of stuff, input, refactoring, fix some errors, some template improvment, sorry for super-commit
author Sam <sam@basx.dev>
date Wed, 18 Jan 2023 09:52:03 +0700
parents b55d6ecde79d
children
comparison
equal deleted inserted replaced
37:6859bcfabc62 38:c3c963e7c1a6
6 ## Any edits will be overwritten by the generator. 6 ## Any edits will be overwritten by the generator.
7 7
8 when defined(linux): 8 when defined(linux):
9 import x11/x 9 import x11/x
10 import x11/xlib 10 import x11/xlib
11 when defined(windows):
12 import winim
13
14 var vkGetProc: proc(procName: cstring): pointer {.cdecl.}
15
16 import dynlib
17
18 when defined(windows):
19 {. emit: """#define VK_USE_PLATFORM_WIN32_KHR""" .}
20 const vkDLL = "vulkan-1.dll"
21 elif defined(linux):
22 {.passl: gorge("pkg-config --libs vulkan").}
23 {. emit: """#define VK_USE_PLATFORM_X11_KHR""" .}
24 const vkDLL = "libvulkan.so.1" 11 const vkDLL = "libvulkan.so.1"
25 else: 12 else:
26 raise quit("Unsupported platform") 13 type
14 Display* = ptr object
15 VisualID* = ptr object
16 Window* = ptr object
17
18 when defined(windows):
19 const vkDLL = "vulkan-1.dll"
20 import winim
21 else:
22 type
23 HINSTANCE* = ptr object
24 HWND* = ptr object
25 HMONITOR* = ptr object
26 HANDLE* = ptr object
27 SECURITY_ATTRIBUTES* = ptr object
28 DWORD* = ptr object
29 LPCWSTR* = ptr object
30
31 var vkGetProc: proc(procName: cstring): pointer {.cdecl.}
32
33 import dynlib
27 34
28 let vkHandleDLL = loadLib(vkDLL) 35 let vkHandleDLL = loadLib(vkDLL)
29 if isNil(vkHandleDLL): 36 if isNil(vkHandleDLL):
30 quit("could not load: " & vkDLL) 37 quit("could not load: " & vkDLL)
31 38
1186 VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 1193 VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8
1187 VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 1194 VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16
1188 1195
1189 # Types 1196 # Types
1190 1197
1191 # stub types if we are on the wrong platform, so we don't need to "when" all platform functions
1192 when not defined(linux):
1193 type
1194 Display* = ptr object
1195 VisualID* = ptr object
1196 Window* = ptr object
1197 when not defined(windows):
1198 type
1199 HINSTANCE* = ptr object
1200 HWND* = ptr object
1201 HMONITOR* = ptr object
1202 HANDLE* = ptr object
1203 SECURITY_ATTRIBUTES* = ptr object
1204 DWORD* = ptr object
1205 LPCWSTR* = ptr object
1206
1207 type 1198 type
1208 RROutput* = ptr object 1199 RROutput* = ptr object
1209 wl_display* = ptr object 1200 wl_display* = ptr object
1210 wl_surface* = ptr object 1201 wl_surface* = ptr object
1211 xcb_connection_t* = ptr object 1202 xcb_connection_t* = ptr object