tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

Device.h (1533B)


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