gpu: implement SwapChain.present, SwapChain.getCurrentTextureView

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
Stephen Gutekanst 2022-03-11 20:14:58 -07:00 committed by Stephen Gutekanst
parent cc40004a5f
commit ef3eed7afb
2 changed files with 22 additions and 3 deletions

View file

@ -1,5 +1,6 @@
const std = @import("std");
const Texture = @import("Texture.zig");
const TextureView = @import("TextureView.zig");
const PresentMode = @import("enums.zig").PresentMode;
const SwapChain = @This();
@ -13,9 +14,8 @@ pub const VTable = struct {
reference: fn (ptr: *anyopaque) void,
release: fn (ptr: *anyopaque) void,
configure: fn (ptr: *anyopaque, format: Texture.Format, allowed_usage: Texture.Usage, width: u32, height: u32) void,
// TODO:
// WGPU_EXPORT WGPUTextureView wgpuSwapChainGetCurrentTextureView(WGPUSwapChain swapChain);
// WGPU_EXPORT void wgpuSwapChainPresent(WGPUSwapChain swapChain);
getCurrentTextureView: fn (ptr: *anyopaque) TextureView,
present: fn (ptr: *anyopaque) void,
};
pub inline fn reference(swap_chain: SwapChain) void {
@ -26,6 +26,7 @@ pub inline fn release(swap_chain: SwapChain) void {
swap_chain.vtable.release(swap_chain.ptr);
}
// TODO: remove this and/or prefix with dawn? Seems to be deprecated / not in upstream webgpu.h
pub inline fn configure(
swap_chain: SwapChain,
format: Texture.Format,
@ -36,6 +37,14 @@ pub inline fn configure(
swap_chain.vtable.configure(swap_chain.ptr, format, allowed_usage, width, height);
}
pub inline fn getCurrentTextureView(swap_chain: SwapChain) TextureView {
return swap_chain.vtable.getCurrentTextureView(swap_chain.ptr);
}
pub inline fn present(swap_chain: SwapChain) void {
swap_chain.vtable.present(swap_chain.ptr);
}
pub const Descriptor = struct {
label: ?[:0]const u8 = null,
usage: Texture.Usage,