From b887819c71f6c3910feb96dceb4d0ab97cb108b1 Mon Sep 17 00:00:00 2001 From: Martin Stransky Date: Thu, 24 May 2018 14:06:31 +0200 Subject: [PATCH] Bug 1464037 - Replace GL_PROVIDER_GLX by MOZ_X11 to build X11 dependent code, r=lsalzman In order to have useful Wayland builds we need ability to switch between GL backends run-time - to use EGL backend for Wayland and GLX backend for X11. GL_PROVIDER_GLX is used exclusively for GLX GL backend, so let's replace GL_PROVIDER_GLX build-time check by more general MOZ_X11 check which determines X11 dependent code and it's valid for both X11 and Wayland builds. MozReview-Commit-ID: HYobrHveoaP --HG-- extra : rebase_source : 2d359355ee747f5898d27d8a28d66114f4135f5b --- gfx/gl/GLScreenBuffer.cpp | 6 +++--- gfx/layers/client/TextureClient.cpp | 4 ---- gfx/layers/composite/X11TextureHost.cpp | 6 ------ gfx/layers/ipc/ShadowLayerUtilsX11.cpp | 4 ---- gfx/layers/opengl/X11TextureSourceOGL.cpp | 3 --- gfx/layers/opengl/X11TextureSourceOGL.h | 2 +- gfx/thebes/gfxPlatformGtk.cpp | 4 +--- gfx/thebes/gfxPlatformGtk.h | 2 +- gfx/thebes/gfxXlibSurface.cpp | 23 +++++------------------ gfx/thebes/gfxXlibSurface.h | 6 ------ 10 files changed, 11 insertions(+), 49 deletions(-) diff --git a/gfx/gl/GLScreenBuffer.cpp b/gfx/gl/GLScreenBuffer.cpp index 0fc68d7c9409..82b5abc098ed 100644 --- a/gfx/gl/GLScreenBuffer.cpp +++ b/gfx/gl/GLScreenBuffer.cpp @@ -29,7 +29,7 @@ #include "SharedSurfaceIO.h" #endif -#ifdef GL_PROVIDER_GLX +#ifdef MOZ_X11 #include "GLXLibrary.h" #include "SharedSurfaceGLX.h" #endif @@ -83,7 +83,7 @@ GLScreenBuffer::CreateFactory(GLContext* gl, if (useGl) { #if defined(XP_MACOSX) factory = SurfaceFactory_IOSurface::Create(gl, caps, ipcChannel, flags); -#elif defined(GL_PROVIDER_GLX) +#elif defined(MOZ_X11) if (sGLXLibrary.UseTextureFromPixmap()) factory = SurfaceFactory_GLXDrawable::Create(gl, caps, ipcChannel, flags); #elif defined(MOZ_WIDGET_UIKIT) @@ -119,7 +119,7 @@ GLScreenBuffer::CreateFactory(GLContext* gl, #endif } -#ifdef GL_PROVIDER_GLX +#ifdef MOZ_X11 if (!factory && sGLXLibrary.UseTextureFromPixmap()) { factory = SurfaceFactory_GLXDrawable::Create(gl, caps, ipcChannel, flags); } diff --git a/gfx/layers/client/TextureClient.cpp b/gfx/layers/client/TextureClient.cpp index 1e05ae443cf6..f0187655176d 100644 --- a/gfx/layers/client/TextureClient.cpp +++ b/gfx/layers/client/TextureClient.cpp @@ -45,10 +45,8 @@ #endif #ifdef MOZ_X11 #include "mozilla/layers/TextureClientX11.h" -#ifdef GL_PROVIDER_GLX #include "GLXLibrary.h" #endif -#endif #ifdef XP_MACOSX #include "mozilla/layers/MacIOSurfaceTextureClientOGL.h" @@ -1127,7 +1125,6 @@ TextureClient::CreateForDrawing(TextureForwarder* aAllocator, { data = X11TextureData::Create(aSize, aFormat, aTextureFlags, aAllocator); } -#ifdef GL_PROVIDER_GLX if (!data && aLayersBackend == LayersBackend::LAYERS_OPENGL && type == gfxSurfaceType::Xlib && aFormat != SurfaceFormat::A8 && @@ -1136,7 +1133,6 @@ TextureClient::CreateForDrawing(TextureForwarder* aAllocator, data = X11TextureData::Create(aSize, aFormat, aTextureFlags, aAllocator); } #endif -#endif #ifdef XP_MACOSX if (!data && gfxPrefs::UseIOSurfaceTextures()) { diff --git a/gfx/layers/composite/X11TextureHost.cpp b/gfx/layers/composite/X11TextureHost.cpp index 94cb3f2f9594..89afea5f7155 100644 --- a/gfx/layers/composite/X11TextureHost.cpp +++ b/gfx/layers/composite/X11TextureHost.cpp @@ -7,10 +7,8 @@ #include "X11TextureHost.h" #include "mozilla/layers/BasicCompositor.h" #include "mozilla/layers/X11TextureSourceBasic.h" -#ifdef GL_PROVIDER_GLX #include "mozilla/layers/CompositorOGL.h" #include "mozilla/layers/X11TextureSourceOGL.h" -#endif #include "gfxXlibSurface.h" #include "gfx2DGlue.h" @@ -43,12 +41,10 @@ X11TextureHost::Lock() mTextureSource = new X11TextureSourceBasic(mCompositor->AsBasicCompositor(), mSurface); break; -#ifdef GL_PROVIDER_GLX case LayersBackend::LAYERS_OPENGL: mTextureSource = new X11TextureSourceOGL(mCompositor->AsCompositorOGL(), mSurface); break; -#endif default: return false; } @@ -78,11 +74,9 @@ X11TextureHost::GetFormat() const return SurfaceFormat::UNKNOWN; } gfxContentType type = mSurface->GetContentType(); -#ifdef GL_PROVIDER_GLX if (mCompositor->GetBackendType() == LayersBackend::LAYERS_OPENGL) { return X11TextureSourceOGL::ContentTypeToSurfaceFormat(type); } -#endif return X11TextureSourceBasic::ContentTypeToSurfaceFormat(type); } diff --git a/gfx/layers/ipc/ShadowLayerUtilsX11.cpp b/gfx/layers/ipc/ShadowLayerUtilsX11.cpp index e011fe3aa2e3..46bea3f67f2e 100644 --- a/gfx/layers/ipc/ShadowLayerUtilsX11.cpp +++ b/gfx/layers/ipc/ShadowLayerUtilsX11.cpp @@ -74,11 +74,9 @@ SurfaceDescriptorX11::SurfaceDescriptorX11(gfxXlibSurface* aSurf, mFormat = cairo_xlib_surface_get_visual(aSurf->CairoSurface())->visualid; } -#ifdef GL_PROVIDER_GLX if (aForwardGLX) { mGLXPixmap = aSurf->GetGLXPixmap(); } -#endif } SurfaceDescriptorX11::SurfaceDescriptorX11(Drawable aDrawable, XID aFormatID, @@ -109,10 +107,8 @@ SurfaceDescriptorX11::OpenForeign() const surf = new gfxXlibSurface(display, mId, visual, mSize); } -#ifdef GL_PROVIDER_GLX if (mGLXPixmap) surf->BindGLXPixmap(mGLXPixmap); -#endif return surf->CairoStatus() ? nullptr : surf.forget(); } diff --git a/gfx/layers/opengl/X11TextureSourceOGL.cpp b/gfx/layers/opengl/X11TextureSourceOGL.cpp index 84769cc594a9..1af4a4d819cb 100644 --- a/gfx/layers/opengl/X11TextureSourceOGL.cpp +++ b/gfx/layers/opengl/X11TextureSourceOGL.cpp @@ -4,8 +4,6 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#ifdef GL_PROVIDER_GLX - #include "X11TextureSourceOGL.h" #include "gfxXlibSurface.h" #include "gfx2DGlue.h" @@ -103,4 +101,3 @@ X11TextureSourceOGL::ContentTypeToSurfaceFormat(gfxContentType aType) } } -#endif diff --git a/gfx/layers/opengl/X11TextureSourceOGL.h b/gfx/layers/opengl/X11TextureSourceOGL.h index 3ce8b86e16a4..9886124e13f9 100644 --- a/gfx/layers/opengl/X11TextureSourceOGL.h +++ b/gfx/layers/opengl/X11TextureSourceOGL.h @@ -7,7 +7,7 @@ #ifndef MOZILLA_GFX_X11TEXTURESOURCEOGL__H #define MOZILLA_GFX_X11TEXTURESOURCEOGL__H -#ifdef GL_PROVIDER_GLX +#ifdef MOZ_X11 #include "mozilla/layers/CompositorOGL.h" #include "mozilla/layers/TextureHostOGL.h" diff --git a/gfx/thebes/gfxPlatformGtk.cpp b/gfx/thebes/gfxPlatformGtk.cpp index 96ff2fe3dc5f..317063288b7e 100644 --- a/gfx/thebes/gfxPlatformGtk.cpp +++ b/gfx/thebes/gfxPlatformGtk.cpp @@ -42,11 +42,9 @@ #include "mozilla/Preferences.h" #include "mozilla/X11Util.h" -#ifdef GL_PROVIDER_GLX #include "GLContextProvider.h" #include "GLContextGLX.h" #include "GLXLibrary.h" -#endif /* Undefine the Status from Xlib since it will conflict with system headers on OSX */ #if defined(__APPLE__) && defined(Status) @@ -508,7 +506,7 @@ gfxPlatformGtk::CheckVariationFontSupport() return major * 1000000 + minor * 1000 + patch >= 2007001; } -#ifdef GL_PROVIDER_GLX +#ifdef MOZ_X11 class GLXVsyncSource final : public VsyncSource { diff --git a/gfx/thebes/gfxPlatformGtk.h b/gfx/thebes/gfxPlatformGtk.h index 29f475c4b751..23d588fc8d9f 100644 --- a/gfx/thebes/gfxPlatformGtk.h +++ b/gfx/thebes/gfxPlatformGtk.h @@ -97,7 +97,7 @@ public: bool AccelerateLayersByDefault() override; -#ifdef GL_PROVIDER_GLX +#ifdef MOZ_X11 already_AddRefed CreateHardwareVsyncSource() override; #endif diff --git a/gfx/thebes/gfxXlibSurface.cpp b/gfx/thebes/gfxXlibSurface.cpp index cefcedc76b90..bf5124e26bdc 100644 --- a/gfx/thebes/gfxXlibSurface.cpp +++ b/gfx/thebes/gfxXlibSurface.cpp @@ -25,9 +25,7 @@ using namespace mozilla::gfx; gfxXlibSurface::gfxXlibSurface(Display *dpy, Drawable drawable, Visual *visual) : mPixmapTaken(false), mDisplay(dpy), mDrawable(drawable) -#if defined(GL_PROVIDER_GLX) , mGLXPixmap(X11None) -#endif { const gfx::IntSize size = DoSizeQuery(); cairo_surface_t *surf = cairo_xlib_surface_create(dpy, drawable, visual, size.width, size.height); @@ -36,9 +34,7 @@ gfxXlibSurface::gfxXlibSurface(Display *dpy, Drawable drawable, Visual *visual) gfxXlibSurface::gfxXlibSurface(Display *dpy, Drawable drawable, Visual *visual, const gfx::IntSize& size) : mPixmapTaken(false), mDisplay(dpy), mDrawable(drawable) -#if defined(GL_PROVIDER_GLX) , mGLXPixmap(X11None) -#endif { NS_ASSERTION(Factory::CheckSurfaceSize(size, XLIB_IMAGE_SIDE_SIZE_LIMIT), "Bad size"); @@ -49,11 +45,10 @@ gfxXlibSurface::gfxXlibSurface(Display *dpy, Drawable drawable, Visual *visual, gfxXlibSurface::gfxXlibSurface(Screen *screen, Drawable drawable, XRenderPictFormat *format, const gfx::IntSize& size) - : mPixmapTaken(false), mDisplay(DisplayOfScreen(screen)), - mDrawable(drawable) -#if defined(GL_PROVIDER_GLX) - , mGLXPixmap(X11None) -#endif + : mPixmapTaken(false) + , mDisplay(DisplayOfScreen(screen)) + , mDrawable(drawable) + , mGLXPixmap(X11None) { NS_ASSERTION(Factory::CheckSurfaceSize(size, XLIB_IMAGE_SIDE_SIZE_LIMIT), "Bad Size"); @@ -67,9 +62,7 @@ gfxXlibSurface::gfxXlibSurface(Screen *screen, Drawable drawable, XRenderPictFor gfxXlibSurface::gfxXlibSurface(cairo_surface_t *csurf) : mPixmapTaken(false) -#if defined(GL_PROVIDER_GLX) - , mGLXPixmap(X11None) -#endif + , mGLXPixmap(X11None) { MOZ_ASSERT(cairo_surface_status(csurf) == 0, "Not expecting an error surface"); @@ -84,11 +77,9 @@ gfxXlibSurface::~gfxXlibSurface() { // gfxASurface's destructor calls RecordMemoryFreed(). if (mPixmapTaken) { -#if defined(GL_PROVIDER_GLX) if (mGLXPixmap) { gl::sGLXLibrary.DestroyPixmap(mDisplay, mGLXPixmap); } -#endif XFreePixmap (mDisplay, mDrawable); } } @@ -272,12 +263,10 @@ gfxXlibSurface::CreateSimilarSurface(gfxContentType aContent, void gfxXlibSurface::Finish() { -#if defined(GL_PROVIDER_GLX) if (mPixmapTaken && mGLXPixmap) { gl::sGLXLibrary.DestroyPixmap(mDisplay, mGLXPixmap); mGLXPixmap = X11None; } -#endif gfxASurface::Finish(); } @@ -587,7 +576,6 @@ gfxXlibSurface::XRenderFormat() return cairo_xlib_surface_get_xrender_format(CairoSurface()); } -#if defined(GL_PROVIDER_GLX) GLXPixmap gfxXlibSurface::GetGLXPixmap() { @@ -612,4 +600,3 @@ gfxXlibSurface::BindGLXPixmap(GLXPixmap aPixmap) mGLXPixmap = aPixmap; } -#endif diff --git a/gfx/thebes/gfxXlibSurface.h b/gfx/thebes/gfxXlibSurface.h index c7ae9b3eac0d..0bb44e702058 100644 --- a/gfx/thebes/gfxXlibSurface.h +++ b/gfx/thebes/gfxXlibSurface.h @@ -12,9 +12,7 @@ #include #include "X11UndefineNone.h" -#if defined(GL_PROVIDER_GLX) #include "GLXLibrary.h" -#endif #include "nsSize.h" @@ -86,12 +84,10 @@ public: // Find a visual and colormap pair suitable for rendering to this surface. bool GetColormapAndVisual(Colormap* colormap, Visual **visual); -#if defined(GL_PROVIDER_GLX) GLXPixmap GetGLXPixmap(); // Binds a GLXPixmap backed by this context's surface. // Primarily for use in sharing surfaces. void BindGLXPixmap(GLXPixmap aPixmap); -#endif // Return true if cairo will take its slow path when this surface is used // in a pattern with EXTEND_PAD. As a workaround for XRender's RepeatPad @@ -114,9 +110,7 @@ protected: const mozilla::gfx::IntSize DoSizeQuery(); -#if defined(GL_PROVIDER_GLX) GLXPixmap mGLXPixmap; -#endif }; #endif /* GFX_XLIBSURFACE_H */