From d99f756830d39437d88e6cc7af034c3074b0bd86 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Sun, 7 Feb 2021 00:14:14 +0200 Subject: [PATCH] Only mark changed fields dirty when unloading a sampler --- source/sampler.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/source/sampler.cpp b/source/sampler.cpp index cc54901b..5375d17d 100644 --- a/source/sampler.cpp +++ b/source/sampler.cpp @@ -217,9 +217,23 @@ void Sampler::unbind_from(unsigned i) void Sampler::unload() { - // TODO check which params actually need refreshing - if(!owner->get_id()) - dirty_params = -1; + if(owner && !owner->get_id()) + { + if(min_filter!=NEAREST_MIPMAP_LINEAR) + dirty_params |= MIN_FILTER; + if(mag_filter!=LINEAR) + dirty_params |= MAG_FILTER; + if(max_anisotropy!=1.0f) + dirty_params |= MAX_ANISOTROPY; + if(wrap_s!=REPEAT) + dirty_params |= WRAP_S; + if(wrap_t!=REPEAT) + dirty_params |= WRAP_T; + if(wrap_r!=REPEAT) + dirty_params |= WRAP_R; + if(compare || cmp_func!=LEQUAL) + dirty_params |= COMPARE; + } } -- 2.45.2