// // Copyright (c) 2015 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // Device.cpp: Implements the egl::Device class, representing the abstract // device. Implements EGLDevice. #include "libANGLE/Device.h" #include #include #include #include "common/debug.h" #include "common/platform.h" #include "libANGLE/renderer/DeviceImpl.h" namespace egl { template static std::string GenerateExtensionsString(const T &extensions) { std::vector extensionsVector = extensions.getStrings(); std::ostringstream stream; std::copy(extensionsVector.begin(), extensionsVector.end(), std::ostream_iterator(stream, " ")); return stream.str(); } Device::Device(Display *display, rx::DeviceImpl *impl) : mDisplay(display), mImplementation(impl) { initDeviceExtensions(); } Device::~Device() { } Error Device::getDevice(EGLAttrib *value) { return getImplementation()->getDevice(value); } EGLint Device::getType() { return getImplementation()->getType(); } void Device::initDeviceExtensions() { mImplementation->generateExtensions(&mDeviceExtensions); mDeviceExtensionString = GenerateExtensionsString(mDeviceExtensions); } const DeviceExtensions &Device::getExtensions() const { return mDeviceExtensions; } const std::string &Device::getExtensionString() const { return mDeviceExtensionString; } }