/* * Copyright (C) 2019-2020 Intel Corporation * * SPDX-License-Identifier: MIT * */ #pragma once #include "shared/source/memory_manager/memory_operations_handler.h" #include "shared/source/utilities/spinlock.h" #include "third_party/aub_stream/headers/aub_manager.h" #include #include namespace NEO { class AubMemoryOperationsHandler : public MemoryOperationsHandler { public: AubMemoryOperationsHandler(aub_stream::AubManager *aubManager); ~AubMemoryOperationsHandler() override = default; MemoryOperationsStatus makeResident(Device *device, ArrayRef gfxAllocations) override; MemoryOperationsStatus evict(Device *device, GraphicsAllocation &gfxAllocation) override; MemoryOperationsStatus isResident(Device *device, GraphicsAllocation &gfxAllocation) override; void setAubManager(aub_stream::AubManager *aubManager); protected: MOCKABLE_VIRTUAL std::unique_lock acquireLock(SpinLock &lock) { return std::unique_lock{lock}; } aub_stream::AubManager *aubManager = nullptr; std::vector residentAllocations; SpinLock resourcesLock; }; } // namespace NEO