diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-01-05 05:01:38 +0100 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-01-30 04:00:15 +0100 |
commit | 9f803299de3a9c512939ede48654fab838343a8a (patch) | |
tree | 4ba30f0ad404bd4120dd5b2e4f21193bf03952fd /src/video_core/renderer_opengl/gl_global_cache.h | |
parent | shader_decode: Implement LDG and basic cbuf tracking (diff) | |
download | yuzu-9f803299de3a9c512939ede48654fab838343a8a.tar yuzu-9f803299de3a9c512939ede48654fab838343a8a.tar.gz yuzu-9f803299de3a9c512939ede48654fab838343a8a.tar.bz2 yuzu-9f803299de3a9c512939ede48654fab838343a8a.tar.lz yuzu-9f803299de3a9c512939ede48654fab838343a8a.tar.xz yuzu-9f803299de3a9c512939ede48654fab838343a8a.tar.zst yuzu-9f803299de3a9c512939ede48654fab838343a8a.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/renderer_opengl/gl_global_cache.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_global_cache.h b/src/video_core/renderer_opengl/gl_global_cache.h index 406a735bc..37830bb7c 100644 --- a/src/video_core/renderer_opengl/gl_global_cache.h +++ b/src/video_core/renderer_opengl/gl_global_cache.h @@ -5,9 +5,13 @@ #pragma once #include <memory> +#include <unordered_map> + #include <glad/glad.h> +#include "common/assert.h" #include "common/common_types.h" +#include "video_core/engines/maxwell_3d.h" #include "video_core/rasterizer_cache.h" #include "video_core/renderer_opengl/gl_resource_manager.h" @@ -40,6 +44,9 @@ public: return buffer.handle; } + /// Reloads the global region from guest memory + void Reload(u32 size_); + // TODO(Rodrigo): When global memory is written (STG), implement flushing void Flush() override { UNIMPLEMENTED(); @@ -55,6 +62,17 @@ private: class GlobalRegionCacheOpenGL final : public RasterizerCache<GlobalRegion> { public: explicit GlobalRegionCacheOpenGL(RasterizerOpenGL& rasterizer); + + /// Gets the current specified shader stage program + GlobalRegion GetGlobalRegion(const GLShader::GlobalMemoryEntry& descriptor, + Tegra::Engines::Maxwell3D::Regs::ShaderStage stage); + +private: + GlobalRegion TryGetReservedGlobalRegion(VAddr addr, u32 size) const; + GlobalRegion GetUncachedGlobalRegion(VAddr addr, u32 size); + void ReserveGlobalRegion(const GlobalRegion& region); + + std::unordered_map<VAddr, GlobalRegion> reserve; }; } // namespace OpenGL |