summaryrefslogtreecommitdiff
path: root/src/gpu/pipeline_builder.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpu/pipeline_builder.cc')
-rw-r--r--src/gpu/pipeline_builder.cc11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/gpu/pipeline_builder.cc b/src/gpu/pipeline_builder.cc
index 2d9ec07..acd2ae9 100644
--- a/src/gpu/pipeline_builder.cc
+++ b/src/gpu/pipeline_builder.cc
@@ -1,5 +1,6 @@
// WGPU render pipeline builder - implementation
#include "gpu/pipeline_builder.h"
+#include "gpu/gpu.h"
#include "util/fatal_error.h"
RenderPipelineBuilder::RenderPipelineBuilder(WGPUDevice device)
@@ -15,12 +16,8 @@ RenderPipelineBuilder& RenderPipelineBuilder::shader(const char* wgsl,
shader_text_ = compose ? ShaderComposer::Get().Compose({}, wgsl) : wgsl;
if (device_ == nullptr)
return *this;
- WGPUShaderSourceWGSL wgsl_src{};
- wgsl_src.chain.sType = WGPUSType_ShaderSourceWGSL;
- wgsl_src.code = str_view(shader_text_.c_str());
- WGPUShaderModuleDescriptor shader_desc{};
- shader_desc.nextInChain = &wgsl_src.chain;
- shader_module_ = wgpuDeviceCreateShaderModule(device_, &shader_desc);
+ shader_module_ =
+ gpu_create_shader_module(device_, shader_text_.c_str(), "pipeline_shader");
desc_.vertex.module = shader_module_;
desc_.vertex.entryPoint = str_view("vs_main");
return *this;
@@ -90,5 +87,7 @@ WGPURenderPipeline RenderPipelineBuilder::build() {
WGPURenderPipeline pipeline = wgpuDeviceCreateRenderPipeline(device_, &desc_);
wgpuPipelineLayoutRelease(layout);
+ if (shader_module_)
+ wgpuShaderModuleRelease(shader_module_);
return pipeline;
}