| // | |
| // 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 <iterator> | |
| #include <platform/Platform.h> | |
| #include <EGL/eglext.h> | |
| #include "common/debug.h" | |
| #include "common/platform.h" | |
| #include "libANGLE/renderer/DeviceImpl.h" | |
| namespace egl | |
| { | |
| template <typename T> | |
| static std::string GenerateExtensionsString(const T &extensions) | |
| { | |
| std::vector<std::string> extensionsVector = extensions.getStrings(); | |
| std::ostringstream stream; | |
| std::copy(extensionsVector.begin(), extensionsVector.end(), std::ostream_iterator<std::string>(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; | |
| } | |
| } |