Explorar o código

Implement GetInRange in the Rasterizer Cache

FernandoS27 %!s(int64=7) %!d(string=hai) anos
pai
achega
dbc34db6ce
Modificáronse 1 ficheiros con 16 adicións e 0 borrados
  1. 16 0
      src/video_core/rasterizer_cache.h

+ 16 - 0
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);