/* * Copyright (C) 2018-2019 Intel Corporation * * SPDX-License-Identifier: MIT * */ #pragma once #include "core/execution_environment/root_device_environment.h" #include "core/utilities/reference_tracked_object.h" #include "runtime/helpers/options.h" #include "runtime/os_interface/device_factory.h" #include namespace NEO { class BuiltIns; class CommandStreamReceiver; class CompilerInterface; class GmmHelper; class MemoryManager; class MemoryOperationsHandler; class OSInterface; class RootDevice; class SourceLevelDebugger; struct HardwareInfo; class ExecutionEnvironment : public ReferenceTrackedObject { private: std::mutex mtx; DeviceFactoryCleaner cleaner; protected: std::unique_ptr gmmHelper; std::unique_ptr hwInfo; public: ExecutionEnvironment(); ~ExecutionEnvironment() override; MOCKABLE_VIRTUAL void initAubCenter(bool localMemoryEnabled, const std::string &aubFileName, CommandStreamReceiverType csrType); void initGmm(); bool initializeCommandStreamReceiver(uint32_t rootDeviceIndex, uint32_t internalDeviceIndex, uint32_t deviceCsrIndex); MOCKABLE_VIRTUAL bool initializeRootCommandStreamReceiver(RootDevice &rootDevice); void initializeMemoryManager(); void initSourceLevelDebugger(); void setHwInfo(const HardwareInfo *hwInfo); const HardwareInfo *getHardwareInfo() const { return hwInfo.get(); } HardwareInfo *getMutableHardwareInfo() const { return hwInfo.get(); } bool isFullRangeSvm() const; GmmHelper *getGmmHelper() const; MOCKABLE_VIRTUAL CompilerInterface *getCompilerInterface(); BuiltIns *getBuiltIns(); std::unique_ptr osInterface; std::unique_ptr memoryOperationsInterface; std::unique_ptr memoryManager; std::vector rootDeviceEnvironments{1}; std::unique_ptr builtins; std::unique_ptr compilerInterface; std::unique_ptr sourceLevelDebugger; }; } // namespace NEO