9 #ifndef hifi_gpu_PageManager_h
10 #define hifi_gpu_PageManager_h
19 static const Size DEFAULT_PAGE_SIZE = 4096;
26 using FlagType = uint8_t;
29 using Vector = std::vector<FlagType>;
31 using Pages = std::vector<Size>;
37 PageManager(Size pageSize = DEFAULT_PAGE_SIZE);
38 PageManager& operator=(
const PageManager& other);
40 operator bool()
const;
41 bool operator()(uint8 desiredFlags)
const;
42 void markPage(Size index, uint8 markFlags = DIRTY);
43 void markRegion(Size offset, Size bytes, uint8 markFlags = DIRTY);
44 Size getPageCount(uint8_t desiredFlags = DIRTY)
const;
45 Size getSize(uint8_t desiredFlags = DIRTY)
const;
46 void setPageCount(Size count);
47 Size getRequiredPageCount(Size size)
const;
48 Size getRequiredSize(Size size)
const;
49 Size accommodate(Size size);
51 Pages getMarkedPages(uint8_t desiredFlags = DIRTY,
bool clear =
true);
52 bool getNextTransferBlock(Size& outOffset, Size& outSize, Size& currentPage);