1*8975f5c5SAndroid Build Coastguard Worker // 2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2015 The ANGLE Project Authors. All rights reserved. 3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file. 5*8975f5c5SAndroid Build Coastguard Worker // 6*8975f5c5SAndroid Build Coastguard Worker 7*8975f5c5SAndroid Build Coastguard Worker // Device.h: Implements the egl::Device class, representing the abstract 8*8975f5c5SAndroid Build Coastguard Worker // device. Implements EGLDevice. 9*8975f5c5SAndroid Build Coastguard Worker 10*8975f5c5SAndroid Build Coastguard Worker #ifndef LIBANGLE_DEVICE_H_ 11*8975f5c5SAndroid Build Coastguard Worker #define LIBANGLE_DEVICE_H_ 12*8975f5c5SAndroid Build Coastguard Worker 13*8975f5c5SAndroid Build Coastguard Worker #include "common/angleutils.h" 14*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Display.h" 15*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Error.h" 16*8975f5c5SAndroid Build Coastguard Worker 17*8975f5c5SAndroid Build Coastguard Worker #include <memory> 18*8975f5c5SAndroid Build Coastguard Worker 19*8975f5c5SAndroid Build Coastguard Worker namespace rx 20*8975f5c5SAndroid Build Coastguard Worker { 21*8975f5c5SAndroid Build Coastguard Worker class DeviceImpl; 22*8975f5c5SAndroid Build Coastguard Worker } // namespace rx 23*8975f5c5SAndroid Build Coastguard Worker 24*8975f5c5SAndroid Build Coastguard Worker namespace egl 25*8975f5c5SAndroid Build Coastguard Worker { 26*8975f5c5SAndroid Build Coastguard Worker class Device final : public LabeledObject, angle::NonCopyable 27*8975f5c5SAndroid Build Coastguard Worker { 28*8975f5c5SAndroid Build Coastguard Worker public: 29*8975f5c5SAndroid Build Coastguard Worker Device(Display *owningDisplay, rx::DeviceImpl *impl); 30*8975f5c5SAndroid Build Coastguard Worker ~Device() override; 31*8975f5c5SAndroid Build Coastguard Worker 32*8975f5c5SAndroid Build Coastguard Worker void setLabel(EGLLabelKHR label) override; 33*8975f5c5SAndroid Build Coastguard Worker EGLLabelKHR getLabel() const override; 34*8975f5c5SAndroid Build Coastguard Worker 35*8975f5c5SAndroid Build Coastguard Worker Error getAttribute(EGLint attribute, EGLAttrib *value); getOwningDisplay()36*8975f5c5SAndroid Build Coastguard Worker Display *getOwningDisplay() const { return mOwningDisplay; } 37*8975f5c5SAndroid Build Coastguard Worker 38*8975f5c5SAndroid Build Coastguard Worker const DeviceExtensions &getExtensions() const; 39*8975f5c5SAndroid Build Coastguard Worker const std::string &getExtensionString() const; 40*8975f5c5SAndroid Build Coastguard Worker const std::string &getDeviceString(EGLint name); 41*8975f5c5SAndroid Build Coastguard Worker getImplementation()42*8975f5c5SAndroid Build Coastguard Worker rx::DeviceImpl *getImplementation() { return mImplementation.get(); } 43*8975f5c5SAndroid Build Coastguard Worker 44*8975f5c5SAndroid Build Coastguard Worker static egl::Error CreateDevice(EGLint deviceType, void *nativeDevice, Device **outDevice); 45*8975f5c5SAndroid Build Coastguard Worker static bool IsValidDevice(const Device *device); 46*8975f5c5SAndroid Build Coastguard Worker 47*8975f5c5SAndroid Build Coastguard Worker private: 48*8975f5c5SAndroid Build Coastguard Worker void initDeviceExtensions(); 49*8975f5c5SAndroid Build Coastguard Worker 50*8975f5c5SAndroid Build Coastguard Worker EGLLabelKHR mLabel; 51*8975f5c5SAndroid Build Coastguard Worker 52*8975f5c5SAndroid Build Coastguard Worker Display *mOwningDisplay; 53*8975f5c5SAndroid Build Coastguard Worker std::unique_ptr<rx::DeviceImpl> mImplementation; 54*8975f5c5SAndroid Build Coastguard Worker 55*8975f5c5SAndroid Build Coastguard Worker DeviceExtensions mDeviceExtensions; 56*8975f5c5SAndroid Build Coastguard Worker std::string mDeviceExtensionString; 57*8975f5c5SAndroid Build Coastguard Worker std::map<EGLint, std::string> mDeviceStrings; 58*8975f5c5SAndroid Build Coastguard Worker }; 59*8975f5c5SAndroid Build Coastguard Worker } // namespace egl 60*8975f5c5SAndroid Build Coastguard Worker 61*8975f5c5SAndroid Build Coastguard Worker #endif // LIBANGLE_DEVICE_H_ 62