gecko-dev/gfx/layers/SurfacePoolWayland.h

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

128 строки
4.5 KiB
C
Исходник Обычный вид История

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
#ifndef mozilla_layers_SurfacePoolWayland_h
#define mozilla_layers_SurfacePoolWayland_h
#include <wayland-egl.h>
#include "GLContext.h"
#include "MozFramebuffer.h"
#include "mozilla/layers/SurfacePool.h"
Bug 1720375 - Restructure surface pool into a buffer pool,r=stransky,gfx-reviewers,lsalzman Note: Sorry in advance that this patch is so big. Unfortunately splitting it up would create lots of redundant changes. This should be the last big refactoring for the Wayland compositor backend for now. Up until now SurfacePoolWayland was a pool of actual `wl_surface`s, as before bug 1718569 we had no direct access to `wl_buffer`s when using EGL. However, the way `SurfacePoolCA` manages native surfaces is closer to what in Wayland terminology would be a buffer pool: buffers are heavy-weight and expansive to allocate, while `wl_surface` objects are cheap to recreate. So instead of having a pool of surfaces, each of them having its own pool of buffers, make `wl_surface`s part of tiles and make `SurfacePoolWayland` manage `wl_buffer`s (in the form of SHM- or DMABuf buffers). This will allow us to share buffers (especially depth buffers) more efficiently, reducing VRAM usage and allocation times. Apart from that it will also simplify our tile management logic. Most importantly, we'll need to reorder `wl_surface`s less often and less complex (no `place_below` the parent surface) and can also drop reattaching subsurfaces to compositors. Especially the former will likely decrease CPU time in compositors. Overall this patch makes `NativeLayerWayland` behave more like `NativeLayerCA` while taking in lessons learned from `WindowSurfaceWaylandMB`. Differential Revision: https://phabricator.services.mozilla.com/D119993
2021-08-04 15:43:21 +03:00
#include "mozilla/widget/WaylandBuffer.h"
#include <unordered_map>
namespace mozilla::layers {
class SurfacePoolWayland final : public SurfacePool {
public:
// Get a handle for a new window. aGL can be nullptr.
Bug 1720375 - Restructure surface pool into a buffer pool,r=stransky,gfx-reviewers,lsalzman Note: Sorry in advance that this patch is so big. Unfortunately splitting it up would create lots of redundant changes. This should be the last big refactoring for the Wayland compositor backend for now. Up until now SurfacePoolWayland was a pool of actual `wl_surface`s, as before bug 1718569 we had no direct access to `wl_buffer`s when using EGL. However, the way `SurfacePoolCA` manages native surfaces is closer to what in Wayland terminology would be a buffer pool: buffers are heavy-weight and expansive to allocate, while `wl_surface` objects are cheap to recreate. So instead of having a pool of surfaces, each of them having its own pool of buffers, make `wl_surface`s part of tiles and make `SurfacePoolWayland` manage `wl_buffer`s (in the form of SHM- or DMABuf buffers). This will allow us to share buffers (especially depth buffers) more efficiently, reducing VRAM usage and allocation times. Apart from that it will also simplify our tile management logic. Most importantly, we'll need to reorder `wl_surface`s less often and less complex (no `place_below` the parent surface) and can also drop reattaching subsurfaces to compositors. Especially the former will likely decrease CPU time in compositors. Overall this patch makes `NativeLayerWayland` behave more like `NativeLayerCA` while taking in lessons learned from `WindowSurfaceWaylandMB`. Differential Revision: https://phabricator.services.mozilla.com/D119993
2021-08-04 15:43:21 +03:00
RefPtr<SurfacePoolHandle> GetHandleForGL(gl::GLContext* aGL) override;
// Destroy all GL resources associated with aGL managed by this pool.
Bug 1720375 - Restructure surface pool into a buffer pool,r=stransky,gfx-reviewers,lsalzman Note: Sorry in advance that this patch is so big. Unfortunately splitting it up would create lots of redundant changes. This should be the last big refactoring for the Wayland compositor backend for now. Up until now SurfacePoolWayland was a pool of actual `wl_surface`s, as before bug 1718569 we had no direct access to `wl_buffer`s when using EGL. However, the way `SurfacePoolCA` manages native surfaces is closer to what in Wayland terminology would be a buffer pool: buffers are heavy-weight and expansive to allocate, while `wl_surface` objects are cheap to recreate. So instead of having a pool of surfaces, each of them having its own pool of buffers, make `wl_surface`s part of tiles and make `SurfacePoolWayland` manage `wl_buffer`s (in the form of SHM- or DMABuf buffers). This will allow us to share buffers (especially depth buffers) more efficiently, reducing VRAM usage and allocation times. Apart from that it will also simplify our tile management logic. Most importantly, we'll need to reorder `wl_surface`s less often and less complex (no `place_below` the parent surface) and can also drop reattaching subsurfaces to compositors. Especially the former will likely decrease CPU time in compositors. Overall this patch makes `NativeLayerWayland` behave more like `NativeLayerCA` while taking in lessons learned from `WindowSurfaceWaylandMB`. Differential Revision: https://phabricator.services.mozilla.com/D119993
2021-08-04 15:43:21 +03:00
void DestroyGLResourcesForContext(gl::GLContext* aGL) override;
private:
friend class SurfacePoolHandleWayland;
friend RefPtr<SurfacePool> SurfacePool::Create(size_t aPoolSizeLimit);
explicit SurfacePoolWayland(size_t aPoolSizeLimit);
Bug 1720375 - Restructure surface pool into a buffer pool,r=stransky,gfx-reviewers,lsalzman Note: Sorry in advance that this patch is so big. Unfortunately splitting it up would create lots of redundant changes. This should be the last big refactoring for the Wayland compositor backend for now. Up until now SurfacePoolWayland was a pool of actual `wl_surface`s, as before bug 1718569 we had no direct access to `wl_buffer`s when using EGL. However, the way `SurfacePoolCA` manages native surfaces is closer to what in Wayland terminology would be a buffer pool: buffers are heavy-weight and expansive to allocate, while `wl_surface` objects are cheap to recreate. So instead of having a pool of surfaces, each of them having its own pool of buffers, make `wl_surface`s part of tiles and make `SurfacePoolWayland` manage `wl_buffer`s (in the form of SHM- or DMABuf buffers). This will allow us to share buffers (especially depth buffers) more efficiently, reducing VRAM usage and allocation times. Apart from that it will also simplify our tile management logic. Most importantly, we'll need to reorder `wl_surface`s less often and less complex (no `place_below` the parent surface) and can also drop reattaching subsurfaces to compositors. Especially the former will likely decrease CPU time in compositors. Overall this patch makes `NativeLayerWayland` behave more like `NativeLayerCA` while taking in lessons learned from `WindowSurfaceWaylandMB`. Differential Revision: https://phabricator.services.mozilla.com/D119993
2021-08-04 15:43:21 +03:00
RefPtr<widget::WaylandBuffer> ObtainBufferFromPool(const gfx::IntSize& aSize,
gl::GLContext* aGL);
void ReturnBufferToPool(const RefPtr<widget::WaylandBuffer>& aBuffer);
void EnforcePoolSizeLimit();
Bug 1720375 - Restructure surface pool into a buffer pool,r=stransky,gfx-reviewers,lsalzman Note: Sorry in advance that this patch is so big. Unfortunately splitting it up would create lots of redundant changes. This should be the last big refactoring for the Wayland compositor backend for now. Up until now SurfacePoolWayland was a pool of actual `wl_surface`s, as before bug 1718569 we had no direct access to `wl_buffer`s when using EGL. However, the way `SurfacePoolCA` manages native surfaces is closer to what in Wayland terminology would be a buffer pool: buffers are heavy-weight and expansive to allocate, while `wl_surface` objects are cheap to recreate. So instead of having a pool of surfaces, each of them having its own pool of buffers, make `wl_surface`s part of tiles and make `SurfacePoolWayland` manage `wl_buffer`s (in the form of SHM- or DMABuf buffers). This will allow us to share buffers (especially depth buffers) more efficiently, reducing VRAM usage and allocation times. Apart from that it will also simplify our tile management logic. Most importantly, we'll need to reorder `wl_surface`s less often and less complex (no `place_below` the parent surface) and can also drop reattaching subsurfaces to compositors. Especially the former will likely decrease CPU time in compositors. Overall this patch makes `NativeLayerWayland` behave more like `NativeLayerCA` while taking in lessons learned from `WindowSurfaceWaylandMB`. Differential Revision: https://phabricator.services.mozilla.com/D119993
2021-08-04 15:43:21 +03:00
void CollectPendingSurfaces();
Maybe<GLuint> GetFramebufferForBuffer(
const RefPtr<widget::WaylandBuffer>& aBuffer, gl::GLContext* aGL,
bool aNeedsDepthBuffer);
struct GLResourcesForBuffer final {
RefPtr<gl::GLContext> mGL; // non-null
UniquePtr<gl::MozFramebuffer> mFramebuffer; // non-null
};
struct SurfacePoolEntry final {
Bug 1720375 - Restructure surface pool into a buffer pool,r=stransky,gfx-reviewers,lsalzman Note: Sorry in advance that this patch is so big. Unfortunately splitting it up would create lots of redundant changes. This should be the last big refactoring for the Wayland compositor backend for now. Up until now SurfacePoolWayland was a pool of actual `wl_surface`s, as before bug 1718569 we had no direct access to `wl_buffer`s when using EGL. However, the way `SurfacePoolCA` manages native surfaces is closer to what in Wayland terminology would be a buffer pool: buffers are heavy-weight and expansive to allocate, while `wl_surface` objects are cheap to recreate. So instead of having a pool of surfaces, each of them having its own pool of buffers, make `wl_surface`s part of tiles and make `SurfacePoolWayland` manage `wl_buffer`s (in the form of SHM- or DMABuf buffers). This will allow us to share buffers (especially depth buffers) more efficiently, reducing VRAM usage and allocation times. Apart from that it will also simplify our tile management logic. Most importantly, we'll need to reorder `wl_surface`s less often and less complex (no `place_below` the parent surface) and can also drop reattaching subsurfaces to compositors. Especially the former will likely decrease CPU time in compositors. Overall this patch makes `NativeLayerWayland` behave more like `NativeLayerCA` while taking in lessons learned from `WindowSurfaceWaylandMB`. Differential Revision: https://phabricator.services.mozilla.com/D119993
2021-08-04 15:43:21 +03:00
const gfx::IntSize mSize;
const RefPtr<widget::WaylandBuffer> mWaylandBuffer; // non-null
Maybe<GLResourcesForBuffer> mGLResources;
};
Bug 1720375 - Restructure surface pool into a buffer pool,r=stransky,gfx-reviewers,lsalzman Note: Sorry in advance that this patch is so big. Unfortunately splitting it up would create lots of redundant changes. This should be the last big refactoring for the Wayland compositor backend for now. Up until now SurfacePoolWayland was a pool of actual `wl_surface`s, as before bug 1718569 we had no direct access to `wl_buffer`s when using EGL. However, the way `SurfacePoolCA` manages native surfaces is closer to what in Wayland terminology would be a buffer pool: buffers are heavy-weight and expansive to allocate, while `wl_surface` objects are cheap to recreate. So instead of having a pool of surfaces, each of them having its own pool of buffers, make `wl_surface`s part of tiles and make `SurfacePoolWayland` manage `wl_buffer`s (in the form of SHM- or DMABuf buffers). This will allow us to share buffers (especially depth buffers) more efficiently, reducing VRAM usage and allocation times. Apart from that it will also simplify our tile management logic. Most importantly, we'll need to reorder `wl_surface`s less often and less complex (no `place_below` the parent surface) and can also drop reattaching subsurfaces to compositors. Especially the former will likely decrease CPU time in compositors. Overall this patch makes `NativeLayerWayland` behave more like `NativeLayerCA` while taking in lessons learned from `WindowSurfaceWaylandMB`. Differential Revision: https://phabricator.services.mozilla.com/D119993
2021-08-04 15:43:21 +03:00
bool CanRecycleSurfaceForRequest(const MutexAutoLock& aProofOfLock,
const SurfacePoolEntry& aEntry,
const gfx::IntSize& aSize,
gl::GLContext* aGL);
RefPtr<gl::DepthAndStencilBuffer> GetDepthBufferForSharing(
const MutexAutoLock& aProofOfLock, gl::GLContext* aGL,
const gfx::IntSize& aSize);
UniquePtr<gl::MozFramebuffer> CreateFramebufferForTexture(
const MutexAutoLock& aProofOfLock, gl::GLContext* aGL,
const gfx::IntSize& aSize, GLuint aTexture, bool aNeedsDepthBuffer);
Mutex mMutex MOZ_UNANNOTATED;
// Stores the entries for surfaces that are in use by NativeLayerWayland, i.e.
// an entry is inside mInUseEntries between calls to ObtainSurfaceFromPool()
// and ReturnSurfaceToPool().
Bug 1720375 - Restructure surface pool into a buffer pool,r=stransky,gfx-reviewers,lsalzman Note: Sorry in advance that this patch is so big. Unfortunately splitting it up would create lots of redundant changes. This should be the last big refactoring for the Wayland compositor backend for now. Up until now SurfacePoolWayland was a pool of actual `wl_surface`s, as before bug 1718569 we had no direct access to `wl_buffer`s when using EGL. However, the way `SurfacePoolCA` manages native surfaces is closer to what in Wayland terminology would be a buffer pool: buffers are heavy-weight and expansive to allocate, while `wl_surface` objects are cheap to recreate. So instead of having a pool of surfaces, each of them having its own pool of buffers, make `wl_surface`s part of tiles and make `SurfacePoolWayland` manage `wl_buffer`s (in the form of SHM- or DMABuf buffers). This will allow us to share buffers (especially depth buffers) more efficiently, reducing VRAM usage and allocation times. Apart from that it will also simplify our tile management logic. Most importantly, we'll need to reorder `wl_surface`s less often and less complex (no `place_below` the parent surface) and can also drop reattaching subsurfaces to compositors. Especially the former will likely decrease CPU time in compositors. Overall this patch makes `NativeLayerWayland` behave more like `NativeLayerCA` while taking in lessons learned from `WindowSurfaceWaylandMB`. Differential Revision: https://phabricator.services.mozilla.com/D119993
2021-08-04 15:43:21 +03:00
std::unordered_map<widget::WaylandBuffer*, SurfacePoolEntry> mInUseEntries;
// Stores entries which are no longer in use by NativeLayerWayland but are
// still in use by the window server, i.e. for which
Bug 1720375 - Restructure surface pool into a buffer pool,r=stransky,gfx-reviewers,lsalzman Note: Sorry in advance that this patch is so big. Unfortunately splitting it up would create lots of redundant changes. This should be the last big refactoring for the Wayland compositor backend for now. Up until now SurfacePoolWayland was a pool of actual `wl_surface`s, as before bug 1718569 we had no direct access to `wl_buffer`s when using EGL. However, the way `SurfacePoolCA` manages native surfaces is closer to what in Wayland terminology would be a buffer pool: buffers are heavy-weight and expansive to allocate, while `wl_surface` objects are cheap to recreate. So instead of having a pool of surfaces, each of them having its own pool of buffers, make `wl_surface`s part of tiles and make `SurfacePoolWayland` manage `wl_buffer`s (in the form of SHM- or DMABuf buffers). This will allow us to share buffers (especially depth buffers) more efficiently, reducing VRAM usage and allocation times. Apart from that it will also simplify our tile management logic. Most importantly, we'll need to reorder `wl_surface`s less often and less complex (no `place_below` the parent surface) and can also drop reattaching subsurfaces to compositors. Especially the former will likely decrease CPU time in compositors. Overall this patch makes `NativeLayerWayland` behave more like `NativeLayerCA` while taking in lessons learned from `WindowSurfaceWaylandMB`. Differential Revision: https://phabricator.services.mozilla.com/D119993
2021-08-04 15:43:21 +03:00
// WaylandBuffer::IsAttached() still returns true.
// These entries are checked once per frame inside
// CollectPendingSurfaces(), and returned to mAvailableEntries once the
// window server is done.
Bug 1720375 - Restructure surface pool into a buffer pool,r=stransky,gfx-reviewers,lsalzman Note: Sorry in advance that this patch is so big. Unfortunately splitting it up would create lots of redundant changes. This should be the last big refactoring for the Wayland compositor backend for now. Up until now SurfacePoolWayland was a pool of actual `wl_surface`s, as before bug 1718569 we had no direct access to `wl_buffer`s when using EGL. However, the way `SurfacePoolCA` manages native surfaces is closer to what in Wayland terminology would be a buffer pool: buffers are heavy-weight and expansive to allocate, while `wl_surface` objects are cheap to recreate. So instead of having a pool of surfaces, each of them having its own pool of buffers, make `wl_surface`s part of tiles and make `SurfacePoolWayland` manage `wl_buffer`s (in the form of SHM- or DMABuf buffers). This will allow us to share buffers (especially depth buffers) more efficiently, reducing VRAM usage and allocation times. Apart from that it will also simplify our tile management logic. Most importantly, we'll need to reorder `wl_surface`s less often and less complex (no `place_below` the parent surface) and can also drop reattaching subsurfaces to compositors. Especially the former will likely decrease CPU time in compositors. Overall this patch makes `NativeLayerWayland` behave more like `NativeLayerCA` while taking in lessons learned from `WindowSurfaceWaylandMB`. Differential Revision: https://phabricator.services.mozilla.com/D119993
2021-08-04 15:43:21 +03:00
nsTArray<SurfacePoolEntry> mPendingEntries;
// Stores entries which are available for recycling. These entries are not
// in use by a NativeLayerWayland or by the window server.
nsTArray<SurfacePoolEntry> mAvailableEntries;
size_t mPoolSizeLimit;
Bug 1720375 - Restructure surface pool into a buffer pool,r=stransky,gfx-reviewers,lsalzman Note: Sorry in advance that this patch is so big. Unfortunately splitting it up would create lots of redundant changes. This should be the last big refactoring for the Wayland compositor backend for now. Up until now SurfacePoolWayland was a pool of actual `wl_surface`s, as before bug 1718569 we had no direct access to `wl_buffer`s when using EGL. However, the way `SurfacePoolCA` manages native surfaces is closer to what in Wayland terminology would be a buffer pool: buffers are heavy-weight and expansive to allocate, while `wl_surface` objects are cheap to recreate. So instead of having a pool of surfaces, each of them having its own pool of buffers, make `wl_surface`s part of tiles and make `SurfacePoolWayland` manage `wl_buffer`s (in the form of SHM- or DMABuf buffers). This will allow us to share buffers (especially depth buffers) more efficiently, reducing VRAM usage and allocation times. Apart from that it will also simplify our tile management logic. Most importantly, we'll need to reorder `wl_surface`s less often and less complex (no `place_below` the parent surface) and can also drop reattaching subsurfaces to compositors. Especially the former will likely decrease CPU time in compositors. Overall this patch makes `NativeLayerWayland` behave more like `NativeLayerCA` while taking in lessons learned from `WindowSurfaceWaylandMB`. Differential Revision: https://phabricator.services.mozilla.com/D119993
2021-08-04 15:43:21 +03:00
template <typename F>
void ForEachEntry(F aFn);
struct DepthBufferEntry final {
RefPtr<gl::GLContext> mGL;
gfx::IntSize mSize;
WeakPtr<gl::DepthAndStencilBuffer> mBuffer;
};
nsTArray<DepthBufferEntry> mDepthBuffers;
};
// A surface pool handle that is stored on NativeLayerWayland and keeps the
// SurfacePool alive.
class SurfacePoolHandleWayland final : public SurfacePoolHandle {
public:
SurfacePoolHandleWayland* AsSurfacePoolHandleWayland() override {
return this;
}
Bug 1720375 - Restructure surface pool into a buffer pool,r=stransky,gfx-reviewers,lsalzman Note: Sorry in advance that this patch is so big. Unfortunately splitting it up would create lots of redundant changes. This should be the last big refactoring for the Wayland compositor backend for now. Up until now SurfacePoolWayland was a pool of actual `wl_surface`s, as before bug 1718569 we had no direct access to `wl_buffer`s when using EGL. However, the way `SurfacePoolCA` manages native surfaces is closer to what in Wayland terminology would be a buffer pool: buffers are heavy-weight and expansive to allocate, while `wl_surface` objects are cheap to recreate. So instead of having a pool of surfaces, each of them having its own pool of buffers, make `wl_surface`s part of tiles and make `SurfacePoolWayland` manage `wl_buffer`s (in the form of SHM- or DMABuf buffers). This will allow us to share buffers (especially depth buffers) more efficiently, reducing VRAM usage and allocation times. Apart from that it will also simplify our tile management logic. Most importantly, we'll need to reorder `wl_surface`s less often and less complex (no `place_below` the parent surface) and can also drop reattaching subsurfaces to compositors. Especially the former will likely decrease CPU time in compositors. Overall this patch makes `NativeLayerWayland` behave more like `NativeLayerCA` while taking in lessons learned from `WindowSurfaceWaylandMB`. Differential Revision: https://phabricator.services.mozilla.com/D119993
2021-08-04 15:43:21 +03:00
RefPtr<widget::WaylandBuffer> ObtainBufferFromPool(const gfx::IntSize& aSize);
void ReturnBufferToPool(const RefPtr<widget::WaylandBuffer>& aBuffer);
Maybe<GLuint> GetFramebufferForBuffer(
const RefPtr<widget::WaylandBuffer>& aBuffer, bool aNeedsDepthBuffer);
const auto& gl() { return mGL; }
RefPtr<SurfacePool> Pool() override { return mPool; }
void OnBeginFrame() override;
void OnEndFrame() override;
private:
friend class SurfacePoolWayland;
Bug 1720375 - Restructure surface pool into a buffer pool,r=stransky,gfx-reviewers,lsalzman Note: Sorry in advance that this patch is so big. Unfortunately splitting it up would create lots of redundant changes. This should be the last big refactoring for the Wayland compositor backend for now. Up until now SurfacePoolWayland was a pool of actual `wl_surface`s, as before bug 1718569 we had no direct access to `wl_buffer`s when using EGL. However, the way `SurfacePoolCA` manages native surfaces is closer to what in Wayland terminology would be a buffer pool: buffers are heavy-weight and expansive to allocate, while `wl_surface` objects are cheap to recreate. So instead of having a pool of surfaces, each of them having its own pool of buffers, make `wl_surface`s part of tiles and make `SurfacePoolWayland` manage `wl_buffer`s (in the form of SHM- or DMABuf buffers). This will allow us to share buffers (especially depth buffers) more efficiently, reducing VRAM usage and allocation times. Apart from that it will also simplify our tile management logic. Most importantly, we'll need to reorder `wl_surface`s less often and less complex (no `place_below` the parent surface) and can also drop reattaching subsurfaces to compositors. Especially the former will likely decrease CPU time in compositors. Overall this patch makes `NativeLayerWayland` behave more like `NativeLayerCA` while taking in lessons learned from `WindowSurfaceWaylandMB`. Differential Revision: https://phabricator.services.mozilla.com/D119993
2021-08-04 15:43:21 +03:00
SurfacePoolHandleWayland(RefPtr<SurfacePoolWayland> aPool,
gl::GLContext* aGL);
const RefPtr<SurfacePoolWayland> mPool;
Bug 1720375 - Restructure surface pool into a buffer pool,r=stransky,gfx-reviewers,lsalzman Note: Sorry in advance that this patch is so big. Unfortunately splitting it up would create lots of redundant changes. This should be the last big refactoring for the Wayland compositor backend for now. Up until now SurfacePoolWayland was a pool of actual `wl_surface`s, as before bug 1718569 we had no direct access to `wl_buffer`s when using EGL. However, the way `SurfacePoolCA` manages native surfaces is closer to what in Wayland terminology would be a buffer pool: buffers are heavy-weight and expansive to allocate, while `wl_surface` objects are cheap to recreate. So instead of having a pool of surfaces, each of them having its own pool of buffers, make `wl_surface`s part of tiles and make `SurfacePoolWayland` manage `wl_buffer`s (in the form of SHM- or DMABuf buffers). This will allow us to share buffers (especially depth buffers) more efficiently, reducing VRAM usage and allocation times. Apart from that it will also simplify our tile management logic. Most importantly, we'll need to reorder `wl_surface`s less often and less complex (no `place_below` the parent surface) and can also drop reattaching subsurfaces to compositors. Especially the former will likely decrease CPU time in compositors. Overall this patch makes `NativeLayerWayland` behave more like `NativeLayerCA` while taking in lessons learned from `WindowSurfaceWaylandMB`. Differential Revision: https://phabricator.services.mozilla.com/D119993
2021-08-04 15:43:21 +03:00
const RefPtr<gl::GLContext> mGL;
};
} // namespace mozilla::layers
#endif