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