summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2019-01-13 22:05:53 -0300
committerGravatar ReinUsesLisp2019-02-06 22:20:57 -0300
commit0ed5d728ca12e407685b62802dec69b455f1a528 (patch)
treed421d986e0a250cea73bd2675ec234af29a96997 /src
parentfile_util: Add shader directory (diff)
downloadyuzu-0ed5d728ca12e407685b62802dec69b455f1a528.tar.gz
yuzu-0ed5d728ca12e407685b62802dec69b455f1a528.tar.xz
yuzu-0ed5d728ca12e407685b62802dec69b455f1a528.zip
rasterizer_interface: Add disk cache entry for the rasterizer
Diffstat (limited to 'src')
-rw-r--r--src/core/core.cpp3
-rw-r--r--src/video_core/rasterizer_interface.h3
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp5
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.h1
-rw-r--r--src/video_core/renderer_opengl/gl_shader_cache.cpp2
-rw-r--r--src/video_core/renderer_opengl/gl_shader_cache.h3
6 files changed, 17 insertions, 0 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp
index 572814e4b..c8d7c442a 100644
--- a/src/core/core.cpp
+++ b/src/core/core.cpp
@@ -175,6 +175,9 @@ struct System::Impl {
175 return static_cast<ResultStatus>(static_cast<u32>(ResultStatus::ErrorLoader) + 175 return static_cast<ResultStatus>(static_cast<u32>(ResultStatus::ErrorLoader) +
176 static_cast<u32>(load_result)); 176 static_cast<u32>(load_result));
177 } 177 }
178
179 renderer->Rasterizer().LoadDiskResources();
180
178 status = ResultStatus::Success; 181 status = ResultStatus::Success;
179 return status; 182 return status;
180 } 183 }
diff --git a/src/video_core/rasterizer_interface.h b/src/video_core/rasterizer_interface.h
index 4c08bb148..bb4bc0e36 100644
--- a/src/video_core/rasterizer_interface.h
+++ b/src/video_core/rasterizer_interface.h
@@ -61,5 +61,8 @@ public:
61 61
62 /// Increase/decrease the number of object in pages touching the specified region 62 /// Increase/decrease the number of object in pages touching the specified region
63 virtual void UpdatePagesCachedCount(Tegra::GPUVAddr addr, u64 size, int delta) {} 63 virtual void UpdatePagesCachedCount(Tegra::GPUVAddr addr, u64 size, int delta) {}
64
65 /// Initialize disk cached resources for the game being emulated
66 virtual void LoadDiskResources() {}
64}; 67};
65} // namespace VideoCore 68} // namespace VideoCore
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index c806b7da7..18aafe767 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -22,6 +22,7 @@
22#include "core/settings.h" 22#include "core/settings.h"
23#include "video_core/engines/maxwell_3d.h" 23#include "video_core/engines/maxwell_3d.h"
24#include "video_core/renderer_opengl/gl_rasterizer.h" 24#include "video_core/renderer_opengl/gl_rasterizer.h"
25#include "video_core/renderer_opengl/gl_shader_cache.h"
25#include "video_core/renderer_opengl/gl_shader_gen.h" 26#include "video_core/renderer_opengl/gl_shader_gen.h"
26#include "video_core/renderer_opengl/maxwell_to_gl.h" 27#include "video_core/renderer_opengl/maxwell_to_gl.h"
27#include "video_core/renderer_opengl/renderer_opengl.h" 28#include "video_core/renderer_opengl/renderer_opengl.h"
@@ -477,6 +478,10 @@ void RasterizerOpenGL::UpdatePagesCachedCount(VAddr addr, u64 size, int delta) {
477 cached_pages.add({pages_interval, delta}); 478 cached_pages.add({pages_interval, delta});
478} 479}
479 480
481void RasterizerOpenGL::LoadDiskResources() {
482 shader_cache.LoadDiskCache();
483}
484
480std::pair<bool, bool> RasterizerOpenGL::ConfigureFramebuffers( 485std::pair<bool, bool> RasterizerOpenGL::ConfigureFramebuffers(
481 OpenGLState& current_state, bool using_color_fb, bool using_depth_fb, bool preserve_contents, 486 OpenGLState& current_state, bool using_color_fb, bool using_depth_fb, bool preserve_contents,
482 std::optional<std::size_t> single_color_target) { 487 std::optional<std::size_t> single_color_target) {
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h
index 7f2bf0f8b..ed7091f18 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.h
+++ b/src/video_core/renderer_opengl/gl_rasterizer.h
@@ -60,6 +60,7 @@ public:
60 u32 pixel_stride) override; 60 u32 pixel_stride) override;
61 bool AccelerateDrawBatch(bool is_indexed) override; 61 bool AccelerateDrawBatch(bool is_indexed) override;
62 void UpdatePagesCachedCount(Tegra::GPUVAddr addr, u64 size, int delta) override; 62 void UpdatePagesCachedCount(Tegra::GPUVAddr addr, u64 size, int delta) override;
63 void LoadDiskResources() override;
63 64
64 /// Maximum supported size that a constbuffer can have in bytes. 65 /// Maximum supported size that a constbuffer can have in bytes.
65 static constexpr std::size_t MaxConstbufferSize = 0x10000; 66 static constexpr std::size_t MaxConstbufferSize = 0x10000;
diff --git a/src/video_core/renderer_opengl/gl_shader_cache.cpp b/src/video_core/renderer_opengl/gl_shader_cache.cpp
index 6174f7074..363b941f3 100644
--- a/src/video_core/renderer_opengl/gl_shader_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_cache.cpp
@@ -225,6 +225,8 @@ void CachedShader::CalculateProperties() {
225 225
226ShaderCacheOpenGL::ShaderCacheOpenGL(RasterizerOpenGL& rasterizer) : RasterizerCache{rasterizer} {} 226ShaderCacheOpenGL::ShaderCacheOpenGL(RasterizerOpenGL& rasterizer) : RasterizerCache{rasterizer} {}
227 227
228void ShaderCacheOpenGL::LoadDiskCache() {}
229
228Shader ShaderCacheOpenGL::GetStageProgram(Maxwell::ShaderProgram program) { 230Shader ShaderCacheOpenGL::GetStageProgram(Maxwell::ShaderProgram program) {
229 if (!Core::System::GetInstance().GPU().Maxwell3D().dirty_flags.shaders) { 231 if (!Core::System::GetInstance().GPU().Maxwell3D().dirty_flags.shaders) {
230 return last_shaders[static_cast<u32>(program)]; 232 return last_shaders[static_cast<u32>(program)];
diff --git a/src/video_core/renderer_opengl/gl_shader_cache.h b/src/video_core/renderer_opengl/gl_shader_cache.h
index 904d15dd0..5e72912f5 100644
--- a/src/video_core/renderer_opengl/gl_shader_cache.h
+++ b/src/video_core/renderer_opengl/gl_shader_cache.h
@@ -103,6 +103,9 @@ class ShaderCacheOpenGL final : public RasterizerCache<Shader> {
103public: 103public:
104 explicit ShaderCacheOpenGL(RasterizerOpenGL& rasterizer); 104 explicit ShaderCacheOpenGL(RasterizerOpenGL& rasterizer);
105 105
106 /// Loads disk cache for the current game
107 void LoadDiskCache();
108
106 /// Gets the current specified shader stage program 109 /// Gets the current specified shader stage program
107 Shader GetStageProgram(Maxwell::ShaderProgram program); 110 Shader GetStageProgram(Maxwell::ShaderProgram program);
108 111