xref: /aosp_15_r20/external/angle/src/libANGLE/renderer/metal/DeviceMtl.mm (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker//
2*8975f5c5SAndroid Build Coastguard Worker// Copyright 2021 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// DeviceMtl: Metal implementation of egl::Device
8*8975f5c5SAndroid Build Coastguard Worker
9*8975f5c5SAndroid Build Coastguard Worker#include "libANGLE/renderer/metal/DeviceMtl.h"
10*8975f5c5SAndroid Build Coastguard Worker
11*8975f5c5SAndroid Build Coastguard Worker#include "libANGLE/Device.h"
12*8975f5c5SAndroid Build Coastguard Worker#include "libANGLE/Display.h"
13*8975f5c5SAndroid Build Coastguard Worker#include "libANGLE/renderer/metal/DisplayMtl.h"
14*8975f5c5SAndroid Build Coastguard Worker
15*8975f5c5SAndroid Build Coastguard Worker#include <EGL/eglext.h>
16*8975f5c5SAndroid Build Coastguard Workernamespace rx
17*8975f5c5SAndroid Build Coastguard Worker{
18*8975f5c5SAndroid Build Coastguard Worker
19*8975f5c5SAndroid Build Coastguard Worker// DeviceMtl implementation, implements DeviceImpl
20*8975f5c5SAndroid Build Coastguard WorkerDeviceMtl::DeviceMtl() {}
21*8975f5c5SAndroid Build Coastguard WorkerDeviceMtl::~DeviceMtl() {}
22*8975f5c5SAndroid Build Coastguard Worker
23*8975f5c5SAndroid Build Coastguard Workeregl::Error DeviceMtl::initialize()
24*8975f5c5SAndroid Build Coastguard Worker{
25*8975f5c5SAndroid Build Coastguard Worker    return egl::NoError();
26*8975f5c5SAndroid Build Coastguard Worker}
27*8975f5c5SAndroid Build Coastguard Worker
28*8975f5c5SAndroid Build Coastguard Workeregl::Error DeviceMtl::getAttribute(const egl::Display *display, EGLint attribute, void **outValue)
29*8975f5c5SAndroid Build Coastguard Worker{
30*8975f5c5SAndroid Build Coastguard Worker    DisplayMtl *displayImpl = mtl::GetImpl(display);
31*8975f5c5SAndroid Build Coastguard Worker
32*8975f5c5SAndroid Build Coastguard Worker    switch (attribute)
33*8975f5c5SAndroid Build Coastguard Worker    {
34*8975f5c5SAndroid Build Coastguard Worker        case EGL_METAL_DEVICE_ANGLE:
35*8975f5c5SAndroid Build Coastguard Worker            *outValue = displayImpl->getMetalDevice();
36*8975f5c5SAndroid Build Coastguard Worker            break;
37*8975f5c5SAndroid Build Coastguard Worker        default:
38*8975f5c5SAndroid Build Coastguard Worker            return egl::EglBadAttribute();
39*8975f5c5SAndroid Build Coastguard Worker    }
40*8975f5c5SAndroid Build Coastguard Worker
41*8975f5c5SAndroid Build Coastguard Worker    return egl::NoError();
42*8975f5c5SAndroid Build Coastguard Worker}
43*8975f5c5SAndroid Build Coastguard Worker
44*8975f5c5SAndroid Build Coastguard Workervoid DeviceMtl::generateExtensions(egl::DeviceExtensions *outExtensions) const
45*8975f5c5SAndroid Build Coastguard Worker{
46*8975f5c5SAndroid Build Coastguard Worker    outExtensions->deviceMetal = true;
47*8975f5c5SAndroid Build Coastguard Worker}
48*8975f5c5SAndroid Build Coastguard Worker
49*8975f5c5SAndroid Build Coastguard Worker}  // namespace rx
50