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),
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() !=