Implement GetInRange in the Rasterizer Cache

This commit is contained in:
FernandoS27 2018-10-15 21:09:38 -04:00
parent fd9e2d0073
commit dbc34db6ce
1 changed files with 16 additions and 0 deletions

View File

@ -105,6 +105,22 @@ protected:
return nullptr; 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 /// Register an object into the cache
void Register(const T& object) { void Register(const T& object) {
object->SetIsRegistered(true); object->SetIsRegistered(true);