Bug 1557265 - Remove HAVE_LIBDRM defines as libdrm is mandatory now, r=glandium

Depends on D33918

Differential Revision: https://phabricator.services.mozilla.com/D34857

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Martin Stransky 2019-06-20 21:52:40 +00:00
Родитель 34e570a249
Коммит f1bbfe6ec3
5 изменённых файлов: 9 добавлений и 52 удалений

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

@ -415,7 +415,6 @@ already_AddRefed<gfx::DrawTarget> WindowBackBufferShm::Lock() {
BUFFER_BPP * mWidth, GetSurfaceFormat()); BUFFER_BPP * mWidth, GetSurfaceFormat());
} }
#ifdef HAVE_LIBDRM
WindowBackBufferDMABuf::WindowBackBufferDMABuf( WindowBackBufferDMABuf::WindowBackBufferDMABuf(
nsWaylandDisplay* aWaylandDisplay, int aWidth, int aHeight) nsWaylandDisplay* aWaylandDisplay, int aWidth, int aHeight)
: WindowBackBuffer(aWaylandDisplay) { : WindowBackBuffer(aWaylandDisplay) {
@ -478,7 +477,6 @@ void WindowBackBufferDMABuf::Detach(wl_buffer* aBuffer) {
} }
void WindowBackBufferDMABuf::Clear() { mDMAbufSurface.Clear(); } void WindowBackBufferDMABuf::Clear() { mDMAbufSurface.Clear(); }
#endif
static void frame_callback_handler(void* data, struct wl_callback* callback, static void frame_callback_handler(void* data, struct wl_callback* callback,
uint32_t time) { uint32_t time) {
@ -534,12 +532,10 @@ WindowSurfaceWayland::~WindowSurfaceWayland() {
bool WindowSurfaceWayland::UseDMABufBackend() { bool WindowSurfaceWayland::UseDMABufBackend() {
if (!mUseDMABufInitialized) { if (!mUseDMABufInitialized) {
#ifdef HAVE_LIBDRM
if (WaylandDMABufSurface::IsAvailable()) { if (WaylandDMABufSurface::IsAvailable()) {
mUseDMABuf = nsWaylandDisplay::IsDMABufEnabled(); mUseDMABuf = nsWaylandDisplay::IsDMABufEnabled();
LOGWAYLAND(("%s DMABuf state %d\n", __PRETTY_FUNCTION__, mUseDMABuf)); LOGWAYLAND(("%s DMABuf state %d\n", __PRETTY_FUNCTION__, mUseDMABuf));
} }
#endif
mUseDMABufInitialized = true; mUseDMABufInitialized = true;
} }
return mUseDMABuf; return mUseDMABuf;
@ -547,7 +543,6 @@ bool WindowSurfaceWayland::UseDMABufBackend() {
WindowBackBuffer* WindowSurfaceWayland::CreateWaylandBuffer(int aWidth, WindowBackBuffer* WindowSurfaceWayland::CreateWaylandBuffer(int aWidth,
int aHeight) { int aHeight) {
#ifdef HAVE_LIBDRM
if (UseDMABufBackend()) { if (UseDMABufBackend()) {
static bool sDMABufBufferCreated = false; static bool sDMABufBufferCreated = false;
WindowBackBuffer* buffer = WindowBackBuffer* buffer =
@ -567,7 +562,6 @@ WindowBackBuffer* WindowSurfaceWayland::CreateWaylandBuffer(int aWidth,
mUseDMABuf = false; mUseDMABuf = false;
} }
} }
#endif
return new WindowBackBufferShm(mWaylandDisplay, aWidth, aHeight); return new WindowBackBufferShm(mWaylandDisplay, aWidth, aHeight);
} }

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

@ -10,9 +10,7 @@
#include <prthread.h> #include <prthread.h>
#include "mozilla/gfx/Types.h" #include "mozilla/gfx/Types.h"
#include "nsWaylandDisplay.h" #include "nsWaylandDisplay.h"
#ifdef HAVE_LIBDRM #include "WaylandDMABufSurface.h"
# include "WaylandDMABufSurface.h"
#endif
#define BACK_BUFFER_NUM 2 #define BACK_BUFFER_NUM 2
@ -121,7 +119,6 @@ class WindowBackBufferShm : public WindowBackBuffer {
bool mIsLocked; bool mIsLocked;
}; };
#ifdef HAVE_LIBDRM
class WindowBackBufferDMABuf : public WindowBackBuffer { class WindowBackBufferDMABuf : public WindowBackBuffer {
public: public:
WindowBackBufferDMABuf(nsWaylandDisplay* aWaylandDisplay, int aWidth, WindowBackBufferDMABuf(nsWaylandDisplay* aWaylandDisplay, int aWidth,
@ -148,7 +145,6 @@ class WindowBackBufferDMABuf : public WindowBackBuffer {
private: private:
WaylandDMABufSurface mDMAbufSurface; WaylandDMABufSurface mDMAbufSurface;
}; };
#endif
class WindowImageSurface { class WindowImageSurface {
public: public:

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

@ -99,17 +99,11 @@ if CONFIG['MOZ_WAYLAND']:
UNIFIED_SOURCES += [ UNIFIED_SOURCES += [
'nsClipboardWayland.cpp', 'nsClipboardWayland.cpp',
'nsWaylandDisplay.cpp', 'nsWaylandDisplay.cpp',
'WaylandDMABufSurface.cpp',
'WindowSurfaceWayland.cpp', 'WindowSurfaceWayland.cpp',
] ]
EXPORTS.mozilla.widget += [ EXPORTS.mozilla.widget += [
'nsWaylandDisplay.h', 'nsWaylandDisplay.h',
]
if CONFIG['MOZ_WAYLAND'] and CONFIG['HAVE_LIBDRM']:
SOURCES += [
'WaylandDMABufSurface.cpp',
]
EXPORTS.mozilla.widget += [
'WaylandDMABufSurface.h', 'WaylandDMABufSurface.h',
] ]

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

@ -13,10 +13,8 @@ namespace widget {
#define GBMLIB_NAME "libgbm.so.1" #define GBMLIB_NAME "libgbm.so.1"
#define DRMLIB_NAME "libdrm.so.2" #define DRMLIB_NAME "libdrm.so.2"
#ifdef HAVE_LIBDRM
bool nsWaylandDisplay::mIsDMABufEnabled; bool nsWaylandDisplay::mIsDMABufEnabled;
bool nsWaylandDisplay::mIsDMABufPrefLoaded; bool nsWaylandDisplay::mIsDMABufPrefLoaded;
#endif
// nsWaylandDisplay needs to be created for each calling thread(main thread, // nsWaylandDisplay needs to be created for each calling thread(main thread,
// compositor thread and render thread) // compositor thread and render thread)
@ -116,7 +114,6 @@ void nsWaylandDisplay::SetPrimarySelectionDeviceManager(
mPrimarySelectionDeviceManager = aPrimarySelectionDeviceManager; mPrimarySelectionDeviceManager = aPrimarySelectionDeviceManager;
} }
#ifdef HAVE_LIBDRM
void nsWaylandDisplay::SetDmabuf(zwp_linux_dmabuf_v1* aDmabuf) { void nsWaylandDisplay::SetDmabuf(zwp_linux_dmabuf_v1* aDmabuf) {
mDmabuf = aDmabuf; mDmabuf = aDmabuf;
} }
@ -166,7 +163,6 @@ static void dmabuf_format(void* data,
static const struct zwp_linux_dmabuf_v1_listener dmabuf_listener = { static const struct zwp_linux_dmabuf_v1_listener dmabuf_listener = {
dmabuf_format, dmabuf_modifiers}; dmabuf_format, dmabuf_modifiers};
#endif
static void global_registry_handler(void* data, wl_registry* registry, static void global_registry_handler(void* data, wl_registry* registry,
uint32_t id, const char* interface, uint32_t id, const char* interface,
@ -205,15 +201,12 @@ static void global_registry_handler(void* data, wl_registry* registry,
wl_proxy_set_queue((struct wl_proxy*)subcompositor, wl_proxy_set_queue((struct wl_proxy*)subcompositor,
display->GetEventQueue()); display->GetEventQueue());
display->SetSubcompositor(subcompositor); display->SetSubcompositor(subcompositor);
} } else if (strcmp(interface, "zwp_linux_dmabuf_v1") == 0 && version > 2) {
#ifdef HAVE_LIBDRM
else if (strcmp(interface, "zwp_linux_dmabuf_v1") == 0 && version > 2) {
auto dmabuf = static_cast<zwp_linux_dmabuf_v1*>( auto dmabuf = static_cast<zwp_linux_dmabuf_v1*>(
wl_registry_bind(registry, id, &zwp_linux_dmabuf_v1_interface, 3)); wl_registry_bind(registry, id, &zwp_linux_dmabuf_v1_interface, 3));
display->SetDmabuf(dmabuf); display->SetDmabuf(dmabuf);
zwp_linux_dmabuf_v1_add_listener(dmabuf, &dmabuf_listener, data); zwp_linux_dmabuf_v1_add_listener(dmabuf, &dmabuf_listener, data);
} }
#endif
} }
static void global_registry_remover(void* data, wl_registry* registry, static void global_registry_remover(void* data, wl_registry* registry,
@ -231,7 +224,6 @@ bool nsWaylandDisplay::Matches(wl_display* aDisplay) {
return mThreadId == PR_GetCurrentThread() && aDisplay == mDisplay; return mThreadId == PR_GetCurrentThread() && aDisplay == mDisplay;
} }
#ifdef HAVE_LIBDRM
bool nsWaylandDisplay::ConfigureGbm() { bool nsWaylandDisplay::ConfigureGbm() {
if (!nsGbmLib::IsAvailable()) { if (!nsGbmLib::IsAvailable()) {
return false; return false;
@ -279,7 +271,6 @@ int nsWaylandDisplay::GetGbmDeviceFd() {
} }
return mGbmFd; return mGbmFd;
} }
#endif
nsWaylandDisplay::nsWaylandDisplay(wl_display* aDisplay) nsWaylandDisplay::nsWaylandDisplay(wl_display* aDisplay)
: mDispatcherThreadLoop(nullptr), : mDispatcherThreadLoop(nullptr),
@ -291,28 +282,22 @@ nsWaylandDisplay::nsWaylandDisplay(wl_display* aDisplay)
mSeat(nullptr), mSeat(nullptr),
mShm(nullptr), mShm(nullptr),
mPrimarySelectionDeviceManager(nullptr), mPrimarySelectionDeviceManager(nullptr),
mRegistry(nullptr) mRegistry(nullptr),
#ifdef HAVE_LIBDRM
,
mGbmDevice(nullptr), mGbmDevice(nullptr),
mGbmFd(-1), mGbmFd(-1),
mXRGBFormat({false, false, -1, nullptr, 0}), mXRGBFormat({false, false, -1, nullptr, 0}),
mARGBFormat({false, false, -1, nullptr, 0}), mARGBFormat({false, false, -1, nullptr, 0}),
mGdmConfigured(false), mGdmConfigured(false),
mExplicitSync(false) mExplicitSync(false) {
#endif
{
mRegistry = wl_display_get_registry(mDisplay); mRegistry = wl_display_get_registry(mDisplay);
wl_registry_add_listener(mRegistry, &registry_listener, this); wl_registry_add_listener(mRegistry, &registry_listener, this);
if (NS_IsMainThread()) { if (NS_IsMainThread()) {
#ifdef HAVE_LIBDRM
if (!mIsDMABufPrefLoaded) { if (!mIsDMABufPrefLoaded) {
mIsDMABufPrefLoaded = true; mIsDMABufPrefLoaded = true;
mIsDMABufEnabled = mIsDMABufEnabled =
Preferences::GetBool("widget.wayland_dmabuf_backend.enabled", false); Preferences::GetBool("widget.wayland_dmabuf_backend.enabled", false);
} }
#endif
// Use default event queue in main thread operated by Gtk+. // Use default event queue in main thread operated by Gtk+.
mEventQueue = nullptr; mEventQueue = nullptr;
wl_display_roundtrip(mDisplay); wl_display_roundtrip(mDisplay);
@ -341,7 +326,6 @@ nsWaylandDisplay::~nsWaylandDisplay() {
} }
} }
#ifdef HAVE_LIBDRM
void* nsGbmLib::sGbmLibHandle = nullptr; void* nsGbmLib::sGbmLibHandle = nullptr;
void* nsGbmLib::sXf86DrmLibHandle = nullptr; void* nsGbmLib::sXf86DrmLibHandle = nullptr;
bool nsGbmLib::sLibLoaded = false; bool nsGbmLib::sLibLoaded = false;
@ -422,7 +406,6 @@ bool nsGbmLib::Load() {
return sGbmLibHandle; return sGbmLibHandle;
} }
#endif
} // namespace widget } // namespace widget
} // namespace mozilla } // namespace mozilla

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

@ -15,12 +15,10 @@
#include "base/task.h" // for NewRunnableMethod, etc #include "base/task.h" // for NewRunnableMethod, etc
#include "mozilla/StaticMutex.h" #include "mozilla/StaticMutex.h"
#ifdef HAVE_LIBDRM #include <drm/drm_fourcc.h>
# include <drm/drm_fourcc.h> #include <xf86drm.h>
# include <xf86drm.h> #include <gbm.h>
# include <gbm.h> #include "mozilla/widget/linux-dmabuf-unstable-v1-client-protocol.h"
# include "mozilla/widget/linux-dmabuf-unstable-v1-client-protocol.h"
#endif
namespace mozilla { namespace mozilla {
namespace widget { namespace widget {
@ -65,7 +63,6 @@ class nsWaylandDisplay {
void Shutdown(); void Shutdown();
#ifdef HAVE_LIBDRM
void SetDmabuf(zwp_linux_dmabuf_v1* aDmabuf); void SetDmabuf(zwp_linux_dmabuf_v1* aDmabuf);
zwp_linux_dmabuf_v1* GetDmabuf() { return mDmabuf; }; zwp_linux_dmabuf_v1* GetDmabuf() { return mDmabuf; };
gbm_device* GetGbmDevice(); gbm_device* GetGbmDevice();
@ -76,12 +73,9 @@ class nsWaylandDisplay {
void AddFormatModifier(bool aHasAlpha, int aFormat, uint32_t mModifierHi, void AddFormatModifier(bool aHasAlpha, int aFormat, uint32_t mModifierHi,
uint32_t mModifierLo); uint32_t mModifierLo);
static bool IsDMABufEnabled() { return mIsDMABufEnabled; }; static bool IsDMABufEnabled() { return mIsDMABufEnabled; };
#endif
private: private:
#ifdef HAVE_LIBDRM
bool ConfigureGbm(); bool ConfigureGbm();
#endif
MessageLoop* mDispatcherThreadLoop; MessageLoop* mDispatcherThreadLoop;
PRThread* mThreadId; PRThread* mThreadId;
@ -93,7 +87,6 @@ class nsWaylandDisplay {
wl_shm* mShm; wl_shm* mShm;
gtk_primary_selection_device_manager* mPrimarySelectionDeviceManager; gtk_primary_selection_device_manager* mPrimarySelectionDeviceManager;
wl_registry* mRegistry; wl_registry* mRegistry;
#ifdef HAVE_LIBDRM
zwp_linux_dmabuf_v1* mDmabuf; zwp_linux_dmabuf_v1* mDmabuf;
gbm_device* mGbmDevice; gbm_device* mGbmDevice;
int mGbmFd; int mGbmFd;
@ -103,14 +96,12 @@ class nsWaylandDisplay {
bool mExplicitSync; bool mExplicitSync;
static bool mIsDMABufEnabled; static bool mIsDMABufEnabled;
static bool mIsDMABufPrefLoaded; static bool mIsDMABufPrefLoaded;
#endif
}; };
void WaylandDispatchDisplays(); void WaylandDispatchDisplays();
void WaylandDisplayShutdown(); void WaylandDisplayShutdown();
nsWaylandDisplay* WaylandDisplayGet(GdkDisplay* aGdkDisplay = nullptr); nsWaylandDisplay* WaylandDisplayGet(GdkDisplay* aGdkDisplay = nullptr);
#ifdef HAVE_LIBDRM
typedef struct gbm_device* (*CreateDeviceFunc)(int); typedef struct gbm_device* (*CreateDeviceFunc)(int);
typedef struct gbm_bo* (*CreateFunc)(struct gbm_device*, uint32_t, uint32_t, typedef struct gbm_bo* (*CreateFunc)(struct gbm_device*, uint32_t, uint32_t,
uint32_t, uint32_t); uint32_t, uint32_t);
@ -199,7 +190,6 @@ class nsGbmLib {
static void* sXf86DrmLibHandle; static void* sXf86DrmLibHandle;
static bool sLibLoaded; static bool sLibLoaded;
}; };
#endif
} // namespace widget } // namespace widget
} // namespace mozilla } // namespace mozilla