зеркало из https://github.com/AvaloniaUI/angle.git
Add a shared egl::SurfaceState struct.
This structure can share GL-level properties (immutably) with the implementation. BUG=angleproject:1369 Change-Id: I1e9406f18b6b88bb7db2a8f87b5e6d547cc7ecb1 Reviewed-on: https://chromium-review.googlesource.com/342061 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
This commit is contained in:
Родитель
0f2b156093
Коммит
62baf0cf6f
|
@ -10,7 +10,6 @@
|
|||
|
||||
#include "libANGLE/Surface.h"
|
||||
|
||||
|
||||
#include <EGL/eglext.h>
|
||||
|
||||
#include <iostream>
|
||||
|
@ -23,13 +22,13 @@
|
|||
namespace egl
|
||||
{
|
||||
|
||||
Surface::Surface(rx::SurfaceImpl *impl,
|
||||
EGLint surfaceType,
|
||||
const egl::Config *config,
|
||||
const AttributeMap &attributes)
|
||||
SurfaceState::SurfaceState() : defaultFramebuffer(nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
Surface::Surface(EGLint surfaceType, const egl::Config *config, const AttributeMap &attributes)
|
||||
: FramebufferAttachmentObject(),
|
||||
mImplementation(impl),
|
||||
mDefaultFramebuffer(nullptr),
|
||||
mImplementation(nullptr),
|
||||
mCurrentCount(0),
|
||||
mDestroyed(false),
|
||||
mType(surfaceType),
|
||||
|
@ -43,7 +42,7 @@ Surface::Surface(rx::SurfaceImpl *impl,
|
|||
// FIXME: Determine actual pixel aspect ratio
|
||||
mPixelAspectRatio(static_cast<EGLint>(1.0 * EGL_DISPLAY_SCALING)),
|
||||
mRenderBuffer(EGL_BACK_BUFFER),
|
||||
mSwapBehavior(impl->getSwapBehavior()),
|
||||
mSwapBehavior(EGL_NONE),
|
||||
mOrientation(0),
|
||||
mTexture()
|
||||
{
|
||||
|
@ -81,17 +80,20 @@ Surface::~Surface()
|
|||
mTexture.set(nullptr);
|
||||
}
|
||||
|
||||
SafeDelete(mDefaultFramebuffer);
|
||||
SafeDelete(mState.defaultFramebuffer);
|
||||
SafeDelete(mImplementation);
|
||||
}
|
||||
|
||||
Error Surface::initialize()
|
||||
{
|
||||
// Initialized here since impl is nullptr in the constructor.
|
||||
mSwapBehavior = mImplementation->getSwapBehavior();
|
||||
|
||||
ANGLE_TRY(mImplementation->initialize());
|
||||
|
||||
// Must happen after implementation initialize for OSX.
|
||||
mDefaultFramebuffer = createDefaultFramebuffer();
|
||||
ASSERT(mDefaultFramebuffer != nullptr);
|
||||
mState.defaultFramebuffer = createDefaultFramebuffer();
|
||||
ASSERT(mState.defaultFramebuffer != nullptr);
|
||||
|
||||
return Error(EGL_SUCCESS);
|
||||
}
|
||||
|
@ -273,11 +275,9 @@ WindowSurface::WindowSurface(rx::EGLImplFactory *implFactory,
|
|||
const egl::Config *config,
|
||||
EGLNativeWindowType window,
|
||||
const AttributeMap &attribs)
|
||||
: Surface(implFactory->createWindowSurface(config, window, attribs),
|
||||
EGL_WINDOW_BIT,
|
||||
config,
|
||||
attribs)
|
||||
: Surface(EGL_WINDOW_BIT, config, attribs)
|
||||
{
|
||||
mImplementation = implFactory->createWindowSurface(mState, config, window, attribs);
|
||||
}
|
||||
|
||||
WindowSurface::~WindowSurface()
|
||||
|
@ -287,19 +287,19 @@ WindowSurface::~WindowSurface()
|
|||
PbufferSurface::PbufferSurface(rx::EGLImplFactory *implFactory,
|
||||
const Config *config,
|
||||
const AttributeMap &attribs)
|
||||
: Surface(implFactory->createPbufferSurface(config, attribs), EGL_PBUFFER_BIT, config, attribs)
|
||||
: Surface(EGL_PBUFFER_BIT, config, attribs)
|
||||
{
|
||||
mImplementation = implFactory->createPbufferSurface(mState, config, attribs);
|
||||
}
|
||||
|
||||
PbufferSurface::PbufferSurface(rx::EGLImplFactory *implFactory,
|
||||
const Config *config,
|
||||
EGLClientBuffer shareHandle,
|
||||
const AttributeMap &attribs)
|
||||
: Surface(implFactory->createPbufferFromClientBuffer(config, shareHandle, attribs),
|
||||
EGL_PBUFFER_BIT,
|
||||
config,
|
||||
attribs)
|
||||
: Surface(EGL_PBUFFER_BIT, config, attribs)
|
||||
{
|
||||
mImplementation =
|
||||
implFactory->createPbufferFromClientBuffer(mState, config, shareHandle, attribs);
|
||||
}
|
||||
|
||||
PbufferSurface::~PbufferSurface()
|
||||
|
@ -310,11 +310,9 @@ PixmapSurface::PixmapSurface(rx::EGLImplFactory *implFactory,
|
|||
const Config *config,
|
||||
NativePixmapType nativePixmap,
|
||||
const AttributeMap &attribs)
|
||||
: Surface(implFactory->createPixmapSurface(config, nativePixmap, attribs),
|
||||
EGL_PIXMAP_BIT,
|
||||
config,
|
||||
attribs)
|
||||
: Surface(EGL_PIXMAP_BIT, config, attribs)
|
||||
{
|
||||
mImplementation = implFactory->createPixmapSurface(mState, config, nativePixmap, attribs);
|
||||
}
|
||||
|
||||
PixmapSurface::~PixmapSurface()
|
||||
|
|
|
@ -36,6 +36,13 @@ class AttributeMap;
|
|||
class Display;
|
||||
struct Config;
|
||||
|
||||
struct SurfaceState final : angle::NonCopyable
|
||||
{
|
||||
SurfaceState();
|
||||
|
||||
gl::Framebuffer *defaultFramebuffer;
|
||||
};
|
||||
|
||||
class Surface : public gl::FramebufferAttachmentObject
|
||||
{
|
||||
public:
|
||||
|
@ -70,7 +77,7 @@ class Surface : public gl::FramebufferAttachmentObject
|
|||
EGLenum getTextureTarget() const;
|
||||
|
||||
gl::Texture *getBoundTexture() const { return mTexture.get(); }
|
||||
gl::Framebuffer *getDefaultFramebuffer() { return mDefaultFramebuffer; }
|
||||
gl::Framebuffer *getDefaultFramebuffer() { return mState.defaultFramebuffer; }
|
||||
|
||||
EGLint isFixedSize() const;
|
||||
|
||||
|
@ -92,10 +99,7 @@ class Surface : public gl::FramebufferAttachmentObject
|
|||
bool directComposition() const { return mDirectComposition; }
|
||||
|
||||
protected:
|
||||
Surface(rx::SurfaceImpl *impl,
|
||||
EGLint surfaceType,
|
||||
const egl::Config *config,
|
||||
const AttributeMap &attributes);
|
||||
Surface(EGLint surfaceType, const egl::Config *config, const AttributeMap &attributes);
|
||||
rx::FramebufferAttachmentObjectImpl *getAttachmentImpl() const override { return mImplementation; }
|
||||
|
||||
gl::Framebuffer *createDefaultFramebuffer();
|
||||
|
@ -104,8 +108,8 @@ class Surface : public gl::FramebufferAttachmentObject
|
|||
friend class gl::Texture;
|
||||
void releaseTexImageFromTexture();
|
||||
|
||||
SurfaceState mState;
|
||||
rx::SurfaceImpl *mImplementation;
|
||||
gl::Framebuffer *mDefaultFramebuffer;
|
||||
int mCurrentCount;
|
||||
bool mDestroyed;
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ namespace
|
|||
class MockSurfaceImpl : public rx::SurfaceImpl
|
||||
{
|
||||
public:
|
||||
MockSurfaceImpl() : SurfaceImpl(mockState) {}
|
||||
virtual ~MockSurfaceImpl() { destroy(); }
|
||||
|
||||
MOCK_METHOD0(initialize, egl::Error());
|
||||
|
@ -42,6 +43,8 @@ class MockSurfaceImpl : public rx::SurfaceImpl
|
|||
MOCK_METHOD2(getAttachmentRenderTarget, gl::Error(const gl::FramebufferAttachment::Target &, rx::FramebufferAttachmentRenderTarget **));
|
||||
|
||||
MOCK_METHOD0(destroy, void());
|
||||
|
||||
egl::SurfaceState mockState;
|
||||
};
|
||||
|
||||
TEST(SurfaceTest, DestructionDeletesImpl)
|
||||
|
@ -49,8 +52,7 @@ TEST(SurfaceTest, DestructionDeletesImpl)
|
|||
NiceMock<MockEGLFactory> factory;
|
||||
|
||||
MockSurfaceImpl *impl = new MockSurfaceImpl;
|
||||
EXPECT_CALL(*impl, getSwapBehavior());
|
||||
EXPECT_CALL(factory, createWindowSurface(_, _, _)).WillOnce(Return(impl));
|
||||
EXPECT_CALL(factory, createWindowSurface(_, _, _, _)).WillOnce(Return(impl));
|
||||
|
||||
egl::Config config;
|
||||
egl::Surface *surface = new egl::WindowSurface(
|
||||
|
|
|
@ -17,6 +17,7 @@ namespace egl
|
|||
class AttributeMap;
|
||||
struct Config;
|
||||
class ImageSibling;
|
||||
struct SurfaceState;
|
||||
}
|
||||
|
||||
namespace gl
|
||||
|
@ -37,15 +38,19 @@ class EGLImplFactory : angle::NonCopyable
|
|||
EGLImplFactory() {}
|
||||
virtual ~EGLImplFactory() {}
|
||||
|
||||
virtual SurfaceImpl *createWindowSurface(const egl::Config *configuration,
|
||||
virtual SurfaceImpl *createWindowSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLNativeWindowType window,
|
||||
const egl::AttributeMap &attribs) = 0;
|
||||
virtual SurfaceImpl *createPbufferSurface(const egl::Config *configuration,
|
||||
virtual SurfaceImpl *createPbufferSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
const egl::AttributeMap &attribs) = 0;
|
||||
virtual SurfaceImpl *createPbufferFromClientBuffer(const egl::Config *configuration,
|
||||
virtual SurfaceImpl *createPbufferFromClientBuffer(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLClientBuffer shareHandle,
|
||||
const egl::AttributeMap &attribs) = 0;
|
||||
virtual SurfaceImpl *createPixmapSurface(const egl::Config *configuration,
|
||||
virtual SurfaceImpl *createPixmapSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
NativePixmapType nativePixmap,
|
||||
const egl::AttributeMap &attribs) = 0;
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
namespace rx
|
||||
{
|
||||
|
||||
SurfaceImpl::SurfaceImpl()
|
||||
SurfaceImpl::SurfaceImpl(const egl::SurfaceState &state) : mState(state)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@ namespace egl
|
|||
{
|
||||
class Display;
|
||||
struct Config;
|
||||
struct SurfaceState;
|
||||
}
|
||||
|
||||
namespace rx
|
||||
|
@ -31,7 +32,7 @@ class FramebufferImpl;
|
|||
class SurfaceImpl : public FramebufferAttachmentObjectImpl
|
||||
{
|
||||
public:
|
||||
SurfaceImpl();
|
||||
SurfaceImpl(const egl::SurfaceState &surfaceState);
|
||||
virtual ~SurfaceImpl();
|
||||
|
||||
virtual egl::Error initialize() = 0;
|
||||
|
@ -49,6 +50,9 @@ class SurfaceImpl : public FramebufferAttachmentObjectImpl
|
|||
|
||||
virtual EGLint isPostSubBufferSupported() const = 0;
|
||||
virtual EGLint getSwapBehavior() const = 0;
|
||||
|
||||
protected:
|
||||
const egl::SurfaceState &mState;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -162,31 +162,34 @@ DisplayD3D::DisplayD3D() : mRenderer(nullptr)
|
|||
{
|
||||
}
|
||||
|
||||
|
||||
SurfaceImpl *DisplayD3D::createWindowSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *DisplayD3D::createWindowSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLNativeWindowType window,
|
||||
const egl::AttributeMap &attribs)
|
||||
{
|
||||
ASSERT(mRenderer != nullptr);
|
||||
return new WindowSurfaceD3D(mRenderer, mDisplay, configuration, window, attribs);
|
||||
return new WindowSurfaceD3D(state, mRenderer, mDisplay, configuration, window, attribs);
|
||||
}
|
||||
|
||||
SurfaceImpl *DisplayD3D::createPbufferSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *DisplayD3D::createPbufferSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
const egl::AttributeMap &attribs)
|
||||
{
|
||||
ASSERT(mRenderer != nullptr);
|
||||
return new PbufferSurfaceD3D(mRenderer, mDisplay, configuration, nullptr, attribs);
|
||||
return new PbufferSurfaceD3D(state, mRenderer, mDisplay, configuration, nullptr, attribs);
|
||||
}
|
||||
|
||||
SurfaceImpl *DisplayD3D::createPbufferFromClientBuffer(const egl::Config *configuration,
|
||||
SurfaceImpl *DisplayD3D::createPbufferFromClientBuffer(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLClientBuffer shareHandle,
|
||||
const egl::AttributeMap &attribs)
|
||||
{
|
||||
ASSERT(mRenderer != nullptr);
|
||||
return new PbufferSurfaceD3D(mRenderer, mDisplay, configuration, shareHandle, attribs);
|
||||
return new PbufferSurfaceD3D(state, mRenderer, mDisplay, configuration, shareHandle, attribs);
|
||||
}
|
||||
|
||||
SurfaceImpl *DisplayD3D::createPixmapSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *DisplayD3D::createPixmapSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
NativePixmapType nativePixmap,
|
||||
const egl::AttributeMap &attribs)
|
||||
{
|
||||
|
|
|
@ -25,15 +25,19 @@ class DisplayD3D : public DisplayImpl
|
|||
virtual void terminate() override;
|
||||
|
||||
// Surface creation
|
||||
SurfaceImpl *createWindowSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *createWindowSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLNativeWindowType window,
|
||||
const egl::AttributeMap &attribs) override;
|
||||
SurfaceImpl *createPbufferSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *createPbufferSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
const egl::AttributeMap &attribs) override;
|
||||
SurfaceImpl *createPbufferFromClientBuffer(const egl::Config *configuration,
|
||||
SurfaceImpl *createPbufferFromClientBuffer(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLClientBuffer shareHandle,
|
||||
const egl::AttributeMap &attribs) override;
|
||||
SurfaceImpl *createPixmapSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *createPixmapSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
NativePixmapType nativePixmap,
|
||||
const egl::AttributeMap &attribs) override;
|
||||
|
||||
|
|
|
@ -21,13 +21,14 @@
|
|||
namespace rx
|
||||
{
|
||||
|
||||
SurfaceD3D::SurfaceD3D(RendererD3D *renderer,
|
||||
SurfaceD3D::SurfaceD3D(const egl::SurfaceState &state,
|
||||
RendererD3D *renderer,
|
||||
egl::Display *display,
|
||||
const egl::Config *config,
|
||||
EGLNativeWindowType window,
|
||||
EGLClientBuffer shareHandle,
|
||||
const egl::AttributeMap &attribs)
|
||||
: SurfaceImpl(),
|
||||
: SurfaceImpl(state),
|
||||
mRenderer(renderer),
|
||||
mDisplay(display),
|
||||
mFixedSize(window == nullptr || attribs.get(EGL_FIXED_SIZE_ANGLE, EGL_FALSE) == EGL_TRUE),
|
||||
|
@ -334,12 +335,13 @@ gl::Error SurfaceD3D::getAttachmentRenderTarget(const gl::FramebufferAttachment:
|
|||
return gl::Error(GL_NO_ERROR);
|
||||
}
|
||||
|
||||
WindowSurfaceD3D::WindowSurfaceD3D(RendererD3D *renderer,
|
||||
WindowSurfaceD3D::WindowSurfaceD3D(const egl::SurfaceState &state,
|
||||
RendererD3D *renderer,
|
||||
egl::Display *display,
|
||||
const egl::Config *config,
|
||||
EGLNativeWindowType window,
|
||||
const egl::AttributeMap &attribs)
|
||||
: SurfaceD3D(renderer, display, config, window, static_cast<EGLClientBuffer>(0), attribs)
|
||||
: SurfaceD3D(state, renderer, display, config, window, static_cast<EGLClientBuffer>(0), attribs)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -347,12 +349,14 @@ WindowSurfaceD3D::~WindowSurfaceD3D()
|
|||
{
|
||||
}
|
||||
|
||||
PbufferSurfaceD3D::PbufferSurfaceD3D(RendererD3D *renderer,
|
||||
PbufferSurfaceD3D::PbufferSurfaceD3D(const egl::SurfaceState &state,
|
||||
RendererD3D *renderer,
|
||||
egl::Display *display,
|
||||
const egl::Config *config,
|
||||
EGLClientBuffer shareHandle,
|
||||
const egl::AttributeMap &attribs)
|
||||
: SurfaceD3D(renderer,
|
||||
: SurfaceD3D(state,
|
||||
renderer,
|
||||
display,
|
||||
config,
|
||||
static_cast<EGLNativeWindowType>(0),
|
||||
|
|
|
@ -56,7 +56,8 @@ class SurfaceD3D : public SurfaceImpl
|
|||
FramebufferAttachmentRenderTarget **rtOut) override;
|
||||
|
||||
protected:
|
||||
SurfaceD3D(RendererD3D *renderer,
|
||||
SurfaceD3D(const egl::SurfaceState &state,
|
||||
RendererD3D *renderer,
|
||||
egl::Display *display,
|
||||
const egl::Config *config,
|
||||
EGLNativeWindowType window,
|
||||
|
@ -91,7 +92,8 @@ class SurfaceD3D : public SurfaceImpl
|
|||
class WindowSurfaceD3D : public SurfaceD3D
|
||||
{
|
||||
public:
|
||||
WindowSurfaceD3D(RendererD3D *renderer,
|
||||
WindowSurfaceD3D(const egl::SurfaceState &state,
|
||||
RendererD3D *renderer,
|
||||
egl::Display *display,
|
||||
const egl::Config *config,
|
||||
EGLNativeWindowType window,
|
||||
|
@ -102,7 +104,8 @@ class WindowSurfaceD3D : public SurfaceD3D
|
|||
class PbufferSurfaceD3D : public SurfaceD3D
|
||||
{
|
||||
public:
|
||||
PbufferSurfaceD3D(RendererD3D *renderer,
|
||||
PbufferSurfaceD3D(const egl::SurfaceState &state,
|
||||
RendererD3D *renderer,
|
||||
egl::Display *display,
|
||||
const egl::Config *config,
|
||||
EGLClientBuffer shareHandle,
|
||||
|
|
|
@ -14,7 +14,8 @@
|
|||
namespace rx
|
||||
{
|
||||
|
||||
SurfaceGL::SurfaceGL(RendererGL *renderer) : SurfaceImpl(), mRenderer(renderer)
|
||||
SurfaceGL::SurfaceGL(const egl::SurfaceState &state, RendererGL *renderer)
|
||||
: SurfaceImpl(state), mRenderer(renderer)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ class RendererGL;
|
|||
class SurfaceGL : public SurfaceImpl
|
||||
{
|
||||
public:
|
||||
SurfaceGL(RendererGL *renderer);
|
||||
SurfaceGL(const egl::SurfaceState &state, RendererGL *renderer);
|
||||
~SurfaceGL() override;
|
||||
|
||||
gl::Error getAttachmentRenderTarget(const gl::FramebufferAttachment::Target &target,
|
||||
|
|
|
@ -26,15 +26,19 @@ class DisplayCGL : public DisplayGL
|
|||
egl::Error initialize(egl::Display *display) override;
|
||||
void terminate() override;
|
||||
|
||||
SurfaceImpl *createWindowSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *createWindowSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLNativeWindowType window,
|
||||
const egl::AttributeMap &attribs) override;
|
||||
SurfaceImpl *createPbufferSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *createPbufferSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
const egl::AttributeMap &attribs) override;
|
||||
SurfaceImpl *createPbufferFromClientBuffer(const egl::Config *configuration,
|
||||
SurfaceImpl *createPbufferFromClientBuffer(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLClientBuffer shareHandle,
|
||||
const egl::AttributeMap &attribs) override;
|
||||
SurfaceImpl *createPixmapSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *createPixmapSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
NativePixmapType nativePixmap,
|
||||
const egl::AttributeMap &attribs) override;
|
||||
|
||||
|
|
|
@ -109,22 +109,25 @@ void DisplayCGL::terminate()
|
|||
SafeDelete(mFunctions);
|
||||
}
|
||||
|
||||
SurfaceImpl *DisplayCGL::createWindowSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *DisplayCGL::createWindowSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLNativeWindowType window,
|
||||
const egl::AttributeMap &attribs)
|
||||
{
|
||||
return new WindowSurfaceCGL(this->getRenderer(), window, mFunctions, mContext);
|
||||
return new WindowSurfaceCGL(state, this->getRenderer(), window, mFunctions, mContext);
|
||||
}
|
||||
|
||||
SurfaceImpl *DisplayCGL::createPbufferSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *DisplayCGL::createPbufferSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
const egl::AttributeMap &attribs)
|
||||
{
|
||||
EGLint width = static_cast<EGLint>(attribs.get(EGL_WIDTH, 0));
|
||||
EGLint height = static_cast<EGLint>(attribs.get(EGL_HEIGHT, 0));
|
||||
return new PbufferSurfaceCGL(this->getRenderer(), width, height, mFunctions);
|
||||
return new PbufferSurfaceCGL(state, this->getRenderer(), width, height, mFunctions);
|
||||
}
|
||||
|
||||
SurfaceImpl* DisplayCGL::createPbufferFromClientBuffer(const egl::Config *configuration,
|
||||
SurfaceImpl *DisplayCGL::createPbufferFromClientBuffer(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLClientBuffer shareHandle,
|
||||
const egl::AttributeMap &attribs)
|
||||
{
|
||||
|
@ -132,7 +135,8 @@ SurfaceImpl* DisplayCGL::createPbufferFromClientBuffer(const egl::Config *config
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
SurfaceImpl *DisplayCGL::createPixmapSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *DisplayCGL::createPixmapSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
NativePixmapType nativePixmap,
|
||||
const egl::AttributeMap &attribs)
|
||||
{
|
||||
|
|
|
@ -22,7 +22,8 @@ struct WorkaroundsGL;
|
|||
class PbufferSurfaceCGL : public SurfaceGL
|
||||
{
|
||||
public:
|
||||
PbufferSurfaceCGL(RendererGL *renderer,
|
||||
PbufferSurfaceCGL(const egl::SurfaceState &state,
|
||||
RendererGL *renderer,
|
||||
EGLint width,
|
||||
EGLint height,
|
||||
const FunctionsGL *functions);
|
||||
|
|
|
@ -18,11 +18,12 @@
|
|||
namespace rx
|
||||
{
|
||||
|
||||
PbufferSurfaceCGL::PbufferSurfaceCGL(RendererGL *renderer,
|
||||
PbufferSurfaceCGL::PbufferSurfaceCGL(const egl::SurfaceState &state,
|
||||
RendererGL *renderer,
|
||||
EGLint width,
|
||||
EGLint height,
|
||||
const FunctionsGL *functions)
|
||||
: SurfaceGL(renderer),
|
||||
: SurfaceGL(state, renderer),
|
||||
mWidth(width),
|
||||
mHeight(height),
|
||||
mFunctions(functions),
|
||||
|
|
|
@ -54,7 +54,8 @@ struct SharedSwapState
|
|||
class WindowSurfaceCGL : public SurfaceGL
|
||||
{
|
||||
public:
|
||||
WindowSurfaceCGL(RendererGL *renderer,
|
||||
WindowSurfaceCGL(const egl::SurfaceState &state,
|
||||
RendererGL *renderer,
|
||||
CALayer *layer,
|
||||
const FunctionsGL *functions,
|
||||
CGLContextObj context);
|
||||
|
|
|
@ -142,11 +142,12 @@
|
|||
namespace rx
|
||||
{
|
||||
|
||||
WindowSurfaceCGL::WindowSurfaceCGL(RendererGL *renderer,
|
||||
WindowSurfaceCGL::WindowSurfaceCGL(const egl::SurfaceState &state,
|
||||
RendererGL *renderer,
|
||||
CALayer *layer,
|
||||
const FunctionsGL *functions,
|
||||
CGLContextObj context)
|
||||
: SurfaceGL(renderer),
|
||||
: SurfaceGL(state, renderer),
|
||||
mSwapLayer(nil),
|
||||
mCurrentSwapId(0),
|
||||
mLayer(layer),
|
||||
|
|
|
@ -830,7 +830,8 @@ void DisplayOzone::terminate()
|
|||
close(fd);
|
||||
}
|
||||
|
||||
SurfaceImpl *DisplayOzone::createWindowSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *DisplayOzone::createWindowSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLNativeWindowType window,
|
||||
const egl::AttributeMap &attribs)
|
||||
{
|
||||
|
@ -840,10 +841,11 @@ SurfaceImpl *DisplayOzone::createWindowSurface(const egl::Config *configuration,
|
|||
{
|
||||
return nullptr;
|
||||
}
|
||||
return new SurfaceOzone(getRenderer(), buffer);
|
||||
return new SurfaceOzone(state, getRenderer(), buffer);
|
||||
}
|
||||
|
||||
SurfaceImpl *DisplayOzone::createPbufferSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *DisplayOzone::createPbufferSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
const egl::AttributeMap &attribs)
|
||||
{
|
||||
EGLAttrib width = attribs.get(EGL_WIDTH, 0);
|
||||
|
@ -854,10 +856,11 @@ SurfaceImpl *DisplayOzone::createPbufferSurface(const egl::Config *configuration
|
|||
{
|
||||
return nullptr;
|
||||
}
|
||||
return new SurfaceOzone(getRenderer(), buffer);
|
||||
return new SurfaceOzone(state, getRenderer(), buffer);
|
||||
}
|
||||
|
||||
SurfaceImpl *DisplayOzone::createPbufferFromClientBuffer(const egl::Config *configuration,
|
||||
SurfaceImpl *DisplayOzone::createPbufferFromClientBuffer(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLClientBuffer shareHandle,
|
||||
const egl::AttributeMap &attribs)
|
||||
{
|
||||
|
@ -865,7 +868,8 @@ SurfaceImpl *DisplayOzone::createPbufferFromClientBuffer(const egl::Config *conf
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
SurfaceImpl *DisplayOzone::createPixmapSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *DisplayOzone::createPixmapSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
NativePixmapType nativePixmap,
|
||||
const egl::AttributeMap &attribs)
|
||||
{
|
||||
|
|
|
@ -109,15 +109,19 @@ class DisplayOzone final : public DisplayGL
|
|||
egl::Error initialize(egl::Display *display) override;
|
||||
void terminate() override;
|
||||
|
||||
SurfaceImpl *createWindowSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *createWindowSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLNativeWindowType window,
|
||||
const egl::AttributeMap &attribs) override;
|
||||
SurfaceImpl *createPbufferSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *createPbufferSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
const egl::AttributeMap &attribs) override;
|
||||
SurfaceImpl *createPbufferFromClientBuffer(const egl::Config *configuration,
|
||||
SurfaceImpl *createPbufferFromClientBuffer(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLClientBuffer shareHandle,
|
||||
const egl::AttributeMap &attribs) override;
|
||||
SurfaceImpl *createPixmapSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *createPixmapSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
NativePixmapType nativePixmap,
|
||||
const egl::AttributeMap &attribs) override;
|
||||
|
||||
|
|
|
@ -14,8 +14,10 @@
|
|||
namespace rx
|
||||
{
|
||||
|
||||
SurfaceOzone::SurfaceOzone(RendererGL *renderer, DisplayOzone::Buffer *buffer)
|
||||
: SurfaceGL(renderer), mBuffer(buffer)
|
||||
SurfaceOzone::SurfaceOzone(const egl::SurfaceState &state,
|
||||
RendererGL *renderer,
|
||||
DisplayOzone::Buffer *buffer)
|
||||
: SurfaceGL(state, renderer), mBuffer(buffer)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -18,7 +18,9 @@ namespace rx
|
|||
class SurfaceOzone : public SurfaceGL
|
||||
{
|
||||
public:
|
||||
SurfaceOzone(RendererGL *renderer, DisplayOzone::Buffer *buffer);
|
||||
SurfaceOzone(const egl::SurfaceState &state,
|
||||
RendererGL *renderer,
|
||||
DisplayOzone::Buffer *buffer);
|
||||
~SurfaceOzone() override;
|
||||
|
||||
FramebufferImpl *createDefaultFramebuffer(const gl::FramebufferState &state) override;
|
||||
|
|
|
@ -382,18 +382,20 @@ void DisplayGLX::terminate()
|
|||
SafeDelete(mFunctionsGL);
|
||||
}
|
||||
|
||||
SurfaceImpl *DisplayGLX::createWindowSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *DisplayGLX::createWindowSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLNativeWindowType window,
|
||||
const egl::AttributeMap &attribs)
|
||||
{
|
||||
ASSERT(configIdToGLXConfig.count(configuration->configID) > 0);
|
||||
glx::FBConfig fbConfig = configIdToGLXConfig[configuration->configID];
|
||||
|
||||
return new WindowSurfaceGLX(mGLX, this, this->getRenderer(), window, mGLX.getDisplay(),
|
||||
return new WindowSurfaceGLX(state, mGLX, this, this->getRenderer(), window, mGLX.getDisplay(),
|
||||
mContext, fbConfig);
|
||||
}
|
||||
|
||||
SurfaceImpl *DisplayGLX::createPbufferSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *DisplayGLX::createPbufferSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
const egl::AttributeMap &attribs)
|
||||
{
|
||||
ASSERT(configIdToGLXConfig.count(configuration->configID) > 0);
|
||||
|
@ -403,11 +405,12 @@ SurfaceImpl *DisplayGLX::createPbufferSurface(const egl::Config *configuration,
|
|||
EGLint height = static_cast<EGLint>(attribs.get(EGL_HEIGHT, 0));
|
||||
bool largest = (attribs.get(EGL_LARGEST_PBUFFER, EGL_FALSE) == EGL_TRUE);
|
||||
|
||||
return new PbufferSurfaceGLX(this->getRenderer(), width, height, largest, mGLX, mContext,
|
||||
return new PbufferSurfaceGLX(state, this->getRenderer(), width, height, largest, mGLX, mContext,
|
||||
fbConfig);
|
||||
}
|
||||
|
||||
SurfaceImpl* DisplayGLX::createPbufferFromClientBuffer(const egl::Config *configuration,
|
||||
SurfaceImpl *DisplayGLX::createPbufferFromClientBuffer(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLClientBuffer shareHandle,
|
||||
const egl::AttributeMap &attribs)
|
||||
{
|
||||
|
@ -415,7 +418,8 @@ SurfaceImpl* DisplayGLX::createPbufferFromClientBuffer(const egl::Config *config
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
SurfaceImpl *DisplayGLX::createPixmapSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *DisplayGLX::createPixmapSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
NativePixmapType nativePixmap,
|
||||
const egl::AttributeMap &attribs)
|
||||
{
|
||||
|
|
|
@ -43,15 +43,19 @@ class DisplayGLX : public DisplayGL
|
|||
egl::Error initialize(egl::Display *display) override;
|
||||
void terminate() override;
|
||||
|
||||
SurfaceImpl *createWindowSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *createWindowSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLNativeWindowType window,
|
||||
const egl::AttributeMap &attribs) override;
|
||||
SurfaceImpl *createPbufferSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *createPbufferSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
const egl::AttributeMap &attribs) override;
|
||||
SurfaceImpl *createPbufferFromClientBuffer(const egl::Config *configuration,
|
||||
SurfaceImpl *createPbufferFromClientBuffer(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLClientBuffer shareHandle,
|
||||
const egl::AttributeMap &attribs) override;
|
||||
SurfaceImpl *createPixmapSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *createPixmapSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
NativePixmapType nativePixmap,
|
||||
const egl::AttributeMap &attribs) override;
|
||||
|
||||
|
|
|
@ -15,14 +15,15 @@
|
|||
namespace rx
|
||||
{
|
||||
|
||||
PbufferSurfaceGLX::PbufferSurfaceGLX(RendererGL *renderer,
|
||||
PbufferSurfaceGLX::PbufferSurfaceGLX(const egl::SurfaceState &state,
|
||||
RendererGL *renderer,
|
||||
EGLint width,
|
||||
EGLint height,
|
||||
bool largest,
|
||||
const FunctionsGLX &glx,
|
||||
glx::Context context,
|
||||
glx::FBConfig fbConfig)
|
||||
: SurfaceGLX(renderer),
|
||||
: SurfaceGLX(state, renderer),
|
||||
mWidth(width),
|
||||
mHeight(height),
|
||||
mLargest(largest),
|
||||
|
|
|
@ -20,7 +20,8 @@ class FunctionsGLX;
|
|||
class PbufferSurfaceGLX : public SurfaceGLX
|
||||
{
|
||||
public:
|
||||
PbufferSurfaceGLX(RendererGL *renderer,
|
||||
PbufferSurfaceGLX(const egl::SurfaceState &state,
|
||||
RendererGL *renderer,
|
||||
EGLint width,
|
||||
EGLint height,
|
||||
bool largest,
|
||||
|
|
|
@ -17,7 +17,7 @@ namespace rx
|
|||
class SurfaceGLX : public SurfaceGL
|
||||
{
|
||||
public:
|
||||
SurfaceGLX(RendererGL *renderer) : SurfaceGL(renderer) {}
|
||||
SurfaceGLX(const egl::SurfaceState &state, RendererGL *renderer) : SurfaceGL(state, renderer) {}
|
||||
|
||||
virtual egl::Error checkForResize() = 0;
|
||||
};
|
||||
|
|
|
@ -21,14 +21,15 @@ static int IgnoreX11Errors(Display *, XErrorEvent *)
|
|||
return 0;
|
||||
}
|
||||
|
||||
WindowSurfaceGLX::WindowSurfaceGLX(const FunctionsGLX &glx,
|
||||
WindowSurfaceGLX::WindowSurfaceGLX(const egl::SurfaceState &state,
|
||||
const FunctionsGLX &glx,
|
||||
DisplayGLX *glxDisplay,
|
||||
RendererGL *renderer,
|
||||
Window window,
|
||||
Display *display,
|
||||
glx::Context context,
|
||||
glx::FBConfig fbConfig)
|
||||
: SurfaceGLX(renderer),
|
||||
: SurfaceGLX(state, renderer),
|
||||
mParent(window),
|
||||
mWindow(0),
|
||||
mDisplay(display),
|
||||
|
|
|
@ -22,7 +22,8 @@ class FunctionsGLX;
|
|||
class WindowSurfaceGLX : public SurfaceGLX
|
||||
{
|
||||
public:
|
||||
WindowSurfaceGLX(const FunctionsGLX &glx,
|
||||
WindowSurfaceGLX(const egl::SurfaceState &state,
|
||||
const FunctionsGLX &glx,
|
||||
DisplayGLX *glxDisplay,
|
||||
RendererGL *renderer,
|
||||
Window window,
|
||||
|
|
|
@ -22,7 +22,8 @@
|
|||
namespace rx
|
||||
{
|
||||
|
||||
DXGISwapChainWindowSurfaceWGL::DXGISwapChainWindowSurfaceWGL(RendererGL *renderer,
|
||||
DXGISwapChainWindowSurfaceWGL::DXGISwapChainWindowSurfaceWGL(const egl::SurfaceState &state,
|
||||
RendererGL *renderer,
|
||||
EGLNativeWindowType window,
|
||||
ID3D11Device *device,
|
||||
HANDLE deviceHandle,
|
||||
|
@ -31,7 +32,7 @@ DXGISwapChainWindowSurfaceWGL::DXGISwapChainWindowSurfaceWGL(RendererGL *rendere
|
|||
const FunctionsGL *functionsGL,
|
||||
const FunctionsWGL *functionsWGL,
|
||||
EGLint orientation)
|
||||
: SurfaceGL(renderer),
|
||||
: SurfaceGL(state, renderer),
|
||||
mWindow(window),
|
||||
mStateManager(renderer->getStateManager()),
|
||||
mWorkarounds(renderer->getWorkarounds()),
|
||||
|
|
|
@ -26,7 +26,8 @@ struct WorkaroundsGL;
|
|||
class DXGISwapChainWindowSurfaceWGL : public SurfaceGL
|
||||
{
|
||||
public:
|
||||
DXGISwapChainWindowSurfaceWGL(RendererGL *renderer,
|
||||
DXGISwapChainWindowSurfaceWGL(const egl::SurfaceState &state,
|
||||
RendererGL *renderer,
|
||||
EGLNativeWindowType window,
|
||||
ID3D11Device *device,
|
||||
HANDLE deviceHandle,
|
||||
|
|
|
@ -408,25 +408,27 @@ void DisplayWGL::terminate()
|
|||
ASSERT(mRegisteredD3DDevices.empty());
|
||||
}
|
||||
|
||||
SurfaceImpl *DisplayWGL::createWindowSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *DisplayWGL::createWindowSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLNativeWindowType window,
|
||||
const egl::AttributeMap &attribs)
|
||||
{
|
||||
EGLint orientation = static_cast<EGLint>(attribs.get(EGL_SURFACE_ORIENTATION_ANGLE, 0));
|
||||
if (mUseDXGISwapChains)
|
||||
{
|
||||
return new DXGISwapChainWindowSurfaceWGL(this->getRenderer(), window, mD3D11Device,
|
||||
return new DXGISwapChainWindowSurfaceWGL(state, this->getRenderer(), window, mD3D11Device,
|
||||
mD3D11DeviceHandle, mWGLContext, mDeviceContext,
|
||||
mFunctionsGL, mFunctionsWGL, orientation);
|
||||
}
|
||||
else
|
||||
{
|
||||
return new WindowSurfaceWGL(this->getRenderer(), window, mPixelFormat, mWGLContext,
|
||||
return new WindowSurfaceWGL(state, this->getRenderer(), window, mPixelFormat, mWGLContext,
|
||||
mFunctionsWGL, orientation);
|
||||
}
|
||||
}
|
||||
|
||||
SurfaceImpl *DisplayWGL::createPbufferSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *DisplayWGL::createPbufferSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
const egl::AttributeMap &attribs)
|
||||
{
|
||||
EGLint width = static_cast<EGLint>(attribs.get(EGL_WIDTH, 0));
|
||||
|
@ -435,11 +437,13 @@ SurfaceImpl *DisplayWGL::createPbufferSurface(const egl::Config *configuration,
|
|||
EGLenum textureFormat = static_cast<EGLenum>(attribs.get(EGL_TEXTURE_FORMAT, EGL_NO_TEXTURE));
|
||||
EGLenum textureTarget = static_cast<EGLenum>(attribs.get(EGL_TEXTURE_TARGET, EGL_NO_TEXTURE));
|
||||
|
||||
return new PbufferSurfaceWGL(this->getRenderer(), width, height, textureFormat, textureTarget,
|
||||
largest, mPixelFormat, mDeviceContext, mWGLContext, mFunctionsWGL);
|
||||
return new PbufferSurfaceWGL(state, this->getRenderer(), width, height, textureFormat,
|
||||
textureTarget, largest, mPixelFormat, mDeviceContext, mWGLContext,
|
||||
mFunctionsWGL);
|
||||
}
|
||||
|
||||
SurfaceImpl *DisplayWGL::createPbufferFromClientBuffer(const egl::Config *configuration,
|
||||
SurfaceImpl *DisplayWGL::createPbufferFromClientBuffer(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLClientBuffer shareHandle,
|
||||
const egl::AttributeMap &attribs)
|
||||
{
|
||||
|
@ -447,7 +451,8 @@ SurfaceImpl *DisplayWGL::createPbufferFromClientBuffer(const egl::Config *config
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
SurfaceImpl *DisplayWGL::createPixmapSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *DisplayWGL::createPixmapSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
NativePixmapType nativePixmap,
|
||||
const egl::AttributeMap &attribs)
|
||||
{
|
||||
|
|
|
@ -28,15 +28,19 @@ class DisplayWGL : public DisplayGL
|
|||
void terminate() override;
|
||||
|
||||
// Surface creation
|
||||
SurfaceImpl *createWindowSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *createWindowSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLNativeWindowType window,
|
||||
const egl::AttributeMap &attribs) override;
|
||||
SurfaceImpl *createPbufferSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *createPbufferSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
const egl::AttributeMap &attribs) override;
|
||||
SurfaceImpl *createPbufferFromClientBuffer(const egl::Config *configuration,
|
||||
SurfaceImpl *createPbufferFromClientBuffer(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
EGLClientBuffer shareHandle,
|
||||
const egl::AttributeMap &attribs) override;
|
||||
SurfaceImpl *createPixmapSurface(const egl::Config *configuration,
|
||||
SurfaceImpl *createPixmapSurface(const egl::SurfaceState &state,
|
||||
const egl::Config *configuration,
|
||||
NativePixmapType nativePixmap,
|
||||
const egl::AttributeMap &attribs) override;
|
||||
|
||||
|
|
|
@ -16,7 +16,8 @@
|
|||
namespace rx
|
||||
{
|
||||
|
||||
PbufferSurfaceWGL::PbufferSurfaceWGL(RendererGL *renderer,
|
||||
PbufferSurfaceWGL::PbufferSurfaceWGL(const egl::SurfaceState &state,
|
||||
RendererGL *renderer,
|
||||
EGLint width,
|
||||
EGLint height,
|
||||
EGLenum textureFormat,
|
||||
|
@ -26,7 +27,7 @@ PbufferSurfaceWGL::PbufferSurfaceWGL(RendererGL *renderer,
|
|||
HDC deviceContext,
|
||||
HGLRC wglContext,
|
||||
const FunctionsWGL *functions)
|
||||
: SurfaceGL(renderer),
|
||||
: SurfaceGL(state, renderer),
|
||||
mWidth(width),
|
||||
mHeight(height),
|
||||
mLargest(largest),
|
||||
|
|
|
@ -21,7 +21,8 @@ class FunctionsWGL;
|
|||
class PbufferSurfaceWGL : public SurfaceGL
|
||||
{
|
||||
public:
|
||||
PbufferSurfaceWGL(RendererGL *renderer,
|
||||
PbufferSurfaceWGL(const egl::SurfaceState &state,
|
||||
RendererGL *renderer,
|
||||
EGLint width,
|
||||
EGLint height,
|
||||
EGLenum textureFormat,
|
||||
|
|
|
@ -16,13 +16,14 @@
|
|||
namespace rx
|
||||
{
|
||||
|
||||
WindowSurfaceWGL::WindowSurfaceWGL(RendererGL *renderer,
|
||||
WindowSurfaceWGL::WindowSurfaceWGL(const egl::SurfaceState &state,
|
||||
RendererGL *renderer,
|
||||
EGLNativeWindowType window,
|
||||
int pixelFormat,
|
||||
HGLRC wglContext,
|
||||
const FunctionsWGL *functions,
|
||||
EGLint orientation)
|
||||
: SurfaceGL(renderer),
|
||||
: SurfaceGL(state, renderer),
|
||||
mPixelFormat(pixelFormat),
|
||||
mWGLContext(wglContext),
|
||||
mWindow(window),
|
||||
|
|
|
@ -21,7 +21,8 @@ class FunctionsWGL;
|
|||
class WindowSurfaceWGL : public SurfaceGL
|
||||
{
|
||||
public:
|
||||
WindowSurfaceWGL(RendererGL *renderer,
|
||||
WindowSurfaceWGL(const egl::SurfaceState &state,
|
||||
RendererGL *renderer,
|
||||
EGLNativeWindowType window,
|
||||
int pixelFormat,
|
||||
HGLRC wglContext,
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#ifndef TESTS_ANGLE_UNITTESTS_UTILS_H_
|
||||
#define TESTS_ANGLE_UNITTESTS_UTILS_H_
|
||||
|
||||
#include "libANGLE/Surface.h"
|
||||
#include "libANGLE/renderer/ContextImpl.h"
|
||||
#include "libANGLE/renderer/EGLImplFactory.h"
|
||||
#include "libANGLE/renderer/GLImplFactory.h"
|
||||
|
@ -83,16 +84,25 @@ class MockGLFactory : public GLImplFactory
|
|||
class MockEGLFactory : public EGLImplFactory
|
||||
{
|
||||
public:
|
||||
MOCK_METHOD3(createWindowSurface,
|
||||
SurfaceImpl *(const egl::Config *,
|
||||
MOCK_METHOD4(createWindowSurface,
|
||||
SurfaceImpl *(const egl::SurfaceState &,
|
||||
const egl::Config *,
|
||||
EGLNativeWindowType,
|
||||
const egl::AttributeMap &));
|
||||
MOCK_METHOD2(createPbufferSurface,
|
||||
SurfaceImpl *(const egl::Config *, const egl::AttributeMap &));
|
||||
MOCK_METHOD3(createPbufferFromClientBuffer,
|
||||
SurfaceImpl *(const egl::Config *, EGLClientBuffer, const egl::AttributeMap &));
|
||||
MOCK_METHOD3(createPixmapSurface,
|
||||
SurfaceImpl *(const egl::Config *, NativePixmapType, const egl::AttributeMap &));
|
||||
MOCK_METHOD3(createPbufferSurface,
|
||||
SurfaceImpl *(const egl::SurfaceState &,
|
||||
const egl::Config *,
|
||||
const egl::AttributeMap &));
|
||||
MOCK_METHOD4(createPbufferFromClientBuffer,
|
||||
SurfaceImpl *(const egl::SurfaceState &,
|
||||
const egl::Config *,
|
||||
EGLClientBuffer,
|
||||
const egl::AttributeMap &));
|
||||
MOCK_METHOD4(createPixmapSurface,
|
||||
SurfaceImpl *(const egl::SurfaceState &,
|
||||
const egl::Config *,
|
||||
NativePixmapType,
|
||||
const egl::AttributeMap &));
|
||||
MOCK_METHOD3(createImage, ImageImpl *(EGLenum, egl::ImageSibling *, const egl::AttributeMap &));
|
||||
MOCK_METHOD1(createContext, ContextImpl *(const gl::ContextState &));
|
||||
MOCK_METHOD2(createStreamProducerD3DTextureNV12,
|
||||
|
|
Загрузка…
Ссылка в новой задаче