summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar bunnei2021-03-02 17:44:02 -0800
committerGravatar bunnei2021-03-02 17:44:02 -0800
commit6ab839462c2d109781320bc09579b1e370c16395 (patch)
treeef28523c030b5d57460794a5cdc1d6cef7ade0f3
parentvideo_core: rasterizer_accelerated: Use a flat array instead of interval_map ... (diff)
downloadyuzu-6ab839462c2d109781320bc09579b1e370c16395.tar.gz
yuzu-6ab839462c2d109781320bc09579b1e370c16395.tar.xz
yuzu-6ab839462c2d109781320bc09579b1e370c16395.zip
video_core: rasterizer_accelerated: Improve error handling & fix implicit conversion.
Diffstat (limited to '')
-rw-r--r--src/video_core/rasterizer_accelerated.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/video_core/rasterizer_accelerated.cpp b/src/video_core/rasterizer_accelerated.cpp
index c54b17670..f684cd7e5 100644
--- a/src/video_core/rasterizer_accelerated.cpp
+++ b/src/video_core/rasterizer_accelerated.cpp
@@ -20,9 +20,15 @@ void RasterizerAccelerated::UpdatePagesCachedCount(VAddr addr, u64 size, int del
20 for (auto page = addr >> Core::Memory::PAGE_BITS; page != page_end; ++page) { 20 for (auto page = addr >> Core::Memory::PAGE_BITS; page != page_end; ++page) {
21 auto& count = cached_pages.at(page >> 3).Count(page); 21 auto& count = cached_pages.at(page >> 3).Count(page);
22 22
23 ASSERT_MSG(count < UINT8_MAX, "Count may exceed UINT8_MAX!"); 23 if (delta < 0) {
24 ASSERT_MSG(count > 0, "Count may underflow!");
25 } else if (delta > 0) {
26 ASSERT_MSG(count < UINT8_MAX, "Count may overflow!");
27 } else {
28 ASSERT_MSG(true, "Delta must be non-zero!");
29 }
24 30
25 count += delta; 31 count += static_cast<s8>(delta);
26 32
27 // Assume delta is either -1 or 1 33 // Assume delta is either -1 or 1
28 if (count == 0) { 34 if (count == 0) {
@@ -31,8 +37,6 @@ void RasterizerAccelerated::UpdatePagesCachedCount(VAddr addr, u64 size, int del
31 } else if (count == 1 && delta > 0) { 37 } else if (count == 1 && delta > 0) {
32 cpu_memory.RasterizerMarkRegionCached(page << Core::Memory::PAGE_BITS, 38 cpu_memory.RasterizerMarkRegionCached(page << Core::Memory::PAGE_BITS,
33 Core::Memory::PAGE_SIZE, true); 39 Core::Memory::PAGE_SIZE, true);
34 } else {
35 ASSERT(count >= 0);
36 } 40 }
37 } 41 }
38} 42}