diff options
| author | 2021-08-29 18:19:53 +0200 | |
|---|---|---|
| committer | 2021-08-29 18:19:53 +0200 | |
| commit | ff48f06fb92e5fe2105fd6b4c5d4f57bbb2714c7 (patch) | |
| tree | 2392bbc76f6005587df9d1b1415e35818fba0ac7 /src/video_core/buffer_cache | |
| parent | Garbage Collection: enable as default, eliminate option. (diff) | |
| download | yuzu-ff48f06fb92e5fe2105fd6b4c5d4f57bbb2714c7.tar.gz yuzu-ff48f06fb92e5fe2105fd6b4c5d4f57bbb2714c7.tar.xz yuzu-ff48f06fb92e5fe2105fd6b4c5d4f57bbb2714c7.zip | |
Garbage Collection: Adress Feedback.
Diffstat (limited to 'src/video_core/buffer_cache')
| -rw-r--r-- | src/video_core/buffer_cache/buffer_base.h | 9 | ||||
| -rw-r--r-- | src/video_core/buffer_cache/buffer_cache.h | 6 |
2 files changed, 11 insertions, 4 deletions
diff --git a/src/video_core/buffer_cache/buffer_base.h b/src/video_core/buffer_cache/buffer_base.h index 4b696a60f..18a3390c0 100644 --- a/src/video_core/buffer_cache/buffer_base.h +++ b/src/video_core/buffer_cache/buffer_base.h | |||
| @@ -297,7 +297,13 @@ public: | |||
| 297 | return words.size_bytes; | 297 | return words.size_bytes; |
| 298 | } | 298 | } |
| 299 | 299 | ||
| 300 | size_t lru_id; | 300 | size_t getLRUID() const noexcept { |
| 301 | return lru_id; | ||
| 302 | } | ||
| 303 | |||
| 304 | void setLRUID(size_t lru_id_) { | ||
| 305 | lru_id = lru_id_; | ||
| 306 | } | ||
| 301 | 307 | ||
| 302 | private: | 308 | private: |
| 303 | template <Type type> | 309 | template <Type type> |
| @@ -597,6 +603,7 @@ private: | |||
| 597 | Words words; | 603 | Words words; |
| 598 | BufferFlagBits flags{}; | 604 | BufferFlagBits flags{}; |
| 599 | int stream_score = 0; | 605 | int stream_score = 0; |
| 606 | size_t lru_id = SIZE_MAX; | ||
| 600 | }; | 607 | }; |
| 601 | 608 | ||
| 602 | } // namespace VideoCommon | 609 | } // namespace VideoCommon |
diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h index e40aa7fe6..617435968 100644 --- a/src/video_core/buffer_cache/buffer_cache.h +++ b/src/video_core/buffer_cache/buffer_cache.h | |||
| @@ -1539,10 +1539,10 @@ void BufferCache<P>::ChangeRegister(BufferId buffer_id) { | |||
| 1539 | const auto size = buffer.SizeBytes(); | 1539 | const auto size = buffer.SizeBytes(); |
| 1540 | if (insert) { | 1540 | if (insert) { |
| 1541 | total_used_memory += Common::AlignUp(size, 1024); | 1541 | total_used_memory += Common::AlignUp(size, 1024); |
| 1542 | buffer.lru_id = lru_cache.Insert(buffer_id, frame_tick); | 1542 | buffer.setLRUID(lru_cache.Insert(buffer_id, frame_tick)); |
| 1543 | } else { | 1543 | } else { |
| 1544 | total_used_memory -= Common::AlignUp(size, 1024); | 1544 | total_used_memory -= Common::AlignUp(size, 1024); |
| 1545 | lru_cache.Free(buffer.lru_id); | 1545 | lru_cache.Free(buffer.getLRUID()); |
| 1546 | } | 1546 | } |
| 1547 | const VAddr cpu_addr_begin = buffer.CpuAddr(); | 1547 | const VAddr cpu_addr_begin = buffer.CpuAddr(); |
| 1548 | const VAddr cpu_addr_end = cpu_addr_begin + size; | 1548 | const VAddr cpu_addr_end = cpu_addr_begin + size; |
| @@ -1560,7 +1560,7 @@ void BufferCache<P>::ChangeRegister(BufferId buffer_id) { | |||
| 1560 | template <class P> | 1560 | template <class P> |
| 1561 | void BufferCache<P>::TouchBuffer(Buffer& buffer, BufferId buffer_id) noexcept { | 1561 | void BufferCache<P>::TouchBuffer(Buffer& buffer, BufferId buffer_id) noexcept { |
| 1562 | if (buffer_id != NULL_BUFFER_ID) { | 1562 | if (buffer_id != NULL_BUFFER_ID) { |
| 1563 | lru_cache.Touch(buffer.lru_id, frame_tick); | 1563 | lru_cache.Touch(buffer.getLRUID(), frame_tick); |
| 1564 | } | 1564 | } |
| 1565 | } | 1565 | } |
| 1566 | 1566 | ||