summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_rasterizer_cache.h
diff options
context:
space:
mode:
authortfarley <tfarleygithub@gmail.com>2015-05-19 06:21:33 +0200
committertfarley <tfarleygithub@gmail.com>2015-05-23 00:51:18 +0200
commit05dc633a8c35221ce8d6abe6ddf027f8b0bab6c2 (patch)
treed080c1efd3b928bda551cb9eee304547e66a4351 /src/video_core/renderer_opengl/gl_rasterizer_cache.h
parentINI hw/sw renderer toggle (diff)
downloadyuzu-05dc633a8c35221ce8d6abe6ddf027f8b0bab6c2.tar
yuzu-05dc633a8c35221ce8d6abe6ddf027f8b0bab6c2.tar.gz
yuzu-05dc633a8c35221ce8d6abe6ddf027f8b0bab6c2.tar.bz2
yuzu-05dc633a8c35221ce8d6abe6ddf027f8b0bab6c2.tar.lz
yuzu-05dc633a8c35221ce8d6abe6ddf027f8b0bab6c2.tar.xz
yuzu-05dc633a8c35221ce8d6abe6ddf027f8b0bab6c2.tar.zst
yuzu-05dc633a8c35221ce8d6abe6ddf027f8b0bab6c2.zip
Diffstat (limited to '')
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer_cache.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.h b/src/video_core/renderer_opengl/gl_rasterizer_cache.h
new file mode 100644
index 000000000..96f3a925c
--- /dev/null
+++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.h
@@ -0,0 +1,36 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "gl_state.h"
+#include "gl_resource_manager.h"
+#include "video_core/pica.h"
+
+#include <memory>
+#include <map>
+
+class RasterizerCacheOpenGL : NonCopyable {
+public:
+ ~RasterizerCacheOpenGL();
+
+ /// Loads a texture from 3DS memory to OpenGL and caches it (if not already cached)
+ void LoadAndBindTexture(OpenGLState &state, unsigned texture_unit, const Pica::Regs::FullTextureConfig& config);
+
+ /// Flush any cached resource that touches the flushed region
+ void NotifyFlush(PAddr addr, u32 size);
+
+ /// Flush all cached OpenGL resources tracked by this cache manager
+ void FullFlush();
+
+private:
+ struct CachedTexture {
+ OGLTexture texture;
+ GLuint width;
+ GLuint height;
+ u32 size;
+ };
+
+ std::map<PAddr, std::unique_ptr<CachedTexture>> texture_cache;
+};