aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFernandoS27 <fsahmkow27@gmail.com>2018-10-15 21:09:38 -0400
committerFernandoS27 <fsahmkow27@gmail.com>2018-10-17 18:52:10 -0400
commit893e144b0218e12bd296ffaf71da00d03f02409e (patch)
tree7180eb225d5c32cadf92f1a49a556060b307faf5 /src
parent1469c546c3e35896722892a8df74338afbdc8756 (diff)
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 0a3b3951ee..294b7c6ef6 100644
--- a/src/video_core/rasterizer_cache.h
+++ b/src/video_core/rasterizer_cache.h
@@ -105,6 +105,22 @@ protected:
return nullptr;
}
+ std::vector<T> GetInRange(Tegra::GPUVAddr addr, size_t size) {
+ std::vector<T> objects;
+ if (size == 0)
+ return objects;
+
+ const ObjectInterval interval{addr, addr + size};
+ for (auto& pair : boost::make_iterator_range(object_cache.equal_range(interval))) {
+ for (auto& cached_object : pair.second) {
+ if (!cached_object)
+ continue;
+ objects.push_back(cached_object);
+ }
+ }
+ return objects;
+ }
+
/// Register an object into the cache
void Register(const T& object) {
object->SetIsRegistered(true);