diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2019-09-27 09:39:42 -0400 |
---|---|---|
committer | FernandoS27 <fsahmkow27@gmail.com> | 2019-10-04 19:59:53 -0400 |
commit | 9f2719d1a43e04cc2f5296d0f9719aab9626f730 (patch) | |
tree | 0525b6cce1fc6f048951cfbceaa448cfe6d6f4c9 /src | |
parent | 3f104464dec13f9ba90eaca5dafca87ee4116a60 (diff) |
Gl_Rasterizer: Protect CPU Memory mapping from multiple threads.
Diffstat (limited to 'src')
-rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 1 | ||||
-rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.h | 3 |
2 files changed, 4 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 6a17bed723..deb3e10a5a 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -348,6 +348,7 @@ static constexpr auto RangeFromInterval(Map& map, const Interval& interval) { } void RasterizerOpenGL::UpdatePagesCachedCount(VAddr addr, u64 size, int delta) { + std::lock_guard lock{pages_mutex}; const u64 page_start{addr >> Memory::PAGE_BITS}; const u64 page_end{(addr + size + Memory::PAGE_SIZE - 1) >> Memory::PAGE_BITS}; diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h index 9c10ebda36..c24a02d71e 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.h +++ b/src/video_core/renderer_opengl/gl_rasterizer.h @@ -9,6 +9,7 @@ #include <cstddef> #include <map> #include <memory> +#include <mutex> #include <optional> #include <tuple> #include <utility> @@ -230,6 +231,8 @@ private: using CachedPageMap = boost::icl::interval_map<u64, int>; CachedPageMap cached_pages; + + std::mutex pages_mutex; }; } // namespace OpenGL |