diff options
| -rw-r--r-- | src/gpu/sampler_cache.h | 7 | ||||
| -rw-r--r-- | tools/cnn_test.cc | 5 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/gpu/sampler_cache.h b/src/gpu/sampler_cache.h index 0f012a8..5df3958 100644 --- a/src/gpu/sampler_cache.h +++ b/src/gpu/sampler_cache.h @@ -58,4 +58,11 @@ public: return {WGPUAddressMode_ClampToEdge, WGPUAddressMode_ClampToEdge, WGPUFilterMode_Linear, WGPUFilterMode_Linear, 1}; } + + void clear() { + for (auto& pair : cache_) { + wgpuSamplerRelease(pair.second); + } + cache_.clear(); + } }; diff --git a/tools/cnn_test.cc b/tools/cnn_test.cc index 4ce9637..fa4394f 100644 --- a/tools/cnn_test.cc +++ b/tools/cnn_test.cc @@ -281,6 +281,7 @@ int main(int argc, char** argv) { WGPUTexture input_texture = load_texture(device, queue, args.input_path, &width, &height); if (!input_texture) { + SamplerCache::Get().clear(); fixture.shutdown(); return 1; } @@ -311,6 +312,7 @@ int main(int argc, char** argv) { if (pipeline_final) wgpuRenderPipelineRelease(pipeline_final); wgpuTextureViewRelease(input_view); wgpuTextureRelease(input_texture); + SamplerCache::Get().clear(); fixture.shutdown(); return 1; } @@ -448,6 +450,7 @@ int main(int argc, char** argv) { wgpuBindGroupLayoutRelease(bgl); wgpuRenderPipelineRelease(pipeline_final); wgpuRenderPipelineRelease(pipeline_intermediate); + SamplerCache::Get().clear(); fixture.shutdown(); return 1; } @@ -474,6 +477,7 @@ int main(int argc, char** argv) { wgpuBindGroupLayoutRelease(bgl); wgpuRenderPipelineRelease(pipeline_final); wgpuRenderPipelineRelease(pipeline_intermediate); + SamplerCache::Get().clear(); fixture.shutdown(); return 1; } @@ -540,6 +544,7 @@ int main(int argc, char** argv) { wgpuRenderPipelineRelease(pipeline_final); wgpuTextureViewRelease(input_view); wgpuTextureRelease(input_texture); + SamplerCache::Get().clear(); fixture.shutdown(); return 0; |
