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:
Lee Salzman 2019-02-28 15:00:06 +00:00
Родитель 1ddc82c081
Коммит 7b51528692
5 изменённых файлов: 11 добавлений и 52 удалений

Просмотреть файл

@ -37,7 +37,6 @@ struct CanvasInitializeData {
mPreTransCallbackData(nullptr), mPreTransCallbackData(nullptr),
mDidTransCallback(nullptr), mDidTransCallback(nullptr),
mDidTransCallbackData(nullptr), mDidTransCallbackData(nullptr),
mFrontbufferGLTex(0),
mSize(0, 0), mSize(0, 0),
mHasAlpha(false), mHasAlpha(false),
mIsGLAlphaPremult(true) {} mIsGLAlphaPremult(true) {}
@ -54,9 +53,6 @@ struct CanvasInitializeData {
TransactionCallback mDidTransCallback; TransactionCallback mDidTransCallback;
void* mDidTransCallbackData; void* mDidTransCallbackData;
// Frontbuffer override
uint32_t mFrontbufferGLTex;
// The size of the canvas content // The size of the canvas content
gfx::IntSize mSize; gfx::IntSize mSize;

Просмотреть файл

@ -36,7 +36,6 @@ using namespace mozilla::gl;
CopyableCanvasRenderer::CopyableCanvasRenderer() CopyableCanvasRenderer::CopyableCanvasRenderer()
: mGLContext(nullptr), : mGLContext(nullptr),
mBufferProvider(nullptr), mBufferProvider(nullptr),
mGLFrontbuffer(nullptr),
mAsyncRenderer(nullptr), mAsyncRenderer(nullptr),
mIsAlphaPremultiplied(true), mIsAlphaPremultiplied(true),
mOriginPos(gl::OriginPos::TopLeft), mOriginPos(gl::OriginPos::TopLeft),
@ -60,12 +59,6 @@ void CopyableCanvasRenderer::Initialize(const CanvasInitializeData& aData) {
MOZ_ASSERT(mGLContext->IsOffscreen(), "canvas gl context isn't offscreen"); 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) { } else if (aData.mBufferProvider) {
mBufferProvider = aData.mBufferProvider; mBufferProvider = aData.mBufferProvider;
} else if (aData.mRenderer) { } else if (aData.mRenderer) {
@ -130,9 +123,7 @@ already_AddRefed<SourceSurface> CopyableCanvasRenderer::ReadbackSurface() {
} }
SharedSurface* frontbuffer = nullptr; SharedSurface* frontbuffer = nullptr;
if (mGLFrontbuffer) { if (mGLContext->Screen()) {
frontbuffer = mGLFrontbuffer.get();
} else if (mGLContext->Screen()) {
const auto& front = mGLContext->Screen()->Front(); const auto& front = mGLContext->Screen()->Front();
if (front) { if (front) {
frontbuffer = front->Surf(); frontbuffer = front->Surf();

Просмотреть файл

@ -57,7 +57,6 @@ class CopyableCanvasRenderer : public CanvasRenderer {
protected: protected:
RefPtr<gl::GLContext> mGLContext; RefPtr<gl::GLContext> mGLContext;
RefPtr<PersistentBufferProvider> mBufferProvider; RefPtr<PersistentBufferProvider> mBufferProvider;
UniquePtr<gl::SharedSurface> mGLFrontbuffer;
RefPtr<AsyncCanvasRenderer> mAsyncRenderer; RefPtr<AsyncCanvasRenderer> mAsyncRenderer;
bool mIsAlphaPremultiplied; bool mIsAlphaPremultiplied;

Просмотреть файл

@ -41,16 +41,8 @@ void ShareableCanvasRenderer::Initialize(const CanvasInitializeData& aData) {
if (!mGLContext) return; if (!mGLContext) return;
gl::GLScreenBuffer* screen = mGLContext->Screen(); gl::GLScreenBuffer* screen = mGLContext->Screen();
MOZ_ASSERT(screen);
gl::SurfaceCaps caps; gl::SurfaceCaps caps = screen->mCaps;
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;
}
auto forwarder = GetForwarder(); auto forwarder = GetForwarder();
@ -61,17 +53,8 @@ void ShareableCanvasRenderer::Initialize(const CanvasInitializeData& aData) {
UniquePtr<gl::SurfaceFactory> factory = UniquePtr<gl::SurfaceFactory> factory =
gl::GLScreenBuffer::CreateFactory(mGLContext, caps, forwarder, mFlags); gl::GLScreenBuffer::CreateFactory(mGLContext, caps, forwarder, mFlags);
if (factory) {
if (mGLFrontbuffer) { screen->Morph(std::move(factory));
// 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));
} }
} }
@ -122,14 +105,11 @@ bool ShareableCanvasRenderer::UpdateTarget(DrawTarget* aDestTarget) {
} }
gl::SharedSurface* frontbuffer = nullptr; gl::SharedSurface* frontbuffer = nullptr;
if (mGLFrontbuffer) {
frontbuffer = mGLFrontbuffer.get(); gl::GLScreenBuffer* screen = mGLContext->Screen();
} else { const auto& front = screen->Front();
gl::GLScreenBuffer* screen = mGLContext->Screen(); if (front) {
const auto& front = screen->Front(); frontbuffer = front->Surf();
if (front) {
frontbuffer = front->Surf();
}
} }
if (!frontbuffer) { if (!frontbuffer) {

Просмотреть файл

@ -385,14 +385,7 @@ void CanvasClientSharedSurface::UpdateRenderer(gfx::IntSize aSize,
RefPtr<TextureClient> newFront; RefPtr<TextureClient> newFront;
mShSurfClient = nullptr; mShSurfClient = nullptr;
if (canvasRenderer && canvasRenderer->mGLFrontbuffer) { if (gl->Screen()) {
mShSurfClient = CloneSurface(canvasRenderer->mGLFrontbuffer.get(),
canvasRenderer->mFactory.get());
if (!mShSurfClient) {
gfxCriticalError() << "Invalid canvas front buffer";
return;
}
} else if (gl->Screen()) {
mShSurfClient = gl->Screen()->Front(); mShSurfClient = gl->Screen()->Front();
if (mShSurfClient && mShSurfClient->GetAllocator() && if (mShSurfClient && mShSurfClient->GetAllocator() &&
mShSurfClient->GetAllocator() != mShSurfClient->GetAllocator() !=