Skip to content

Commit 66ca663

Browse files
committed
Add bindings for glfw Vulkan functions
1 parent 82da052 commit 66ca663

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

src/zglfw.zig

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,55 @@ pub fn getRequiredInstanceExtensions() Error![][*:0]const u8 {
9090
}
9191
extern 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`
94143
pub const getTime = glfwGetTime;
95144
extern fn glfwGetTime() f64;

0 commit comments

Comments
 (0)