зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1530471 - remove layers SkiaGL glue r=jrmuizel
Depends on D21054 Differential Revision: https://phabricator.services.mozilla.com/D21055 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
1ddc82c081
Коммит
7b51528692
|
@ -37,7 +37,6 @@ struct CanvasInitializeData {
|
|||
mPreTransCallbackData(nullptr),
|
||||
mDidTransCallback(nullptr),
|
||||
mDidTransCallbackData(nullptr),
|
||||
mFrontbufferGLTex(0),
|
||||
mSize(0, 0),
|
||||
mHasAlpha(false),
|
||||
mIsGLAlphaPremult(true) {}
|
||||
|
@ -54,9 +53,6 @@ struct CanvasInitializeData {
|
|||
TransactionCallback mDidTransCallback;
|
||||
void* mDidTransCallbackData;
|
||||
|
||||
// Frontbuffer override
|
||||
uint32_t mFrontbufferGLTex;
|
||||
|
||||
// The size of the canvas content
|
||||
gfx::IntSize mSize;
|
||||
|
||||
|
|
|
@ -36,7 +36,6 @@ using namespace mozilla::gl;
|
|||
CopyableCanvasRenderer::CopyableCanvasRenderer()
|
||||
: mGLContext(nullptr),
|
||||
mBufferProvider(nullptr),
|
||||
mGLFrontbuffer(nullptr),
|
||||
mAsyncRenderer(nullptr),
|
||||
mIsAlphaPremultiplied(true),
|
||||
mOriginPos(gl::OriginPos::TopLeft),
|
||||
|
@ -60,12 +59,6 @@ void CopyableCanvasRenderer::Initialize(const CanvasInitializeData& aData) {
|
|||
|
||||
MOZ_ASSERT(mGLContext->IsOffscreen(), "canvas gl context isn't offscreen");
|
||||
|
||||
if (aData.mFrontbufferGLTex) {
|
||||
gfx::IntSize size(aData.mSize.width, aData.mSize.height);
|
||||
mGLFrontbuffer = SharedSurface_Basic::Wrap(
|
||||
aData.mGLContext, size, aData.mHasAlpha, aData.mFrontbufferGLTex);
|
||||
mBufferProvider = aData.mBufferProvider;
|
||||
}
|
||||
} else if (aData.mBufferProvider) {
|
||||
mBufferProvider = aData.mBufferProvider;
|
||||
} else if (aData.mRenderer) {
|
||||
|
@ -130,9 +123,7 @@ already_AddRefed<SourceSurface> CopyableCanvasRenderer::ReadbackSurface() {
|
|||
}
|
||||
|
||||
SharedSurface* frontbuffer = nullptr;
|
||||
if (mGLFrontbuffer) {
|
||||
frontbuffer = mGLFrontbuffer.get();
|
||||
} else if (mGLContext->Screen()) {
|
||||
if (mGLContext->Screen()) {
|
||||
const auto& front = mGLContext->Screen()->Front();
|
||||
if (front) {
|
||||
frontbuffer = front->Surf();
|
||||
|
|
|
@ -57,7 +57,6 @@ class CopyableCanvasRenderer : public CanvasRenderer {
|
|||
protected:
|
||||
RefPtr<gl::GLContext> mGLContext;
|
||||
RefPtr<PersistentBufferProvider> mBufferProvider;
|
||||
UniquePtr<gl::SharedSurface> mGLFrontbuffer;
|
||||
RefPtr<AsyncCanvasRenderer> mAsyncRenderer;
|
||||
|
||||
bool mIsAlphaPremultiplied;
|
||||
|
|
|
@ -41,16 +41,8 @@ void ShareableCanvasRenderer::Initialize(const CanvasInitializeData& aData) {
|
|||
if (!mGLContext) return;
|
||||
|
||||
gl::GLScreenBuffer* screen = mGLContext->Screen();
|
||||
|
||||
gl::SurfaceCaps caps;
|
||||
if (mGLFrontbuffer) {
|
||||
// The screen caps are irrelevant if we're using a separate frontbuffer.
|
||||
caps = mGLFrontbuffer->mHasAlpha ? gl::SurfaceCaps::ForRGBA()
|
||||
: gl::SurfaceCaps::ForRGB();
|
||||
} else {
|
||||
MOZ_ASSERT(screen);
|
||||
caps = screen->mCaps;
|
||||
}
|
||||
MOZ_ASSERT(screen);
|
||||
gl::SurfaceCaps caps = screen->mCaps;
|
||||
|
||||
auto forwarder = GetForwarder();
|
||||
|
||||
|
@ -61,17 +53,8 @@ void ShareableCanvasRenderer::Initialize(const CanvasInitializeData& aData) {
|
|||
|
||||
UniquePtr<gl::SurfaceFactory> factory =
|
||||
gl::GLScreenBuffer::CreateFactory(mGLContext, caps, forwarder, mFlags);
|
||||
|
||||
if (mGLFrontbuffer) {
|
||||
// We're using a source other than the one in the default screen.
|
||||
// (SkiaGL)
|
||||
mFactory = std::move(factory);
|
||||
if (!mFactory) {
|
||||
// Absolutely must have a factory here, so create a basic one
|
||||
mFactory = MakeUnique<gl::SurfaceFactory_Basic>(mGLContext, caps, mFlags);
|
||||
}
|
||||
} else {
|
||||
if (factory) screen->Morph(std::move(factory));
|
||||
if (factory) {
|
||||
screen->Morph(std::move(factory));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -122,14 +105,11 @@ bool ShareableCanvasRenderer::UpdateTarget(DrawTarget* aDestTarget) {
|
|||
}
|
||||
|
||||
gl::SharedSurface* frontbuffer = nullptr;
|
||||
if (mGLFrontbuffer) {
|
||||
frontbuffer = mGLFrontbuffer.get();
|
||||
} else {
|
||||
gl::GLScreenBuffer* screen = mGLContext->Screen();
|
||||
const auto& front = screen->Front();
|
||||
if (front) {
|
||||
frontbuffer = front->Surf();
|
||||
}
|
||||
|
||||
gl::GLScreenBuffer* screen = mGLContext->Screen();
|
||||
const auto& front = screen->Front();
|
||||
if (front) {
|
||||
frontbuffer = front->Surf();
|
||||
}
|
||||
|
||||
if (!frontbuffer) {
|
||||
|
|
|
@ -385,14 +385,7 @@ void CanvasClientSharedSurface::UpdateRenderer(gfx::IntSize aSize,
|
|||
RefPtr<TextureClient> newFront;
|
||||
|
||||
mShSurfClient = nullptr;
|
||||
if (canvasRenderer && canvasRenderer->mGLFrontbuffer) {
|
||||
mShSurfClient = CloneSurface(canvasRenderer->mGLFrontbuffer.get(),
|
||||
canvasRenderer->mFactory.get());
|
||||
if (!mShSurfClient) {
|
||||
gfxCriticalError() << "Invalid canvas front buffer";
|
||||
return;
|
||||
}
|
||||
} else if (gl->Screen()) {
|
||||
if (gl->Screen()) {
|
||||
mShSurfClient = gl->Screen()->Front();
|
||||
if (mShSurfClient && mShSurfClient->GetAllocator() &&
|
||||
mShSurfClient->GetAllocator() !=
|
||||
|
|
Загрузка…
Ссылка в новой задаче