improving function maps
This commit is contained in:
@@ -13,17 +13,25 @@ const VulkanAllocator = @import("VulkanAllocator.zig");
|
|||||||
const Instance = @import("Instance.zig");
|
const Instance = @import("Instance.zig");
|
||||||
const PhysicalDevice = @import("PhysicalDevice.zig");
|
const PhysicalDevice = @import("PhysicalDevice.zig");
|
||||||
|
|
||||||
|
fn functionMapElement(name: []const u8) struct { []const u8, vk.PfnVoidFunction } {
|
||||||
|
if (!std.meta.hasFn(@This(), name)) {
|
||||||
|
std.log.scoped(.functionMapElement).err("Could not find function {s}", .{name});
|
||||||
|
return .{ name, null };
|
||||||
|
}
|
||||||
|
return .{ name, @as(vk.PfnVoidFunction, @ptrCast(&@field(@This(), name))) };
|
||||||
|
}
|
||||||
|
|
||||||
pub export fn vkGetInstanceProcAddr(p_instance: vk.Instance, p_name: ?[*:0]const u8) callconv(vk.vulkan_call_conv) vk.PfnVoidFunction {
|
pub export fn vkGetInstanceProcAddr(p_instance: vk.Instance, p_name: ?[*:0]const u8) callconv(vk.vulkan_call_conv) vk.PfnVoidFunction {
|
||||||
const global_pfn_map = std.StaticStringMap(vk.PfnVoidFunction).initComptime(.{
|
const global_pfn_map = std.StaticStringMap(vk.PfnVoidFunction).initComptime(.{
|
||||||
.{ "vkGetInstanceProcAddr", @as(vk.PfnVoidFunction, @ptrCast(&vkGetInstanceProcAddr)) },
|
functionMapElement("vkGetInstanceProcAddr"),
|
||||||
.{ "vkCreateInstance", @as(vk.PfnVoidFunction, @ptrCast(&vkCreateInstance)) },
|
functionMapElement("vkCreateInstance"),
|
||||||
});
|
});
|
||||||
|
|
||||||
const instance_pfn_map = std.StaticStringMap(vk.PfnVoidFunction).initComptime(.{
|
const instance_pfn_map = std.StaticStringMap(vk.PfnVoidFunction).initComptime(.{
|
||||||
.{ "vkDestroyInstance", @as(vk.PfnVoidFunction, @ptrCast(&vkDestroyInstance)) },
|
functionMapElement("vkDestroyInstance"),
|
||||||
.{ "vkEnumeratePhysicalDevices", @as(vk.PfnVoidFunction, @ptrCast(&vkEnumeratePhysicalDevices)) },
|
functionMapElement("vkEnumeratePhysicalDevices"),
|
||||||
.{ "vkGetPhysicalDeviceProperties", @as(vk.PfnVoidFunction, @ptrCast(&vkGetPhysicalDeviceProperties)) },
|
functionMapElement("vkGetPhysicalDeviceProperties"),
|
||||||
.{ "vkGetPhysicalDeviceProperties", @as(vk.PfnVoidFunction, @ptrCast(&vkGetPhysicalDeviceMemoryProperties)) },
|
functionMapElement("vkGetPhysicalDeviceProperties"),
|
||||||
});
|
});
|
||||||
|
|
||||||
if (p_name == null) {
|
if (p_name == null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user