diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/memory.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 65e4bba85..d058dc844 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp | |||
| @@ -357,14 +357,24 @@ void RasterizerMarkRegionCached(PAddr start, u32 size, int count_delta) { | |||
| 357 | } | 357 | } |
| 358 | } | 358 | } |
| 359 | 359 | ||
| 360 | static void RoundToPages(PAddr& start, u32& size) { | ||
| 361 | PAddr start_rounded_down = start & ~PAGE_MASK; | ||
| 362 | PAddr end_rounded_up = ((start + size) + PAGE_MASK) & ~PAGE_MASK; | ||
| 363 | |||
| 364 | start = start_rounded_down; | ||
| 365 | size = end_rounded_up - start_rounded_down; | ||
| 366 | } | ||
| 367 | |||
| 360 | void RasterizerFlushRegion(PAddr start, u32 size) { | 368 | void RasterizerFlushRegion(PAddr start, u32 size) { |
| 361 | if (VideoCore::g_renderer != nullptr) { | 369 | if (VideoCore::g_renderer != nullptr) { |
| 370 | RoundToPages(start, size); | ||
| 362 | VideoCore::g_renderer->Rasterizer()->FlushRegion(start, size); | 371 | VideoCore::g_renderer->Rasterizer()->FlushRegion(start, size); |
| 363 | } | 372 | } |
| 364 | } | 373 | } |
| 365 | 374 | ||
| 366 | void RasterizerFlushAndInvalidateRegion(PAddr start, u32 size) { | 375 | void RasterizerFlushAndInvalidateRegion(PAddr start, u32 size) { |
| 367 | if (VideoCore::g_renderer != nullptr) { | 376 | if (VideoCore::g_renderer != nullptr) { |
| 377 | RoundToPages(start, size); | ||
| 368 | VideoCore::g_renderer->Rasterizer()->FlushAndInvalidateRegion(start, size); | 378 | VideoCore::g_renderer->Rasterizer()->FlushAndInvalidateRegion(start, size); |
| 369 | } | 379 | } |
| 370 | } | 380 | } |