summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/angle/src/libANGLE/renderer/DisplayImpl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/angle/src/libANGLE/renderer/DisplayImpl.h')
-rw-r--r--src/3rdparty/angle/src/libANGLE/renderer/DisplayImpl.h60
1 files changed, 19 insertions, 41 deletions
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/DisplayImpl.h b/src/3rdparty/angle/src/libANGLE/renderer/DisplayImpl.h
index 9e38f63370..b1c49d9bc8 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/DisplayImpl.h
+++ b/src/3rdparty/angle/src/libANGLE/renderer/DisplayImpl.h
@@ -13,7 +13,9 @@
#include "libANGLE/Caps.h"
#include "libANGLE/Config.h"
#include "libANGLE/Error.h"
-#include "libANGLE/renderer/Renderer.h"
+#include "libANGLE/renderer/EGLImplFactory.h"
+#include "libANGLE/Stream.h"
+#include "libANGLE/Version.h"
#include <set>
#include <vector>
@@ -22,9 +24,11 @@ namespace egl
{
class AttributeMap;
class Display;
+struct DisplayState;
struct Config;
class Surface;
class ImageSibling;
+class Thread;
}
namespace gl
@@ -38,69 +42,43 @@ class SurfaceImpl;
class ImageImpl;
struct ConfigDesc;
class DeviceImpl;
+class StreamProducerImpl;
-class DisplayImpl : angle::NonCopyable
+class DisplayImpl : public EGLImplFactory
{
public:
- DisplayImpl();
- virtual ~DisplayImpl();
+ DisplayImpl(const egl::DisplayState &state);
+ ~DisplayImpl() override;
virtual egl::Error initialize(egl::Display *display) = 0;
virtual void terminate() = 0;
- virtual SurfaceImpl *createWindowSurface(const egl::Config *configuration,
- EGLNativeWindowType window,
- const egl::AttributeMap &attribs) = 0;
- virtual SurfaceImpl *createPbufferSurface(const egl::Config *configuration,
- const egl::AttributeMap &attribs) = 0;
- virtual SurfaceImpl *createPbufferFromClientBuffer(const egl::Config *configuration,
- EGLClientBuffer shareHandle,
- const egl::AttributeMap &attribs) = 0;
- virtual SurfaceImpl *createPixmapSurface(const egl::Config *configuration,
- NativePixmapType nativePixmap,
- const egl::AttributeMap &attribs) = 0;
-
- virtual ImageImpl *createImage(EGLenum target,
- egl::ImageSibling *buffer,
- const egl::AttributeMap &attribs) = 0;
-
- virtual gl::Context *createContext(const egl::Config *config,
- const gl::Context *shareContext,
- const egl::AttributeMap &attribs) = 0;
-
virtual egl::Error makeCurrent(egl::Surface *drawSurface, egl::Surface *readSurface, gl::Context *context) = 0;
- virtual egl::ConfigSet generateConfigs() const = 0;
+ virtual egl::ConfigSet generateConfigs() = 0;
- virtual bool isDeviceLost() const = 0;
virtual bool testDeviceLost() = 0;
- virtual egl::Error restoreLostDevice() = 0;
+ virtual egl::Error restoreLostDevice(const egl::Display *display) = 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 egl::Error waitClient(const gl::Context *context) const = 0;
+ virtual egl::Error waitNative(const gl::Context *context, EGLint engine) 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;
+ const egl::DisplayState &mState;
private:
virtual void generateExtensions(egl::DisplayExtensions *outExtensions) const = 0;