@@ -90,6 +90,55 @@ pub fn getRequiredInstanceExtensions() Error![][*:0]const u8 {
9090}
9191extern fn glfwGetRequiredInstanceExtensions (count : * u32 ) ? * ? [* :0 ]const u8 ;
9292
93+ pub const VulkanFn = * const fn () callconv (.c ) void ;
94+ pub const VkInstance = ? * const anyopaque ;
95+ pub const VkPhysicalDevice = ? * const anyopaque ;
96+ pub const VkAllocationCallbacks = anyopaque ;
97+ pub const VkSurfaceKHR = anyopaque ;
98+
99+ pub fn getInstanceProcAddress (instance : VkInstance , procname : [* :0 ]const u8 ) Error ! VulkanFn {
100+ if (glfwGetInstanceProcAddress (instance , procname )) | address | {
101+ return address ;
102+ }
103+ try maybeError ();
104+ return error .APIUnavailable ;
105+ }
106+ extern fn glfwGetInstanceProcAddress (instance : VkInstance , procname : [* :0 ]const u8 ) ? VulkanFn ;
107+
108+ pub fn getPhysicalDevicePresentationSupport (
109+ instance : VkInstance ,
110+ device : VkPhysicalDevice ,
111+ queuefamily : u32 ,
112+ ) Error ! bool {
113+ const result = glfwGetPhysicalDevicePresentationSupport (instance , device , queuefamily ) == TRUE ;
114+ try maybeError ();
115+ return result ;
116+ }
117+ extern fn glfwGetPhysicalDevicePresentationSupport (
118+ instance : VkInstance ,
119+ device : VkPhysicalDevice ,
120+ queuefamily : u32 ,
121+ ) Bool ;
122+
123+ pub fn createWindowSurface (
124+ instance : VkInstance ,
125+ window : * Window ,
126+ allocator : ? * const VkAllocationCallbacks ,
127+ surface : * VkSurfaceKHR ,
128+ ) Error ! void {
129+ if (glfwCreateWindowSurface (instance , window , allocator , surface ) == 0 ) {
130+ return ;
131+ }
132+ try maybeError ();
133+ return Error .APIUnavailable ;
134+ }
135+ extern fn glfwCreateWindowSurface (
136+ instance : VkInstance ,
137+ window : * Window ,
138+ allocator : ? * const VkAllocationCallbacks ,
139+ surface : * VkSurfaceKHR ,
140+ ) c_int ;
141+
93142/// `pub fn getTime() f64`
94143pub const getTime = glfwGetTime ;
95144extern fn glfwGetTime () f64 ;
0 commit comments