From c4cfc8459dbc6fde74d5553519dc3fcb1afccad0 Mon Sep 17 00:00:00 2001 From: skal Date: Sat, 14 Feb 2026 12:38:59 +0100 Subject: Refactor: factorize common WGPU patterns into helper functions Add texture creation helpers (gpu_create_texture_2d, gpu_create_storage_texture_2d, gpu_create_mip_view) and extend BindGroupLayoutBuilder with uint_texture and storage_texture methods. Refactored files: - cnn_v2_effect.cc: Use texture helpers (~70% code reduction in create_textures) - rotating_cube_effect.cc: Use BindGroupLayoutBuilder and texture helpers - circle_mask_effect.cc: Use BindGroupBuilder Benefits: - Improved code readability - Reduced boilerplate for texture/bind group creation - Consistent patterns across effects Co-Authored-By: Claude Sonnet 4.5 --- src/gpu/gpu.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/gpu/gpu.h') diff --git a/src/gpu/gpu.h b/src/gpu/gpu.h index c7ee89f..b52d6ab 100644 --- a/src/gpu/gpu.h +++ b/src/gpu/gpu.h @@ -82,8 +82,23 @@ inline void gpu_init_color_attachment(WGPURenderPassColorAttachment& attachment, #endif } +// Texture creation helper +struct TextureWithView { + WGPUTexture texture; + WGPUTextureView view; +}; + GpuBuffer gpu_create_buffer(WGPUDevice device, size_t size, uint32_t usage, const void* data = nullptr); +TextureWithView gpu_create_texture_2d(WGPUDevice device, uint32_t width, + uint32_t height, WGPUTextureFormat format, + WGPUTextureUsage usage, + uint32_t mip_levels = 1); +TextureWithView gpu_create_storage_texture_2d(WGPUDevice device, uint32_t width, + uint32_t height, + WGPUTextureFormat format); +WGPUTextureView gpu_create_mip_view(WGPUTexture texture, + WGPUTextureFormat format, uint32_t mip_level); ComputePass gpu_create_compute_pass(WGPUDevice device, const char* shader_code, ResourceBinding* bindings, int num_bindings); -- cgit v1.2.3