RasterizerCache Redesign: Flush

flushing is now responsability of children caches instead of the cache 
object. This change will allow the specific cache to pass extra 
parameters on flushing and will allow more flexibility.
This commit is contained in:
Fernando Sahmkow 2019-04-16 16:39:27 -04:00 committed by FernandoS27
parent 62c2404d3c
commit a3eb91ed8c
6 changed files with 26 additions and 17 deletions

View file

@ -37,9 +37,6 @@ public:
/// Gets the size of the shader in guest memory, required for cache management
virtual std::size_t GetSizeInBytes() const = 0;
/// Wriets any cached resources back to memory
virtual void Flush() = 0;
/// Sets whether the cached object should be considered registered
void SetIsRegistered(bool registered) {
is_registered = registered;
@ -158,6 +155,8 @@ protected:
return ++modified_ticks;
}
virtual void FlushObjectInner(const T& object) = 0;
/// Flushes the specified object, updating appropriate cache state as needed
void FlushObject(const T& object) {
std::lock_guard lock{mutex};
@ -165,7 +164,7 @@ protected:
if (!object->IsDirty()) {
return;
}
object->Flush();
FlushObjectInner(object);
object->MarkAsModified(false, *this);
}