android: video_core: gl_rasterizer_cache: Make cache access thread safe.
This commit is contained in:
parent
3c6d3a87da
commit
40b9918904
@ -1820,6 +1820,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;
|
||||
|
||||
@ -1856,6 +1858,8 @@ void RasterizerCacheOpenGL::FlushAll() {
|
||||
}
|
||||
|
||||
void RasterizerCacheOpenGL::InvalidateRegion(PAddr addr, u32 size, const Surface& region_owner) {
|
||||
std::lock_guard lock{mutex};
|
||||
|
||||
if (size == 0)
|
||||
return;
|
||||
|
||||
@ -1932,6 +1936,8 @@ Surface RasterizerCacheOpenGL::CreateSurface(const SurfaceParams& params) {
|
||||
}
|
||||
|
||||
void RasterizerCacheOpenGL::RegisterSurface(const Surface& surface) {
|
||||
std::lock_guard lock{mutex};
|
||||
|
||||
if (surface->registered) {
|
||||
return;
|
||||
}
|
||||
@ -1941,6 +1947,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