/* * Copyright (C) 2018-2020 Intel Corporation * * SPDX-License-Identifier: MIT * */ #pragma once #include "shared/source/utilities/reference_tracked_object.h" #include namespace NEO { class MemoryManager; struct OsEnvironment; struct RootDeviceEnvironment; class ExecutionEnvironment : public ReferenceTrackedObject { public: ExecutionEnvironment(); ~ExecutionEnvironment() override; void initializeMemoryManager(); void calculateMaxOsContextCount(); void prepareRootDeviceEnvironments(uint32_t numRootDevices); void setPerContextMemorySpace() { requirePerContextMemorySpace = true; } bool isPerContextMemorySpaceRequired() { return requirePerContextMemorySpace; } std::unique_ptr memoryManager; std::unique_ptr osEnvironment; std::vector> rootDeviceEnvironments; protected: bool requirePerContextMemorySpace = false; }; } // namespace NEO