xref: /aosp_15_r20/external/angle/src/libANGLE/renderer/DisplayImpl.cpp (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker //
2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2014 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 // DisplayImpl.cpp: Implementation methods of egl::Display
8*8975f5c5SAndroid Build Coastguard Worker 
9*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/DisplayImpl.h"
10*8975f5c5SAndroid Build Coastguard Worker 
11*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Display.h"
12*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Surface.h"
13*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/DeviceImpl.h"
14*8975f5c5SAndroid Build Coastguard Worker 
15*8975f5c5SAndroid Build Coastguard Worker namespace rx
16*8975f5c5SAndroid Build Coastguard Worker {
17*8975f5c5SAndroid Build Coastguard Worker namespace
18*8975f5c5SAndroid Build Coastguard Worker {
19*8975f5c5SAndroid Build Coastguard Worker // For back-ends that do not implement EGLDevice.
20*8975f5c5SAndroid Build Coastguard Worker class MockDevice : public DeviceImpl
21*8975f5c5SAndroid Build Coastguard Worker {
22*8975f5c5SAndroid Build Coastguard Worker   public:
23*8975f5c5SAndroid Build Coastguard Worker     MockDevice() = default;
initialize()24*8975f5c5SAndroid Build Coastguard Worker     egl::Error initialize() override { return egl::NoError(); }
getAttribute(const egl::Display * display,EGLint attribute,void ** outValue)25*8975f5c5SAndroid Build Coastguard Worker     egl::Error getAttribute(const egl::Display *display, EGLint attribute, void **outValue) override
26*8975f5c5SAndroid Build Coastguard Worker     {
27*8975f5c5SAndroid Build Coastguard Worker         UNREACHABLE();
28*8975f5c5SAndroid Build Coastguard Worker         return egl::EglBadAttribute();
29*8975f5c5SAndroid Build Coastguard Worker     }
generateExtensions(egl::DeviceExtensions * outExtensions) const30*8975f5c5SAndroid Build Coastguard Worker     void generateExtensions(egl::DeviceExtensions *outExtensions) const override
31*8975f5c5SAndroid Build Coastguard Worker     {
32*8975f5c5SAndroid Build Coastguard Worker         *outExtensions = egl::DeviceExtensions();
33*8975f5c5SAndroid Build Coastguard Worker     }
34*8975f5c5SAndroid Build Coastguard Worker };
35*8975f5c5SAndroid Build Coastguard Worker }  // anonymous namespace
36*8975f5c5SAndroid Build Coastguard Worker 
DisplayImpl(const egl::DisplayState & state)37*8975f5c5SAndroid Build Coastguard Worker DisplayImpl::DisplayImpl(const egl::DisplayState &state)
38*8975f5c5SAndroid Build Coastguard Worker     : mState(state), mExtensionsInitialized(false), mCapsInitialized(false), mBlobCache(nullptr)
39*8975f5c5SAndroid Build Coastguard Worker {}
40*8975f5c5SAndroid Build Coastguard Worker 
~DisplayImpl()41*8975f5c5SAndroid Build Coastguard Worker DisplayImpl::~DisplayImpl()
42*8975f5c5SAndroid Build Coastguard Worker {
43*8975f5c5SAndroid Build Coastguard Worker     ASSERT(mState.surfaceMap.empty());
44*8975f5c5SAndroid Build Coastguard Worker }
45*8975f5c5SAndroid Build Coastguard Worker 
prepareForCall()46*8975f5c5SAndroid Build Coastguard Worker egl::Error DisplayImpl::prepareForCall()
47*8975f5c5SAndroid Build Coastguard Worker {
48*8975f5c5SAndroid Build Coastguard Worker     return egl::NoError();
49*8975f5c5SAndroid Build Coastguard Worker }
50*8975f5c5SAndroid Build Coastguard Worker 
releaseThread()51*8975f5c5SAndroid Build Coastguard Worker egl::Error DisplayImpl::releaseThread()
52*8975f5c5SAndroid Build Coastguard Worker {
53*8975f5c5SAndroid Build Coastguard Worker     return egl::NoError();
54*8975f5c5SAndroid Build Coastguard Worker }
55*8975f5c5SAndroid Build Coastguard Worker 
getExtensions() const56*8975f5c5SAndroid Build Coastguard Worker const egl::DisplayExtensions &DisplayImpl::getExtensions() const
57*8975f5c5SAndroid Build Coastguard Worker {
58*8975f5c5SAndroid Build Coastguard Worker     if (!mExtensionsInitialized)
59*8975f5c5SAndroid Build Coastguard Worker     {
60*8975f5c5SAndroid Build Coastguard Worker         generateExtensions(&mExtensions);
61*8975f5c5SAndroid Build Coastguard Worker         mExtensionsInitialized = true;
62*8975f5c5SAndroid Build Coastguard Worker     }
63*8975f5c5SAndroid Build Coastguard Worker 
64*8975f5c5SAndroid Build Coastguard Worker     return mExtensions;
65*8975f5c5SAndroid Build Coastguard Worker }
66*8975f5c5SAndroid Build Coastguard Worker 
handleGPUSwitch()67*8975f5c5SAndroid Build Coastguard Worker egl::Error DisplayImpl::handleGPUSwitch()
68*8975f5c5SAndroid Build Coastguard Worker {
69*8975f5c5SAndroid Build Coastguard Worker     return egl::NoError();
70*8975f5c5SAndroid Build Coastguard Worker }
71*8975f5c5SAndroid Build Coastguard Worker 
forceGPUSwitch(EGLint gpuIDHigh,EGLint gpuIDLow)72*8975f5c5SAndroid Build Coastguard Worker egl::Error DisplayImpl::forceGPUSwitch(EGLint gpuIDHigh, EGLint gpuIDLow)
73*8975f5c5SAndroid Build Coastguard Worker {
74*8975f5c5SAndroid Build Coastguard Worker     return egl::NoError();
75*8975f5c5SAndroid Build Coastguard Worker }
76*8975f5c5SAndroid Build Coastguard Worker 
waitUntilWorkScheduled()77*8975f5c5SAndroid Build Coastguard Worker egl::Error DisplayImpl::waitUntilWorkScheduled()
78*8975f5c5SAndroid Build Coastguard Worker {
79*8975f5c5SAndroid Build Coastguard Worker     return egl::NoError();
80*8975f5c5SAndroid Build Coastguard Worker }
81*8975f5c5SAndroid Build Coastguard Worker 
validateClientBuffer(const egl::Config * configuration,EGLenum buftype,EGLClientBuffer clientBuffer,const egl::AttributeMap & attribs) const82*8975f5c5SAndroid Build Coastguard Worker egl::Error DisplayImpl::validateClientBuffer(const egl::Config *configuration,
83*8975f5c5SAndroid Build Coastguard Worker                                              EGLenum buftype,
84*8975f5c5SAndroid Build Coastguard Worker                                              EGLClientBuffer clientBuffer,
85*8975f5c5SAndroid Build Coastguard Worker                                              const egl::AttributeMap &attribs) const
86*8975f5c5SAndroid Build Coastguard Worker {
87*8975f5c5SAndroid Build Coastguard Worker     UNREACHABLE();
88*8975f5c5SAndroid Build Coastguard Worker     return egl::EglBadDisplay() << "DisplayImpl::validateClientBuffer unimplemented.";
89*8975f5c5SAndroid Build Coastguard Worker }
90*8975f5c5SAndroid Build Coastguard Worker 
validateImageClientBuffer(const gl::Context * context,EGLenum target,EGLClientBuffer clientBuffer,const egl::AttributeMap & attribs) const91*8975f5c5SAndroid Build Coastguard Worker egl::Error DisplayImpl::validateImageClientBuffer(const gl::Context *context,
92*8975f5c5SAndroid Build Coastguard Worker                                                   EGLenum target,
93*8975f5c5SAndroid Build Coastguard Worker                                                   EGLClientBuffer clientBuffer,
94*8975f5c5SAndroid Build Coastguard Worker                                                   const egl::AttributeMap &attribs) const
95*8975f5c5SAndroid Build Coastguard Worker {
96*8975f5c5SAndroid Build Coastguard Worker     UNREACHABLE();
97*8975f5c5SAndroid Build Coastguard Worker     return egl::EglBadDisplay() << "DisplayImpl::validateImageClientBuffer unimplemented.";
98*8975f5c5SAndroid Build Coastguard Worker }
99*8975f5c5SAndroid Build Coastguard Worker 
validatePixmap(const egl::Config * config,EGLNativePixmapType pixmap,const egl::AttributeMap & attributes) const100*8975f5c5SAndroid Build Coastguard Worker egl::Error DisplayImpl::validatePixmap(const egl::Config *config,
101*8975f5c5SAndroid Build Coastguard Worker                                        EGLNativePixmapType pixmap,
102*8975f5c5SAndroid Build Coastguard Worker                                        const egl::AttributeMap &attributes) const
103*8975f5c5SAndroid Build Coastguard Worker {
104*8975f5c5SAndroid Build Coastguard Worker     UNREACHABLE();
105*8975f5c5SAndroid Build Coastguard Worker     return egl::EglBadDisplay() << "DisplayImpl::valdiatePixmap unimplemented.";
106*8975f5c5SAndroid Build Coastguard Worker }
107*8975f5c5SAndroid Build Coastguard Worker 
getCaps() const108*8975f5c5SAndroid Build Coastguard Worker const egl::Caps &DisplayImpl::getCaps() const
109*8975f5c5SAndroid Build Coastguard Worker {
110*8975f5c5SAndroid Build Coastguard Worker     if (!mCapsInitialized)
111*8975f5c5SAndroid Build Coastguard Worker     {
112*8975f5c5SAndroid Build Coastguard Worker         generateCaps(&mCaps);
113*8975f5c5SAndroid Build Coastguard Worker         mCapsInitialized = true;
114*8975f5c5SAndroid Build Coastguard Worker     }
115*8975f5c5SAndroid Build Coastguard Worker 
116*8975f5c5SAndroid Build Coastguard Worker     return mCaps;
117*8975f5c5SAndroid Build Coastguard Worker }
118*8975f5c5SAndroid Build Coastguard Worker 
createDevice()119*8975f5c5SAndroid Build Coastguard Worker DeviceImpl *DisplayImpl::createDevice()
120*8975f5c5SAndroid Build Coastguard Worker {
121*8975f5c5SAndroid Build Coastguard Worker     return new MockDevice();
122*8975f5c5SAndroid Build Coastguard Worker }
123*8975f5c5SAndroid Build Coastguard Worker 
getWindowSystem() const124*8975f5c5SAndroid Build Coastguard Worker angle::NativeWindowSystem DisplayImpl::getWindowSystem() const
125*8975f5c5SAndroid Build Coastguard Worker {
126*8975f5c5SAndroid Build Coastguard Worker     return angle::NativeWindowSystem::Other;
127*8975f5c5SAndroid Build Coastguard Worker }
128*8975f5c5SAndroid Build Coastguard Worker 
supportsDmaBufFormat(EGLint format) const129*8975f5c5SAndroid Build Coastguard Worker bool DisplayImpl::supportsDmaBufFormat(EGLint format) const
130*8975f5c5SAndroid Build Coastguard Worker {
131*8975f5c5SAndroid Build Coastguard Worker     UNREACHABLE();
132*8975f5c5SAndroid Build Coastguard Worker     return false;
133*8975f5c5SAndroid Build Coastguard Worker }
134*8975f5c5SAndroid Build Coastguard Worker 
queryDmaBufFormats(EGLint max_formats,EGLint * formats,EGLint * num_formats)135*8975f5c5SAndroid Build Coastguard Worker egl::Error DisplayImpl::queryDmaBufFormats(EGLint max_formats, EGLint *formats, EGLint *num_formats)
136*8975f5c5SAndroid Build Coastguard Worker {
137*8975f5c5SAndroid Build Coastguard Worker     UNREACHABLE();
138*8975f5c5SAndroid Build Coastguard Worker     return egl::NoError();
139*8975f5c5SAndroid Build Coastguard Worker }
140*8975f5c5SAndroid Build Coastguard Worker 
queryDmaBufModifiers(EGLint format,EGLint max_modifiers,EGLuint64KHR * modifiers,EGLBoolean * external_only,EGLint * num_modifiers)141*8975f5c5SAndroid Build Coastguard Worker egl::Error DisplayImpl::queryDmaBufModifiers(EGLint format,
142*8975f5c5SAndroid Build Coastguard Worker                                              EGLint max_modifiers,
143*8975f5c5SAndroid Build Coastguard Worker                                              EGLuint64KHR *modifiers,
144*8975f5c5SAndroid Build Coastguard Worker                                              EGLBoolean *external_only,
145*8975f5c5SAndroid Build Coastguard Worker                                              EGLint *num_modifiers)
146*8975f5c5SAndroid Build Coastguard Worker {
147*8975f5c5SAndroid Build Coastguard Worker     UNREACHABLE();
148*8975f5c5SAndroid Build Coastguard Worker     return egl::NoError();
149*8975f5c5SAndroid Build Coastguard Worker }
150*8975f5c5SAndroid Build Coastguard Worker }  // namespace rx
151