diff --git a/src/core/platform/wasm.zig b/src/core/Wasm.zig similarity index 100% rename from src/core/platform/wasm.zig rename to src/core/Wasm.zig diff --git a/src/core/platform/wayland.zig b/src/core/Wayland.zig similarity index 100% rename from src/core/platform/wayland.zig rename to src/core/Wayland.zig diff --git a/src/core/platform/x11.zig b/src/core/X11.zig similarity index 100% rename from src/core/platform/x11.zig rename to src/core/X11.zig diff --git a/src/core/platform/common.zig b/src/core/common.zig similarity index 100% rename from src/core/platform/common.zig rename to src/core/common.zig diff --git a/src/core/platform/native_entrypoint.zig b/src/core/native_entrypoint.zig similarity index 100% rename from src/core/platform/native_entrypoint.zig rename to src/core/native_entrypoint.zig diff --git a/src/core/platform/wasm/Core.zig b/src/core/wasm/Core.zig similarity index 100% rename from src/core/platform/wasm/Core.zig rename to src/core/wasm/Core.zig diff --git a/src/core/platform/wasm/Timer.zig b/src/core/wasm/Timer.zig similarity index 100% rename from src/core/platform/wasm/Timer.zig rename to src/core/wasm/Timer.zig diff --git a/src/core/platform/wasm/entrypoint.zig b/src/core/wasm/entrypoint.zig similarity index 100% rename from src/core/platform/wasm/entrypoint.zig rename to src/core/wasm/entrypoint.zig diff --git a/src/core/platform/wasm/js.zig b/src/core/wasm/js.zig similarity index 100% rename from src/core/platform/wasm/js.zig rename to src/core/wasm/js.zig diff --git a/src/core/platform/wasm/mach.js b/src/core/wasm/mach.js similarity index 100% rename from src/core/platform/wasm/mach.js rename to src/core/wasm/mach.js diff --git a/src/core/platform/wayland/Core.zig b/src/core/wayland/Core.zig similarity index 100% rename from src/core/platform/wayland/Core.zig rename to src/core/wayland/Core.zig diff --git a/src/core/platform/wayland/wayland.c b/src/core/wayland/wayland.c similarity index 100% rename from src/core/platform/wayland/wayland.c rename to src/core/wayland/wayland.c diff --git a/src/core/platform/x11/Core.zig b/src/core/x11/Core.zig similarity index 100% rename from src/core/platform/x11/Core.zig rename to src/core/x11/Core.zig diff --git a/src/core/platform/x11/unicode.zig b/src/core/x11/unicode.zig similarity index 100% rename from src/core/platform/x11/unicode.zig rename to src/core/x11/unicode.zig diff --git a/src/sysgpu/sysgpu/adapter.zig b/src/sysgpu/sysgpu/adapter.zig index 09a1db36..cd380f01 100644 --- a/src/sysgpu/sysgpu/adapter.zig +++ b/src/sysgpu/sysgpu/adapter.zig @@ -1,6 +1,5 @@ const std = @import("std"); const testing = std.testing; -const dawn = @import("dawn.zig"); const Bool32 = @import("main.zig").Bool32; const ChainedStructOut = @import("main.zig").ChainedStructOut; const Device = @import("device.zig").Device; @@ -10,6 +9,7 @@ const SupportedLimits = @import("main.zig").SupportedLimits; const RequestDeviceStatus = @import("main.zig").RequestDeviceStatus; const BackendType = @import("main.zig").BackendType; const RequestDeviceCallback = @import("main.zig").RequestDeviceCallback; +const PowerPreference = @import("main.zig").PowerPreference; const Impl = @import("interface.zig").Impl; pub const Adapter = opaque { @@ -29,10 +29,17 @@ pub const Adapter = opaque { } }; + pub const PropertiesPowerPreference = extern struct { + chain: ChainedStructOut = .{ + .next = null, + .s_type = .adapter_properties_power_preference, + }, + power_preference: PowerPreference = .undefined, + }; + pub const Properties = extern struct { pub const NextInChain = extern union { generic: ?*const ChainedStructOut, - dawn_adapter_properties_power_preference: *const dawn.AdapterPropertiesPowerPreference, }; next_in_chain: NextInChain = .{ .generic = null }, diff --git a/src/sysgpu/sysgpu/buffer.zig b/src/sysgpu/sysgpu/buffer.zig index ada4ddbb..d56c836a 100644 --- a/src/sysgpu/sysgpu/buffer.zig +++ b/src/sysgpu/sysgpu/buffer.zig @@ -1,7 +1,6 @@ const std = @import("std"); const Bool32 = @import("main.zig").Bool32; const ChainedStruct = @import("main.zig").ChainedStruct; -const dawn = @import("dawn.zig"); const MapModeFlags = @import("main.zig").MapModeFlags; const Impl = @import("interface.zig").Impl; @@ -71,7 +70,6 @@ pub const Buffer = opaque { pub const Descriptor = extern struct { pub const NextInChain = extern union { generic: ?*const ChainedStruct, - dawn_buffer_descriptor_error_info_from_wire_client: *const dawn.BufferDescriptorErrorInfoFromWireClient, }; next_in_chain: NextInChain = .{ .generic = null }, diff --git a/src/sysgpu/sysgpu/command_encoder.zig b/src/sysgpu/sysgpu/command_encoder.zig index ae4bfd1d..1473b781 100644 --- a/src/sysgpu/sysgpu/command_encoder.zig +++ b/src/sysgpu/sysgpu/command_encoder.zig @@ -11,13 +11,11 @@ const ImageCopyBuffer = @import("main.zig").ImageCopyBuffer; const ImageCopyTexture = @import("main.zig").ImageCopyTexture; const Extent3D = @import("main.zig").Extent3D; const Impl = @import("interface.zig").Impl; -const dawn = @import("dawn.zig"); pub const CommandEncoder = opaque { pub const Descriptor = extern struct { pub const NextInChain = extern union { generic: ?*const ChainedStruct, - dawn_encoder_internal_usage_descriptor: *const dawn.EncoderInternalUsageDescriptor, }; next_in_chain: NextInChain = .{ .generic = null }, diff --git a/src/sysgpu/sysgpu/dawn.zig b/src/sysgpu/sysgpu/dawn.zig deleted file mode 100644 index 08bdaf81..00000000 --- a/src/sysgpu/sysgpu/dawn.zig +++ /dev/null @@ -1,74 +0,0 @@ -const Bool32 = @import("main.zig").Bool32; -const ChainedStruct = @import("main.zig").ChainedStruct; -const ChainedStructOut = @import("main.zig").ChainedStructOut; -const PowerPreference = @import("main.zig").PowerPreference; -const Texture = @import("texture.zig").Texture; - -pub const CacheDeviceDescriptor = extern struct { - chain: ChainedStruct = .{ .next = null, .s_type = .dawn_cache_device_descriptor }, - isolation_key: [*:0]const u8 = "", -}; - -pub const EncoderInternalUsageDescriptor = extern struct { - chain: ChainedStruct = .{ .next = null, .s_type = .dawn_encoder_internal_usage_descriptor }, - use_internal_usages: Bool32 = .false, -}; - -pub const MultisampleStateRenderToSingleSampled = extern struct { - chain: ChainedStruct = .{ .next = null, .s_type = .dawn_multisample_state_render_to_single_sampled }, - enabled: Bool32 = .false, -}; - -pub const RenderPassColorAttachmentRenderToSingleSampled = extern struct { - chain: ChainedStruct = .{ .next = null, .s_type = .dawn_render_pass_color_attachment_render_to_single_sampled }, - implicit_sample_count: u32 = 1, -}; - -pub const TextureInternalUsageDescriptor = extern struct { - chain: ChainedStruct = .{ .next = null, .s_type = .dawn_texture_internal_usage_descriptor }, - internal_usage: Texture.UsageFlags = Texture.UsageFlags.none, -}; - -pub const TogglesDescriptor = extern struct { - chain: ChainedStruct = .{ .next = null, .s_type = .dawn_toggles_descriptor }, - enabled_toggles_count: usize = 0, - enabled_toggles: ?[*]const [*:0]const u8 = null, - disabled_toggles_count: usize = 0, - disabled_toggles: ?[*]const [*:0]const u8 = null, - - /// Provides a slightly friendlier Zig API to initialize this structure. - pub inline fn init(v: struct { - chain: ChainedStruct = .{ .next = null, .s_type = .dawn_toggles_descriptor }, - enabled_toggles: ?[]const [*:0]const u8 = null, - disabled_toggles: ?[]const [*:0]const u8 = null, - }) TogglesDescriptor { - return .{ - .chain = v.chain, - .enabled_toggles_count = if (v.enabled_toggles) |e| e.len else 0, - .enabled_toggles = if (v.enabled_toggles) |e| e.ptr else null, - .disabled_toggles_count = if (v.disabled_toggles) |e| e.len else 0, - .disabled_toggles = if (v.disabled_toggles) |e| e.ptr else null, - }; - } -}; - -pub const ShaderModuleSPIRVOptionsDescriptor = extern struct { - chain: ChainedStruct = .{ .next = null, .s_type = .dawn_shader_module_spirv_options_descriptor }, - allow_non_uniform_derivatives: Bool32 = .false, -}; - -pub const AdapterPropertiesPowerPreference = extern struct { - chain: ChainedStructOut = .{ - .next = null, - .s_type = .dawn_adapter_properties_power_preference, - }, - power_preference: PowerPreference = .undefined, -}; - -pub const BufferDescriptorErrorInfoFromWireClient = extern struct { - chain: ChainedStruct = .{ - .next = null, - .s_type = .dawn_buffer_descriptor_error_info_from_wire_client, - }, - out_of_memory: Bool32 = .false, -}; diff --git a/src/sysgpu/sysgpu/device.zig b/src/sysgpu/sysgpu/device.zig index c2444546..972d69ad 100644 --- a/src/sysgpu/sysgpu/device.zig +++ b/src/sysgpu/sysgpu/device.zig @@ -29,7 +29,6 @@ const ErrorCallback = @import("main.zig").ErrorCallback; const CreateComputePipelineAsyncCallback = @import("main.zig").CreateComputePipelineAsyncCallback; const CreateRenderPipelineAsyncCallback = @import("main.zig").CreateRenderPipelineAsyncCallback; const Impl = @import("interface.zig").Impl; -const dawn = @import("dawn.zig"); pub const Device = opaque { pub const LostCallback = *const fn ( @@ -46,8 +45,6 @@ pub const Device = opaque { pub const Descriptor = extern struct { pub const NextInChain = extern union { generic: ?*const ChainedStruct, - dawn_toggles_descriptor: *const dawn.TogglesDescriptor, - dawn_cache_device_descriptor: *const dawn.CacheDeviceDescriptor, }; next_in_chain: NextInChain = .{ .generic = null }, @@ -387,8 +384,6 @@ pub const Device = opaque { Impl.deviceTick(device); } - // Mach WebGPU extension. Supported with mach-gpu-dawn. - // // When making Metal interop with other APIs, we need to be careful that QueueSubmit doesn't // mean that the operations will be visible to other APIs/Metal devices right away. macOS // does have a global queue of graphics operations, but the command buffers are inserted there diff --git a/src/sysgpu/sysgpu/instance.zig b/src/sysgpu/sysgpu/instance.zig index 0cd80d89..5c0acc21 100644 --- a/src/sysgpu/sysgpu/instance.zig +++ b/src/sysgpu/sysgpu/instance.zig @@ -5,13 +5,11 @@ const Adapter = @import("adapter.zig").Adapter; const RequestAdapterOptions = @import("main.zig").RequestAdapterOptions; const RequestAdapterCallback = @import("main.zig").RequestAdapterCallback; const Impl = @import("interface.zig").Impl; -const dawn = @import("dawn.zig"); pub const Instance = opaque { pub const Descriptor = extern struct { pub const NextInChain = extern union { generic: ?*const ChainedStruct, - dawn_toggles_descriptor: *const dawn.TogglesDescriptor, }; next_in_chain: NextInChain = .{ .generic = null }, diff --git a/src/sysgpu/sysgpu/interface.zig b/src/sysgpu/sysgpu/interface.zig index a3c25484..1a631a1e 100644 --- a/src/sysgpu/sysgpu/interface.zig +++ b/src/sysgpu/sysgpu/interface.zig @@ -776,7 +776,6 @@ pub fn Export(comptime T: type) type { T.devicePushErrorScope(device, filter); } - // TODO: dawn: callback not marked as nullable in dawn.json but in fact is. // SYSGPU_EXPORT void sysgpuDeviceSetDeviceLostCallback(WGPUDevice device, WGPUDeviceLostCallback callback, void * userdata); export fn sysgpuDeviceSetDeviceLostCallback(device: *sysgpu.Device, callback: ?sysgpu.Device.LostCallback, userdata: ?*anyopaque) void { T.deviceSetDeviceLostCallback(device, callback, userdata); @@ -787,13 +786,11 @@ pub fn Export(comptime T: type) type { T.deviceSetLabel(device, label); } - // TODO: dawn: callback not marked as nullable in dawn.json but in fact is. // SYSGPU_EXPORT void sysgpuDeviceSetLoggingCallback(WGPUDevice device, WGPULoggingCallback callback, void * userdata); export fn sysgpuDeviceSetLoggingCallback(device: *sysgpu.Device, callback: ?sysgpu.LoggingCallback, userdata: ?*anyopaque) void { T.deviceSetLoggingCallback(device, callback, userdata); } - // TODO: dawn: callback not marked as nullable in dawn.json but in fact is. // SYSGPU_EXPORT void sysgpuDeviceSetUncapturedErrorCallback(WGPUDevice device, WGPUErrorCallback callback, void * userdata); export fn sysgpuDeviceSetUncapturedErrorCallback(device: *sysgpu.Device, callback: ?sysgpu.ErrorCallback, userdata: ?*anyopaque) void { T.deviceSetUncapturedErrorCallback(device, callback, userdata); @@ -1489,7 +1486,6 @@ pub const StubInterface = Interface(struct { unreachable; } - // TODO: dawn: return value not marked as nullable in dawn.json but in fact is. pub inline fn bufferGetConstMappedRange(buffer: *sysgpu.Buffer, offset: usize, size: usize) ?*const anyopaque { _ = buffer; _ = offset; @@ -1497,7 +1493,6 @@ pub const StubInterface = Interface(struct { unreachable; } - // TODO: dawn: return value not marked as nullable in dawn.json but in fact is. pub inline fn bufferGetMappedRange(buffer: *sysgpu.Buffer, offset: usize, size: usize) ?*anyopaque { _ = buffer; _ = offset; diff --git a/src/sysgpu/sysgpu/main.zig b/src/sysgpu/sysgpu/main.zig index 1f17012f..5a51e284 100644 --- a/src/sysgpu/sysgpu/main.zig +++ b/src/sysgpu/sysgpu/main.zig @@ -28,7 +28,6 @@ pub const SwapChain = @import("swap_chain.zig").SwapChain; pub const Texture = @import("texture.zig").Texture; pub const TextureView = @import("texture_view.zig").TextureView; -pub const dawn = @import("dawn.zig"); const instance = @import("instance.zig"); const device = @import("device.zig"); const interface = @import("interface.zig"); @@ -95,7 +94,6 @@ pub const RenderPassTimestampWrite = extern struct { pub const RequestAdapterOptions = extern struct { pub const NextInChain = extern union { generic: ?*const ChainedStruct, - dawn_toggles_descriptor: *const dawn.TogglesDescriptor, }; next_in_chain: NextInChain = .{ .generic = null }, @@ -294,9 +292,6 @@ pub const FeatureName = enum(u32) { rg11_b10_ufloat_renderable = 0x0000000A, bgra8_unorm_storage = 0x0000000B, float32_filterable = 0x0000000C, - dawn_internal_usages = 0x000003ea, - dawn_multi_planar_formats = 0x000003eb, - dawn_native = 0x000003ec, chromium_experimental_dp4a = 0x000003ed, timestamp_query_inside_passes = 0x000003EE, implicit_device_synchronization = 0x000003EF, @@ -434,18 +429,9 @@ pub const SType = enum(u32) { external_texture_binding_layout = 0x0000000D, surface_descriptor_from_windows_swap_chain_panel = 0x0000000E, render_pass_descriptor_max_draw_count = 0x0000000F, - dawn_texture_internal_usage_descriptor = 0x000003E8, - dawn_encoder_internal_usage_descriptor = 0x000003EB, - dawn_instance_descriptor = 0x000003EC, - dawn_cache_device_descriptor = 0x000003ED, - dawn_adapter_properties_power_preference = 0x000003EE, - dawn_buffer_descriptor_error_info_from_wire_client = 0x000003EF, - dawn_toggles_descriptor = 0x000003F0, - dawn_shader_module_spirv_options_descriptor = 0x000003F1, + adapter_properties_power_preference = 0x000003EE, request_adapter_options_luid = 0x000003F2, request_adapter_options_get_gl_proc = 0x000003F3, - dawn_multisample_state_render_to_single_sampled = 0x000003F4, - dawn_render_pass_color_attachment_render_to_single_sampled = 0x000003F5, shared_texture_memory_vk_image_descriptor = 0x0000044C, shared_texture_memory_vk_dedicated_allocation_descriptor = 0x0000044D, shared_texture_memory_a_hardware_buffer_descriptor = 0x0000044E, @@ -605,13 +591,11 @@ pub const ShaderStageFlags = packed struct(u32) { }; pub const ChainedStruct = extern struct { - // TODO: dawn: not marked as nullable in dawn.json but in fact is. next: ?*const ChainedStruct = null, s_type: SType, }; pub const ChainedStructOut = extern struct { - // TODO: dawn: not marked as nullable in dawn.json but in fact is. next: ?*ChainedStructOut = null, s_type: SType, }; @@ -720,7 +704,6 @@ pub const CopyTextureForBrowserOptions = extern struct { pub const MultisampleState = extern struct { pub const NextInChain = extern union { generic: ?*const ChainedStruct, - dawn_multisample_state_render_to_single_sampled: *const dawn.MultisampleStateRenderToSingleSampled, }; next_in_chain: NextInChain = .{ .generic = null }, @@ -853,7 +836,6 @@ pub const ProgrammableStageDescriptor = extern struct { pub const RenderPassColorAttachment = extern struct { pub const NextInChain = extern union { generic: ?*const ChainedStruct, - dawn_render_pass_color_attachment_render_to_single_sampled: *const dawn.RenderPassColorAttachmentRenderToSingleSampled, }; next_in_chain: NextInChain = .{ .generic = null }, diff --git a/src/sysgpu/sysgpu/queue.zig b/src/sysgpu/sysgpu/queue.zig index 18f2921c..44c004c2 100644 --- a/src/sysgpu/sysgpu/queue.zig +++ b/src/sysgpu/sysgpu/queue.zig @@ -35,7 +35,6 @@ pub const Queue = opaque { Impl.queueCopyTextureForBrowser(queue, source, destination, copy_size, options); } - // TODO: dawn: does not allow unsetting this callback to null pub inline fn onSubmittedWorkDone( queue: *Queue, signal_value: u64, diff --git a/src/sysgpu/sysgpu/shader_module.zig b/src/sysgpu/sysgpu/shader_module.zig index 152c8c11..3e524dc5 100644 --- a/src/sysgpu/sysgpu/shader_module.zig +++ b/src/sysgpu/sysgpu/shader_module.zig @@ -3,7 +3,6 @@ const CompilationInfoCallback = @import("main.zig").CompilationInfoCallback; const CompilationInfoRequestStatus = @import("main.zig").CompilationInfoRequestStatus; const CompilationInfo = @import("main.zig").CompilationInfo; const Impl = @import("interface.zig").Impl; -const dawn = @import("dawn.zig"); pub const ShaderModule = opaque { pub const Descriptor = extern struct { @@ -13,7 +12,6 @@ pub const ShaderModule = opaque { wgsl_descriptor: ?*const WGSLDescriptor, hlsl_descriptor: ?*const HLSLDescriptor, msl_descriptor: ?*const MSLDescriptor, - dawn_shader_module_spirv_options_descriptor: ?*const dawn.ShaderModuleSPIRVOptionsDescriptor, }; next_in_chain: NextInChain = .{ .generic = null }, diff --git a/src/sysgpu/sysgpu/texture.zig b/src/sysgpu/sysgpu/texture.zig index fa8a744e..ed2ec69c 100644 --- a/src/sysgpu/sysgpu/texture.zig +++ b/src/sysgpu/sysgpu/texture.zig @@ -5,7 +5,6 @@ const TextureView = @import("texture_view.zig").TextureView; const Extent3D = @import("main.zig").Extent3D; const Impl = @import("interface.zig").Impl; const types = @import("main.zig"); -const dawn = @import("dawn.zig"); pub const Texture = opaque { pub const Aspect = enum(u32) { @@ -171,7 +170,6 @@ pub const Texture = opaque { pub const Descriptor = extern struct { pub const NextInChain = extern union { generic: ?*const ChainedStruct, - dawn_texture_internal_usage_descriptor: *const dawn.TextureInternalUsageDescriptor, }; next_in_chain: NextInChain = .{ .generic = null }, diff --git a/src/sysgpu/vulkan.zig b/src/sysgpu/vulkan.zig index 9440c7ab..405d8f91 100644 --- a/src/sysgpu/vulkan.zig +++ b/src/sysgpu/vulkan.zig @@ -595,14 +595,11 @@ pub const Device = struct { pub fn deinit(device: *Device) void { const vk_device = device.vk_device; - if (device.lost_cb) |lost_cb| { - lost_cb(.destroyed, "Device was destroyed.", device.lost_cb_userdata); - } - device.waitAll() catch {}; device.processQueuedOperations(); device.map_callbacks.deinit(allocator); + for (device.submit_objects.items) |*submit_object| submit_object.deinit(); device.submit_objects.deinit(allocator); device.streaming_manager.deinit(); @@ -2941,7 +2938,7 @@ pub const StateTracker = struct { memory_barriers.len, &memory_barriers.buffer, 0, - undefined, + null, @intCast(tracker.image_barriers.items.len), tracker.image_barriers.items.ptr, );