WSI is finally working
Build / build (push) Failing after 30s
Test / build_and_test (push) Failing after 1m1s

This commit is contained in:
2026-05-05 13:58:01 +02:00
parent e93aa8d034
commit 95810d6163
13 changed files with 98 additions and 83 deletions
-2
View File
@@ -25,11 +25,9 @@ fn castExtension(comptime ext: vk.ApiInfo) vk.ExtensionProperties {
}
pub const EXTENSIONS = [_]vk.ExtensionProperties{
//castExtension(vk.extensions.lunarg_direct_driver_loading),
castExtension(vk.extensions.khr_get_physical_device_properties_2),
castExtension(vk.extensions.khr_surface),
castExtension(vk.extensions.khr_wayland_surface),
castExtension(vk.extensions.khr_swapchain),
};
pub fn create(allocator: std.mem.Allocator, infos: *const vk.InstanceCreateInfo) VkError!*Interface {
+27
View File
@@ -13,6 +13,19 @@ const SurfaceKHR = base.SurfaceKHR;
const Self = @This();
pub const Interface = base.PhysicalDevice;
fn castExtension(comptime ext: vk.ApiInfo) vk.ExtensionProperties {
var props: vk.ExtensionProperties = .{
.extension_name = @splat(0),
.spec_version = @bitCast(ext.version),
};
@memcpy(props.extension_name[0..ext.name.len], ext.name);
return props;
}
const EXTENSIONS = [_]vk.ExtensionProperties{
castExtension(vk.extensions.khr_swapchain),
};
// Device name should always be the same so avoid reprocessing it multiple times
var device_name: [vk.MAX_PHYSICAL_DEVICE_NAME_SIZE]u8 = @splat(0);
@@ -31,6 +44,7 @@ pub fn create(allocator: std.mem.Allocator, instance: *base.Instance) VkError!*S
.getFormatProperties = getFormatProperties,
.getImageFormatProperties = getImageFormatProperties,
.getSparseImageFormatProperties = getSparseImageFormatProperties,
.enumerateExtensionProperties = enumerateExtensionProperties,
.release = destroy,
// VK_KHR_get_physical_device_properties_2
@@ -234,6 +248,19 @@ pub fn createDevice(interface: *Interface, allocator: std.mem.Allocator, infos:
return &device.interface;
}
pub fn enumerateExtensionProperties(_: *const Interface, layer_name: ?[]const u8, count: *u32, p_properties: ?[*]vk.ExtensionProperties) VkError!void {
if (layer_name) |_| {
return VkError.LayerNotPresent;
}
count.* = EXTENSIONS.len;
if (p_properties) |properties| {
for (EXTENSIONS, properties[0..]) |ext, *prop| {
prop.* = ext;
}
}
}
pub fn getFormatProperties(interface: *Interface, format: vk.Format) VkError!vk.FormatProperties {
_ = interface;
var properties: vk.FormatProperties = .{};