From 8089d3356eecf224b0724466624f46c2c525f296 Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Mon, 29 Apr 2024 11:58:15 -0700 Subject: [PATCH] sysgpu: implement texture getWidth/getHeight Signed-off-by: Stephen Gutekanst --- src/sysgpu/d3d12.zig | 8 ++++++++ src/sysgpu/main.zig | 12 ++++++------ src/sysgpu/metal.zig | 8 ++++++++ src/sysgpu/opengl.zig | 8 ++++++++ src/sysgpu/vulkan.zig | 8 ++++++++ 5 files changed, 38 insertions(+), 6 deletions(-) diff --git a/src/sysgpu/d3d12.zig b/src/sysgpu/d3d12.zig index c2293170..8cc1e56b 100644 --- a/src/sysgpu/d3d12.zig +++ b/src/sysgpu/d3d12.zig @@ -1728,6 +1728,14 @@ pub const Texture = struct { return TextureView.init(texture, desc); } + pub fn getWidth(texture: *Texture) u32 { + return texture.size.width; + } + + pub fn getHeight(texture: *Texture) u32 { + return texture.size.height; + } + // Internal pub fn calcSubresource(texture: *Texture, mip_level: u32, array_slice: u32) u32 { return mip_level + (array_slice * texture.mip_level_count); diff --git a/src/sysgpu/main.zig b/src/sysgpu/main.zig index caa5e6f2..2c7afada 100644 --- a/src/sysgpu/main.zig +++ b/src/sysgpu/main.zig @@ -1295,9 +1295,9 @@ pub const Impl = sysgpu.Interface(struct { @panic("unimplemented"); } - pub inline fn textureGetHeight(texture: *sysgpu.Texture) u32 { - _ = texture; - @panic("unimplemented"); + pub inline fn textureGetHeight(texture_raw: *sysgpu.Texture) u32 { + const texture: *impl.Texture = @ptrCast(@alignCast(texture_raw)); + return texture.getHeight(); } pub inline fn textureGetMipLevelCount(texture: *sysgpu.Texture) u32 { @@ -1315,9 +1315,9 @@ pub const Impl = sysgpu.Interface(struct { @panic("unimplemented"); } - pub inline fn textureGetWidth(texture: *sysgpu.Texture) u32 { - _ = texture; - @panic("unimplemented"); + pub inline fn textureGetWidth(texture_raw: *sysgpu.Texture) u32 { + const texture: *impl.Texture = @ptrCast(@alignCast(texture_raw)); + return texture.getHeight(); } pub inline fn textureSetLabel(texture: *sysgpu.Texture, label: [*:0]const u8) void { diff --git a/src/sysgpu/metal.zig b/src/sysgpu/metal.zig index 8fb0d56b..45083bfa 100644 --- a/src/sysgpu/metal.zig +++ b/src/sysgpu/metal.zig @@ -636,6 +636,14 @@ pub const Texture = struct { allocator.destroy(texture); } + pub fn getWidth(texture: *Texture) u32 { + return @intCast(texture.mtl_texture.width()); + } + + pub fn getHeight(texture: *Texture) u32 { + return @intCast(texture.mtl_texture.height()); + } + pub fn createView(texture: *Texture, desc: *const sysgpu.TextureView.Descriptor) !*TextureView { return TextureView.init(texture, desc); } diff --git a/src/sysgpu/opengl.zig b/src/sysgpu/opengl.zig index 572d3e07..f4306c7b 100644 --- a/src/sysgpu/opengl.zig +++ b/src/sysgpu/opengl.zig @@ -808,6 +808,14 @@ pub const Texture = struct { allocator.destroy(texture); } + pub fn getWidth(texture: *Texture) u32 { + return texture.size.width; + } + + pub fn getHeight(texture: *Texture) u32 { + return texture.size.height; + } + pub fn createView(texture: *Texture, desc: *const sysgpu.TextureView.Descriptor) !*TextureView { return TextureView.init(texture, desc); } diff --git a/src/sysgpu/vulkan.zig b/src/sysgpu/vulkan.zig index 989e9b73..9e42b117 100644 --- a/src/sysgpu/vulkan.zig +++ b/src/sysgpu/vulkan.zig @@ -1440,6 +1440,14 @@ pub const Texture = struct { allocator.destroy(texture); } + pub fn getWidth(texture: *Texture) u32 { + return texture.size.width; + } + + pub fn getHeight(texture: *Texture) u32 { + return texture.size.height; + } + pub fn createView(texture: *Texture, desc: *const sysgpu.TextureView.Descriptor) !*TextureView { return TextureView.init(texture, desc, texture.extent); }