diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /gfx/angle/src/libANGLE/renderer/DisplayImpl.h | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'gfx/angle/src/libANGLE/renderer/DisplayImpl.h')
-rwxr-xr-x | gfx/angle/src/libANGLE/renderer/DisplayImpl.h | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/gfx/angle/src/libANGLE/renderer/DisplayImpl.h b/gfx/angle/src/libANGLE/renderer/DisplayImpl.h new file mode 100755 index 000000000..ec603e85b --- /dev/null +++ b/gfx/angle/src/libANGLE/renderer/DisplayImpl.h @@ -0,0 +1,104 @@ +// +// Copyright (c) 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.h: Implementation methods of egl::Display + +#ifndef LIBANGLE_RENDERER_DISPLAYIMPL_H_ +#define LIBANGLE_RENDERER_DISPLAYIMPL_H_ + +#include "common/angleutils.h" +#include "libANGLE/Caps.h" +#include "libANGLE/Config.h" +#include "libANGLE/Error.h" +#include "libANGLE/renderer/EGLImplFactory.h" +#include "libANGLE/Stream.h" +#include "libANGLE/Version.h" + +#include <set> +#include <vector> + +namespace egl +{ +class AttributeMap; +class Display; +struct Config; +class Surface; +class ImageSibling; +} + +namespace gl +{ +class Context; +} + +namespace rx +{ +class SurfaceImpl; +class ImageImpl; +struct ConfigDesc; +class DeviceImpl; +class StreamProducerImpl; + +class DisplayImpl : public EGLImplFactory +{ + public: + DisplayImpl(); + virtual ~DisplayImpl(); + + virtual egl::Error initialize(egl::Display *display) = 0; + virtual void terminate() = 0; + + virtual egl::Error makeCurrent(egl::Surface *drawSurface, egl::Surface *readSurface, gl::Context *context) = 0; + + virtual egl::ConfigSet generateConfigs() = 0; + + virtual bool testDeviceLost() = 0; + virtual egl::Error restoreLostDevice() = 0; + + virtual bool isValidNativeWindow(EGLNativeWindowType window) const = 0; + virtual egl::Error validateClientBuffer(const egl::Config *configuration, + EGLenum buftype, + EGLClientBuffer clientBuffer, + const egl::AttributeMap &attribs) const; + + virtual std::string getVendorString() const = 0; + + virtual egl::Error getDevice(DeviceImpl **device) = 0; + + virtual egl::Error waitClient() const = 0; + virtual egl::Error waitNative(EGLint engine, + egl::Surface *drawSurface, + egl::Surface *readSurface) const = 0; + virtual gl::Version getMaxSupportedESVersion() const = 0; + const egl::Caps &getCaps() const; + + typedef std::set<egl::Surface*> SurfaceSet; + const SurfaceSet &getSurfaceSet() const { return mSurfaceSet; } + SurfaceSet &getSurfaceSet() { return mSurfaceSet; } + + void destroySurface(egl::Surface *surface); + + const egl::DisplayExtensions &getExtensions() const; + + protected: + // Place the surface set here so it can be accessible for handling + // context loss events. (It is shared between the Display and Impl.) + SurfaceSet mSurfaceSet; + + private: + virtual void generateExtensions(egl::DisplayExtensions *outExtensions) const = 0; + virtual void generateCaps(egl::Caps *outCaps) const = 0; + + mutable bool mExtensionsInitialized; + mutable egl::DisplayExtensions mExtensions; + + mutable bool mCapsInitialized; + mutable egl::Caps mCaps; +}; + +} + +#endif // LIBANGLE_RENDERER_DISPLAYIMPL_H_ |