android: video_core: gl_rasterizer_cache: Make cache access thread safe.
This commit is contained in:
parent
4b40f2a581
commit
b3528a4c70
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user