Hash :
ccd9a43b
Author :
Date :
2024-05-22T11:15:39
Split EGL_ANGLE_device_d3d into D3D9 and D3D11 versions. Add EGL_ANGLE_device_d3d9 and EGL_ANGLE_device_d3d11 which make it possible to know what type of device can be queried ahead of time without generating EGL errors. Refactor the DeviceD3D class into Device9 and Device11. Remove the getType method now that it's not needed for internal validation. Keep EGL_ANGLE_device_d3d for backwards compatibility. Bug: angleproject:342096132 Change-Id: Ib950abad58e46a5be269891ea7afd0cb8534cbe8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5559163 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
//
// Copyright 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.h: Implements the egl::Device class, representing the abstract
// device. Implements EGLDevice.
#ifndef LIBANGLE_DEVICE_H_
#define LIBANGLE_DEVICE_H_
#include "common/angleutils.h"
#include "libANGLE/Display.h"
#include "libANGLE/Error.h"
#include <memory>
namespace rx
{
class DeviceImpl;
} // namespace rx
namespace egl
{
class Device final : public LabeledObject, angle::NonCopyable
{
public:
Device(Display *owningDisplay, rx::DeviceImpl *impl);
~Device() override;
void setLabel(EGLLabelKHR label) override;
EGLLabelKHR getLabel() const override;
Error getAttribute(EGLint attribute, EGLAttrib *value);
Display *getOwningDisplay() const { return mOwningDisplay; }
const DeviceExtensions &getExtensions() const;
const std::string &getExtensionString() const;
const std::string &getDeviceString(EGLint name);
rx::DeviceImpl *getImplementation() { return mImplementation.get(); }
static egl::Error CreateDevice(EGLint deviceType, void *nativeDevice, Device **outDevice);
static bool IsValidDevice(const Device *device);
private:
void initDeviceExtensions();
EGLLabelKHR mLabel;
Display *mOwningDisplay;
std::unique_ptr<rx::DeviceImpl> mImplementation;
DeviceExtensions mDeviceExtensions;
std::string mDeviceExtensionString;
std::map<EGLint, std::string> mDeviceStrings;
};
} // namespace egl
#endif // LIBANGLE_DEVICE_H_