// Sampler cache implementation // See sampler_cache.h #include "gpu/sampler_cache.h" #include "platform/platform.h" #include "util/fatal_error.h" WGPUSampler SamplerCache::get_or_create(WGPUDevice device, const SamplerSpec& spec) { HEADLESS_RETURN_VAL_IF_NULL(device, nullptr); auto it = cache_.find(spec); if (it != cache_.end()) return it->second; WGPUSamplerDescriptor desc{}; desc.addressModeU = spec.u; desc.addressModeV = spec.v; desc.magFilter = spec.mag; desc.minFilter = spec.min; desc.maxAnisotropy = spec.anisotropy; WGPUSampler sampler = wgpuDeviceCreateSampler(device, &desc); cache_[spec] = sampler; return sampler; } void SamplerCache::clear() { for (auto& pair : cache_) { wgpuSamplerRelease(pair.second); } cache_.clear(); }