//
// 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.
//

// DeviceD3D.h: D3D implementation of egl::Device

#ifndef LIBANGLE_RENDERER_D3D_DEVICED3D_H_
#define LIBANGLE_RENDERER_D3D_DEVICED3D_H_

#include "libANGLE/Device.h"
#include "libANGLE/renderer/DeviceImpl.h"
#include "libANGLE/renderer/d3d/RendererD3D.h"

namespace rx
{
class DeviceD3D : public DeviceImpl
{
  public:
    DeviceD3D();
    ~DeviceD3D() override;

    egl::Error initialize(void *device, EGLint deviceType, EGLBoolean external);
    egl::Error getDevice(void **outValue) override;
    EGLint getType() override;
    void generateExtensions(egl::DeviceExtensions *outExtensions) const override;
    bool deviceExternallySourced() override { return mDeviceExternallySourced; }

  private:
    void *mDevice;
    EGLint mDeviceType;
    bool mDeviceExternallySourced;
    bool mIsInitialized;
};

}

#endif // LIBANGLE_RENDERER_D3D_DEVICED3D_H_
