diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-14 14:03:58 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-14 14:03:58 +0100 |
| commit | 61ced8aa1946cc32de4328cc75b5faf6b77723be (patch) | |
| tree | 142bad05c24362d7051e80acabaddd6bac2bb753 /src/gpu | |
| parent | 197a03c24baba3acc35327e0e126ec49754f9945 (diff) | |
Refactor: add gpu_create_texture_view_2d helper
Reduces WGPUTextureViewDescriptor boilerplate from 5-7 lines to 1-2.
Helper supports optional mip_levels parameter (defaults to 1).
Updated 17 call sites across gpu/, tests/, and tools/.
Net: -82 lines. All tests passing (34/34).
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Diffstat (limited to 'src/gpu')
| -rw-r--r-- | src/gpu/effect.cc | 30 | ||||
| -rw-r--r-- | src/gpu/gpu.cc | 14 | ||||
| -rw-r--r-- | src/gpu/gpu.h | 3 | ||||
| -rw-r--r-- | src/gpu/texture_manager.cc | 60 |
4 files changed, 37 insertions, 70 deletions
diff --git a/src/gpu/effect.cc b/src/gpu/effect.cc index 3ee2acd..52128c4 100644 --- a/src/gpu/effect.cc +++ b/src/gpu/effect.cc @@ -127,14 +127,10 @@ void MainSequence::create_framebuffers(int width, int height) { framebuffer_a_ = wgpuDeviceCreateTexture(gpu_ctx.device, &desc); framebuffer_b_ = wgpuDeviceCreateTexture(gpu_ctx.device, &desc); - WGPUTextureViewDescriptor view_desc = {}; - view_desc.dimension = WGPUTextureViewDimension_2D; - view_desc.format = gpu_ctx.format; - view_desc.mipLevelCount = 1; - view_desc.arrayLayerCount = 1; - - framebuffer_view_a_ = wgpuTextureCreateView(framebuffer_a_, &view_desc); - framebuffer_view_b_ = wgpuTextureCreateView(framebuffer_b_, &view_desc); + framebuffer_view_a_ = + gpu_create_texture_view_2d(framebuffer_a_, gpu_ctx.format); + framebuffer_view_b_ = + gpu_create_texture_view_2d(framebuffer_b_, gpu_ctx.format); // Depth Buffer WGPUTextureDescriptor depth_desc = {}; @@ -478,14 +474,7 @@ void MainSequence::register_auxiliary_texture(const char* name, int width, FATAL_CHECK(!texture, "Failed to create auxiliary texture: %s\n", name); // Create view - const WGPUTextureViewDescriptor view_desc = { - .format = gpu_ctx.format, - .dimension = WGPUTextureViewDimension_2D, - .mipLevelCount = 1, - .arrayLayerCount = 1, - }; - - WGPUTextureView view = wgpuTextureCreateView(texture, &view_desc); + WGPUTextureView view = gpu_create_texture_view_2d(texture, gpu_ctx.format); FATAL_CHECK(!view, "Failed to create auxiliary texture view: %s\n", name); // Store in registry @@ -535,14 +524,7 @@ void MainSequence::resize_auxiliary_texture(const char* name, int width, FATAL_CHECK(!texture, "Failed to resize auxiliary texture: %s\n", name); // Create view - const WGPUTextureViewDescriptor view_desc = { - .format = gpu_ctx.format, - .dimension = WGPUTextureViewDimension_2D, - .mipLevelCount = 1, - .arrayLayerCount = 1, - }; - - WGPUTextureView view = wgpuTextureCreateView(texture, &view_desc); + WGPUTextureView view = gpu_create_texture_view_2d(texture, gpu_ctx.format); FATAL_CHECK(!view, "Failed to create resized auxiliary texture view: %s\n", name); diff --git a/src/gpu/gpu.cc b/src/gpu/gpu.cc index cf5d85d..535de67 100644 --- a/src/gpu/gpu.cc +++ b/src/gpu/gpu.cc @@ -98,6 +98,20 @@ WGPUTextureView gpu_create_mip_view(WGPUTexture texture, return wgpuTextureCreateView(texture, &view_desc); } +WGPUTextureView gpu_create_texture_view_2d(WGPUTexture texture, + WGPUTextureFormat format, + uint32_t mip_levels) { + const WGPUTextureViewDescriptor view_desc = { + .format = format, + .dimension = WGPUTextureViewDimension_2D, + .baseMipLevel = 0, + .mipLevelCount = mip_levels, + .baseArrayLayer = 0, + .arrayLayerCount = 1, + }; + return wgpuTextureCreateView(texture, &view_desc); +} + RenderPass gpu_create_render_pass(WGPUDevice device, WGPUTextureFormat format, const char* shader_code, ResourceBinding* bindings, int num_bindings) { diff --git a/src/gpu/gpu.h b/src/gpu/gpu.h index b52d6ab..74e0eb7 100644 --- a/src/gpu/gpu.h +++ b/src/gpu/gpu.h @@ -99,6 +99,9 @@ TextureWithView gpu_create_storage_texture_2d(WGPUDevice device, uint32_t width, WGPUTextureFormat format); WGPUTextureView gpu_create_mip_view(WGPUTexture texture, WGPUTextureFormat format, uint32_t mip_level); +WGPUTextureView gpu_create_texture_view_2d(WGPUTexture texture, + WGPUTextureFormat format, + uint32_t mip_levels = 1); ComputePass gpu_create_compute_pass(WGPUDevice device, const char* shader_code, ResourceBinding* bindings, int num_bindings); diff --git a/src/gpu/texture_manager.cc b/src/gpu/texture_manager.cc index dfa6315..d5821ee 100644 --- a/src/gpu/texture_manager.cc +++ b/src/gpu/texture_manager.cc @@ -103,16 +103,8 @@ void TextureManager::create_texture(const std::string& name, int width, &source_layout, &tex_size); // 4. Create View - WGPUTextureViewDescriptor view_desc = {}; - view_desc.format = WGPUTextureFormat_RGBA8Unorm; - view_desc.dimension = WGPUTextureViewDimension_2D; - view_desc.baseMipLevel = 0; - view_desc.mipLevelCount = 1; - view_desc.baseArrayLayer = 0; - view_desc.arrayLayerCount = 1; - view_desc.aspect = WGPUTextureAspect_All; - - WGPUTextureView view = wgpuTextureCreateView(texture, &view_desc); + WGPUTextureView view = + gpu_create_texture_view_2d(texture, WGPUTextureFormat_RGBA8Unorm); // 5. Store GpuTexture gpu_tex; @@ -242,12 +234,8 @@ void TextureManager::dispatch_compute(const std::string& func_name, wgpuBufferUnmap(uniform_buf); // Create storage texture view - WGPUTextureViewDescriptor view_desc = {}; - view_desc.format = WGPUTextureFormat_RGBA8Unorm; - view_desc.dimension = WGPUTextureViewDimension_2D; - view_desc.mipLevelCount = 1; - view_desc.arrayLayerCount = 1; - WGPUTextureView target_view = wgpuTextureCreateView(target, &view_desc); + WGPUTextureView target_view = + gpu_create_texture_view_2d(target, WGPUTextureFormat_RGBA8Unorm); // Create bind group layout entries (must match pipeline) WGPUBindGroupLayoutEntry bgl_entries[2] = {}; @@ -332,12 +320,8 @@ void TextureManager::create_gpu_noise_texture( params.params[0], params.params[1]}; dispatch_compute("gen_noise", texture, params, &uniforms, sizeof(NoiseParams)); - WGPUTextureViewDescriptor view_desc = {}; - view_desc.format = WGPUTextureFormat_RGBA8Unorm; - view_desc.dimension = WGPUTextureViewDimension_2D; - view_desc.mipLevelCount = 1; - view_desc.arrayLayerCount = 1; - WGPUTextureView view = wgpuTextureCreateView(texture, &view_desc); + WGPUTextureView view = + gpu_create_texture_view_2d(texture, WGPUTextureFormat_RGBA8Unorm); GpuTexture gpu_tex; gpu_tex.texture = texture; @@ -389,12 +373,8 @@ void TextureManager::create_gpu_perlin_texture( dispatch_compute("gen_perlin", texture, params, &uniforms, sizeof(PerlinParams)); - WGPUTextureViewDescriptor view_desc = {}; - view_desc.format = WGPUTextureFormat_RGBA8Unorm; - view_desc.dimension = WGPUTextureViewDimension_2D; - view_desc.mipLevelCount = 1; - view_desc.arrayLayerCount = 1; - WGPUTextureView view = wgpuTextureCreateView(texture, &view_desc); + WGPUTextureView view = + gpu_create_texture_view_2d(texture, WGPUTextureFormat_RGBA8Unorm); GpuTexture gpu_tex; gpu_tex.texture = texture; @@ -436,12 +416,8 @@ void TextureManager::create_gpu_grid_texture( params.num_params > 1 ? (uint32_t)params.params[1] : 2u}; dispatch_compute("gen_grid", texture, params, &uniforms, sizeof(GridParams)); - WGPUTextureViewDescriptor view_desc = {}; - view_desc.format = WGPUTextureFormat_RGBA8Unorm; - view_desc.dimension = WGPUTextureViewDimension_2D; - view_desc.mipLevelCount = 1; - view_desc.arrayLayerCount = 1; - WGPUTextureView view = wgpuTextureCreateView(texture, &view_desc); + WGPUTextureView view = + gpu_create_texture_view_2d(texture, WGPUTextureFormat_RGBA8Unorm); GpuTexture gpu_tex; gpu_tex.texture = texture; @@ -528,12 +504,8 @@ void TextureManager::dispatch_composite( wgpuBufferUnmap(uniform_buf); // Create storage texture view - WGPUTextureViewDescriptor view_desc = {}; - view_desc.format = WGPUTextureFormat_RGBA8Unorm; - view_desc.dimension = WGPUTextureViewDimension_2D; - view_desc.mipLevelCount = 1; - view_desc.arrayLayerCount = 1; - WGPUTextureView target_view = wgpuTextureCreateView(target, &view_desc); + WGPUTextureView target_view = + gpu_create_texture_view_2d(target, WGPUTextureFormat_RGBA8Unorm); // Dynamic bind group const int max_entries = 2 + num_inputs + (num_inputs > 0 ? 1 : 0); @@ -665,12 +637,8 @@ void TextureManager::create_gpu_composite_texture( input_views, sampler); // Create view - WGPUTextureViewDescriptor view_desc = {}; - view_desc.format = WGPUTextureFormat_RGBA8Unorm; - view_desc.dimension = WGPUTextureViewDimension_2D; - view_desc.mipLevelCount = 1; - view_desc.arrayLayerCount = 1; - WGPUTextureView view = wgpuTextureCreateView(texture, &view_desc); + WGPUTextureView view = + gpu_create_texture_view_2d(texture, WGPUTextureFormat_RGBA8Unorm); // Store GpuTexture gpu_tex; |
