From 5cf71dae3ded8dca2c31f0c5b8a02ebb0a35881b Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Thu, 17 Mar 2022 11:46:56 -0700 Subject: [PATCH] gpu: implement CommandEncoder.copyTextureToTexture Signed-off-by: Stephen Gutekanst --- gpu/src/CommandEncoder.zig | 13 +++++++++++-- gpu/src/NativeInstance.zig | 15 +++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/gpu/src/CommandEncoder.zig b/gpu/src/CommandEncoder.zig index 6fa3b2b2..33d1c645 100644 --- a/gpu/src/CommandEncoder.zig +++ b/gpu/src/CommandEncoder.zig @@ -23,8 +23,7 @@ pub const VTable = struct { copyBufferToBuffer: fn (ptr: *anyopaque, source: Buffer, source_offset: u64, destination: Buffer, destination_offset: u64, size: u64) void, copyBufferToTexture: fn (ptr: *anyopaque, source: *const ImageCopyBuffer, destination: *const ImageCopyTexture, copy_size: *const Extent3D) void, copyTextureToBuffer: fn (ptr: *anyopaque, source: *const ImageCopyTexture, destination: *const ImageCopyBuffer, copy_size: *const Extent3D) void, - // copyTextureToTexture: fn (ptr: *anyopaque, source: *const ImageCopyTexture, destination: *const ImageCopyTexture, copy_size: *const Extent3D) void, - // WGPU_EXPORT void wgpuCommandEncoderCopyTextureToTexture(WGPUCommandEncoder commandEncoder, WGPUImageCopyTexture const * source, WGPUImageCopyTexture const * destination, WGPUExtent3D const * copySize); + copyTextureToTexture: fn (ptr: *anyopaque, source: *const ImageCopyTexture, destination: *const ImageCopyTexture, copy_size: *const Extent3D) void, finish: fn (ptr: *anyopaque, descriptor: ?*const CommandBuffer.Descriptor) CommandBuffer, // injectValidationError: fn (ptr: *anyopaque, message: [*:0]const u8) void, // WGPU_EXPORT void wgpuCommandEncoderInjectValidationError(WGPUCommandEncoder commandEncoder, char const * message); @@ -88,6 +87,15 @@ pub inline fn copyTextureToBuffer( enc.vtable.copyTextureToBuffer(enc.ptr, source, destination, copy_size); } +pub inline fn copyTextureToTexture( + enc: CommandEncoder, + source: *const ImageCopyTexture, + destination: *const ImageCopyTexture, + copy_size: *const Extent3D, +) void { + enc.vtable.copyTextureToTexture(enc.ptr, source, destination, copy_size); +} + pub inline fn finish(enc: CommandEncoder, descriptor: ?*const CommandBuffer.Descriptor) CommandBuffer { return enc.vtable.finish(enc.ptr, descriptor); } @@ -126,6 +134,7 @@ test { _ = copyBufferToBuffer; _ = copyBufferToTexture; _ = copyTextureToBuffer; + _ = copyTextureToTexture; _ = finish; _ = insertDebugMarker; _ = popDebugGroup; diff --git a/gpu/src/NativeInstance.zig b/gpu/src/NativeInstance.zig index 33eb84ef..a2847f0e 100644 --- a/gpu/src/NativeInstance.zig +++ b/gpu/src/NativeInstance.zig @@ -1669,6 +1669,21 @@ const command_encoder_vtable = CommandEncoder.VTable{ ); } }).copyTextureToBuffer, + .copyTextureToTexture = (struct { + pub fn copyTextureToTexture( + ptr: *anyopaque, + source: *const ImageCopyTexture, + destination: *const ImageCopyTexture, + copy_size: *const Extent3D, + ) void { + c.wgpuCommandEncoderCopyTextureToTexture( + @ptrCast(c.WGPUCommandEncoder, ptr), + &convertImageCopyTexture(source), + &convertImageCopyTexture(destination), + @ptrCast(*const c.WGPUExtent3D, copy_size), + ); + } + }).copyTextureToTexture, .popDebugGroup = (struct { pub fn popDebugGroup(ptr: *anyopaque) void { c.wgpuCommandEncoderPopDebugGroup(@ptrCast(c.WGPUCommandEncoder, ptr));