/* * Copyright (C) 2020-2023 Intel Corporation * * SPDX-License-Identifier: MIT * */ #pragma once #include "shared/source/execution_environment/execution_environment.h" #include #include namespace std { struct once_flag; } namespace NEO { class AsyncEventsHandler; class BuiltinDispatchInfoBuilder; class ClExecutionEnvironment : public ExecutionEnvironment { public: ClExecutionEnvironment(); AsyncEventsHandler *getAsyncEventsHandler() const; ~ClExecutionEnvironment() override; void prepareRootDeviceEnvironments(uint32_t numRootDevices) override; using BuilderT = std::pair, std::once_flag>; BuilderT *peekBuilders(uint32_t rootDeviceIndex) { return builtinOpsBuilders[rootDeviceIndex].get(); } protected: std::vector> builtinOpsBuilders; std::unique_ptr asyncEventsHandler; }; } // namespace NEO