| //===----------------------------------------------------------------------===// | |
| // | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #include <sycl/__impl/device.hpp> | |
| #include <sycl/__impl/platform.hpp> | |
| #include <detail/context_impl.hpp> | |
| #include <detail/device_impl.hpp> | |
| #include <detail/platform_impl.hpp> | |
| _LIBSYCL_BEGIN_NAMESPACE_SYCL | |
| backend platform::get_backend() const noexcept { return impl->getBackend(); } | |
| std::vector<platform> platform::get_platforms() { | |
| auto &PlatformImpls = detail::PlatformImpl::getPlatforms(); | |
| std::vector<platform> Platforms; | |
| Platforms.reserve(PlatformImpls.size()); | |
| for (auto &PlatformImpl : PlatformImpls) { | |
| Platforms.emplace_back( | |
| detail::createSyclObjFromImpl<platform>(*PlatformImpl.get())); | |
| } | |
| return Platforms; | |
| } | |
| std::vector<device> platform::get_devices(info::device_type DeviceType) const { | |
| std::vector<device> Devices; | |
| impl->iterateDevices(DeviceType, [&Devices](detail::DeviceImpl *DevImpl) { | |
| assert(DevImpl && "Device impl can't be nullptr"); | |
| Devices.push_back(detail::createSyclObjFromImpl<device>(*DevImpl)); | |
| }); | |
| return Devices; | |
| } | |
| bool platform::has(aspect Aspect) const { return impl->has(Aspect); } | |
| template <typename Param> | |
| detail::is_platform_info_desc_t<Param> platform::get_info() const { | |
| return impl->getInfo<Param>(); | |
| } | |
| context platform::khr_get_default_context() const { | |
| return detail::createSyclObjFromImpl<context>(impl->getDefaultContext()); | |
| } | |
| #define _LIBSYCL_EXPORT_GET_INFO(Desc) \ | |
| template _LIBSYCL_EXPORT \ | |
| detail::is_platform_info_desc_t<info::platform::Desc> \ | |
| platform::get_info<info::platform::Desc>() const; | |
| _LIBSYCL_EXPORT_GET_INFO(version) | |
| _LIBSYCL_EXPORT_GET_INFO(name) | |
| _LIBSYCL_EXPORT_GET_INFO(vendor) | |
| #undef _LIBSYCL_EXPORT_GET_INFO | |
| _LIBSYCL_END_NAMESPACE_SYCL |