summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar FernandoS272018-10-15 21:09:38 -0400
committerGravatar FernandoS272018-10-17 18:52:10 -0400
commitdbc34db6ce21dfb119bb8756bde41c9e45f8515f (patch)
tree7180eb225d5c32cadf92f1a49a556060b307faf5 /src
parentImplement 3D Textures (diff)
downloadyuzu-dbc34db6ce21dfb119bb8756bde41c9e45f8515f.tar.gz
yuzu-dbc34db6ce21dfb119bb8756bde41c9e45f8515f.tar.xz
yuzu-dbc34db6ce21dfb119bb8756bde41c9e45f8515f.zip
Implement GetInRange in the Rasterizer Cache
Diffstat (limited to 'src')
-rw-r--r--src/video_core/rasterizer_cache.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/video_core/rasterizer_cache.h b/src/video_core/rasterizer_cache.h
index 0a3b3951e..294b7c6ef 100644
--- a/src/video_core/rasterizer_cache.h
+++ b/src/video_core/rasterizer_cache.h
@@ -105,6 +105,22 @@ protected:
105 return nullptr; 105 return nullptr;
106 } 106 }
107 107
108 std::vector<T> GetInRange(Tegra::GPUVAddr addr, size_t size) {
109 std::vector<T> objects;
110 if (size == 0)
111 return objects;
112
113 const ObjectInterval interval{addr, addr + size};
114 for (auto& pair : boost::make_iterator_range(object_cache.equal_range(interval))) {
115 for (auto& cached_object : pair.second) {
116 if (!cached_object)
117 continue;
118 objects.push_back(cached_object);
119 }
120 }
121 return objects;
122 }
123
108 /// Register an object into the cache 124 /// Register an object into the cache
109 void Register(const T& object) { 125 void Register(const T& object) {
110 object->SetIsRegistered(true); 126 object->SetIsRegistered(true);