android: video_core: gl_rasterizer_cache: Make cache access thread safe.

This commit is contained in:
bunnei 2019-10-01 23:53:43 -04:00
parent 04ad2002a3
commit 70d6b1e66c
2 changed files with 11 additions and 0 deletions

View File

@ -1818,6 +1818,8 @@ void RasterizerCacheOpenGL::ClearAll(bool flush) {
}
void RasterizerCacheOpenGL::FlushRegion(PAddr addr, u32 size, Surface flush_surface) {
std::lock_guard lock{mutex};
if (size == 0)
return;
@ -1854,6 +1856,8 @@ void RasterizerCacheOpenGL::FlushAll() {
}
void RasterizerCacheOpenGL::InvalidateRegion(PAddr addr, u32 size, const Surface& region_owner) {
std::lock_guard lock{mutex};
if (size == 0)
return;
@ -1930,6 +1934,8 @@ Surface RasterizerCacheOpenGL::CreateSurface(const SurfaceParams& params) {
}
void RasterizerCacheOpenGL::RegisterSurface(const Surface& surface) {
std::lock_guard lock{mutex};
if (surface->registered) {
return;
}
@ -1939,6 +1945,8 @@ void RasterizerCacheOpenGL::RegisterSurface(const Surface& surface) {
}
void RasterizerCacheOpenGL::UnregisterSurface(const Surface& surface) {
std::lock_guard lock{mutex};
if (!surface->registered) {
return;
}

View File

@ -7,6 +7,7 @@
#include <array>
#include <list>
#include <memory>
#include <mutex>
#include <set>
#include <tuple>
#ifdef __GNUC__
@ -325,6 +326,8 @@ private:
std::unordered_map<TextureCubeConfig, CachedTextureCube> texture_cube_cache;
std::recursive_mutex mutex;
public:
std::unique_ptr<TextureFilterer> texture_filterer;
std::unique_ptr<FormatReinterpreterOpenGL> format_reinterpreter;