diff options
Diffstat (limited to 'gfx/angle/checkout/src/libANGLE/renderer/DisplayImpl.cpp')
-rw-r--r-- | gfx/angle/checkout/src/libANGLE/renderer/DisplayImpl.cpp | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/gfx/angle/checkout/src/libANGLE/renderer/DisplayImpl.cpp b/gfx/angle/checkout/src/libANGLE/renderer/DisplayImpl.cpp new file mode 100644 index 0000000000..b38f9ca9b9 --- /dev/null +++ b/gfx/angle/checkout/src/libANGLE/renderer/DisplayImpl.cpp @@ -0,0 +1,118 @@ +// +// Copyright 2014 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. +// + +// DisplayImpl.cpp: Implementation methods of egl::Display + +#include "libANGLE/renderer/DisplayImpl.h" + +#include "libANGLE/Display.h" +#include "libANGLE/Surface.h" +#include "libANGLE/renderer/DeviceImpl.h" + +namespace rx +{ +namespace +{ +// For back-ends that do not implement EGLDevice. +class MockDevice : public DeviceImpl +{ + public: + MockDevice() = default; + egl::Error initialize() override { return egl::NoError(); } + egl::Error getAttribute(const egl::Display *display, EGLint attribute, void **outValue) override + { + UNREACHABLE(); + return egl::EglBadAttribute(); + } + EGLint getType() override + { + UNREACHABLE(); + return EGL_NONE; + } + void generateExtensions(egl::DeviceExtensions *outExtensions) const override + { + *outExtensions = egl::DeviceExtensions(); + } +}; +} // anonymous namespace + +DisplayImpl::DisplayImpl(const egl::DisplayState &state) + : mState(state), mExtensionsInitialized(false), mCapsInitialized(false), mBlobCache(nullptr) +{} + +DisplayImpl::~DisplayImpl() +{ + ASSERT(mState.surfaceSet.empty()); +} + +egl::Error DisplayImpl::prepareForCall() +{ + return egl::NoError(); +} + +egl::Error DisplayImpl::releaseThread() +{ + return egl::NoError(); +} + +const egl::DisplayExtensions &DisplayImpl::getExtensions() const +{ + if (!mExtensionsInitialized) + { + generateExtensions(&mExtensions); + mExtensionsInitialized = true; + } + + return mExtensions; +} + +egl::Error DisplayImpl::handleGPUSwitch() +{ + return egl::NoError(); +} + +egl::Error DisplayImpl::validateClientBuffer(const egl::Config *configuration, + EGLenum buftype, + EGLClientBuffer clientBuffer, + const egl::AttributeMap &attribs) const +{ + UNREACHABLE(); + return egl::EglBadDisplay() << "DisplayImpl::validateClientBuffer unimplemented."; +} + +egl::Error DisplayImpl::validateImageClientBuffer(const gl::Context *context, + EGLenum target, + EGLClientBuffer clientBuffer, + const egl::AttributeMap &attribs) const +{ + UNREACHABLE(); + return egl::EglBadDisplay() << "DisplayImpl::validateImageClientBuffer unimplemented."; +} + +egl::Error DisplayImpl::validatePixmap(const egl::Config *config, + EGLNativePixmapType pixmap, + const egl::AttributeMap &attributes) const +{ + UNREACHABLE(); + return egl::EglBadDisplay() << "DisplayImpl::valdiatePixmap unimplemented."; +} + +const egl::Caps &DisplayImpl::getCaps() const +{ + if (!mCapsInitialized) + { + generateCaps(&mCaps); + mCapsInitialized = true; + } + + return mCaps; +} + +DeviceImpl *DisplayImpl::createDevice() +{ + return new MockDevice(); +} +} // namespace rx |