1
0
Fork 0

video_core: use explicit interval type in texture cache

The default is discrete_interval which has dynamic open-ness.
We only use right_open intervals anyway. In theory this could allow some compile-time optimizations.
This commit is contained in:
BreadFish64 2020-02-28 13:45:19 -06:00
parent 55ec7031cc
commit cfd2ab6121
1 changed files with 9 additions and 5 deletions

View File

@ -80,11 +80,15 @@ struct CachedSurface;
using Surface = std::shared_ptr<CachedSurface>; using Surface = std::shared_ptr<CachedSurface>;
using SurfaceSet = std::set<Surface>; using SurfaceSet = std::set<Surface>;
using SurfaceRegions = boost::icl::interval_set<PAddr>; using SurfaceInterval = boost::icl::right_open_interval<PAddr>;
using SurfaceMap = boost::icl::interval_map<PAddr, Surface>; using SurfaceRegions = boost::icl::interval_set<PAddr, std::less, SurfaceInterval>;
using SurfaceCache = boost::icl::interval_map<PAddr, SurfaceSet>; using SurfaceMap =
boost::icl::interval_map<PAddr, Surface, boost::icl::partial_absorber, std::less,
boost::icl::inplace_plus, boost::icl::inter_section, SurfaceInterval>;
using SurfaceCache =
boost::icl::interval_map<PAddr, SurfaceSet, boost::icl::partial_absorber, std::less,
boost::icl::inplace_plus, boost::icl::inter_section, SurfaceInterval>;
using SurfaceInterval = SurfaceCache::interval_type;
static_assert(std::is_same<SurfaceRegions::interval_type, SurfaceCache::interval_type>() && static_assert(std::is_same<SurfaceRegions::interval_type, SurfaceCache::interval_type>() &&
std::is_same<SurfaceMap::interval_type, SurfaceCache::interval_type>(), std::is_same<SurfaceMap::interval_type, SurfaceCache::interval_type>(),
"incorrect interval types"); "incorrect interval types");
@ -245,7 +249,7 @@ struct SurfaceParams {
} }
SurfaceInterval GetInterval() const { SurfaceInterval GetInterval() const {
return SurfaceInterval::right_open(addr, end); return SurfaceInterval(addr, end);
} }
// Returns the outer rectangle containing "interval" // Returns the outer rectangle containing "interval"