diff options
| author | FernandoS27 <fsahmkow27@gmail.com> | 2018-10-15 21:09:38 -0400 | 
|---|---|---|
| committer | FernandoS27 <fsahmkow27@gmail.com> | 2018-10-17 18:52:10 -0400 | 
| commit | dbc34db6ce21dfb119bb8756bde41c9e45f8515f (patch) | |
| tree | 7180eb225d5c32cadf92f1a49a556060b307faf5 | |
| parent | fd9e2d0073be84deff02a122d5db8d2917309a61 (diff) | |
Implement GetInRange in the Rasterizer Cache
| -rw-r--r-- | src/video_core/rasterizer_cache.h | 16 | 
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:          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);  | 
