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

@ -42,9 +42,6 @@ public:
return alignment;
}
// We do not have to flush this cache as things in it are never modified by us.
void Flush() override {}
private:
VAddr cpu_addr{};
std::size_t size{};
@ -75,6 +72,9 @@ public:
protected:
void AlignBuffer(std::size_t alignment);
// We do not have to flush this cache as things in it are never modified by us.
void FlushObjectInner(const std::shared_ptr<CachedBufferEntry>& object) override {}
private:
OGLStreamBuffer stream_buffer;

View file

@ -46,7 +46,7 @@ public:
/// Reloads the global region from guest memory
void Reload(u32 size_);
void Flush() override;
void Flush();
private:
VAddr cpu_addr{};
@ -65,6 +65,12 @@ public:
GlobalRegion GetGlobalRegion(const GLShader::GlobalMemoryEntry& descriptor,
Tegra::Engines::Maxwell3D::Regs::ShaderStage stage);
protected:
void FlushObjectInner(const GlobalRegion& object) override {
object->Flush();
}
private:
GlobalRegion TryGetReservedGlobalRegion(CacheAddr addr, u32 size) const;
GlobalRegion GetUncachedGlobalRegion(GPUVAddr addr, u8* host_ptr, u32 size);

View file

@ -371,10 +371,6 @@ public:
return memory_size;
}
void Flush() override {
FlushGLBuffer();
}
const OGLTexture& Texture() const {
return texture;
}
@ -473,6 +469,11 @@ public:
void SignalPreDrawCall();
void SignalPostDrawCall();
protected:
void FlushObjectInner(const Surface& object) override {
object->FlushGLBuffer();
}
private:
void LoadSurface(const Surface& surface);
Surface GetSurface(const SurfaceParams& params, bool preserve_contents = true);

View file

@ -56,9 +56,6 @@ public:
return shader_length;
}
// We do not have to flush this cache as things in it are never modified by us.
void Flush() override {}
/// Gets the shader entries for the shader
const GLShader::ShaderEntries& GetShaderEntries() const {
return entries;
@ -121,6 +118,10 @@ public:
/// Gets the current specified shader stage program
Shader GetStageProgram(Maxwell::ShaderProgram program);
protected:
// We do not have to flush this cache as things in it are never modified by us.
void FlushObjectInner(const Shader& object) override {}
private:
std::unordered_map<u64, UnspecializedShader> GenerateUnspecializedShaders(
const std::atomic_bool& stop_loading, const VideoCore::DiskResourceLoadCallback& callback,