Hash :
9ad43bdd
Author :
Date :
2021-12-09T16:52:35
Re-land: "Vulkan: Support Wayland" Implement DisplayVkWayland and WindowSurfaceVkWayland. Get window size from native window and check egl config is just empty. An EGL wayland test is added for testing rendering and buffers swapping. Re-land fixes: - link failure in systems with no libwayland installed. - XCB display availability check. Bug: angleproject:6902 Change-Id: I5daecf3591493308ac71a7dd3bc0802f492e6fed Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3621059 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
//
// Copyright 2022 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// WaylandWindow.h: Definition of the implementation of OSWindow for Wayland
#ifndef UTIL_WAYLAND_WINDOW_H
#define UTIL_WAYLAND_WINDOW_H
#include <poll.h>
#include <wayland-client.h>
#include <wayland-egl-core.h>
#include "util/OSWindow.h"
#include "util/util_export.h"
bool IsWaylandWindowAvailable();
class ANGLE_UTIL_EXPORT WaylandWindow : public OSWindow
{
public:
WaylandWindow();
~WaylandWindow() override;
void disableErrorMessageDialog() override;
void destroy() override;
void resetNativeWindow() override;
EGLNativeWindowType getNativeWindow() const override;
EGLNativeDisplayType getNativeDisplay() const override;
void messageLoop() override;
void setMousePosition(int x, int y) override;
bool setOrientation(int width, int height) override;
bool setPosition(int x, int y) override;
bool resize(int width, int height) override;
void setVisible(bool isVisible) override;
void signalTestEvent() override;
private:
static void RegistryHandleGlobal(void *data,
struct wl_registry *registry,
uint32_t name,
const char *interface,
uint32_t version);
static void RegistryHandleGlobalRemove(void *data, struct wl_registry *registry, uint32_t name);
bool initializeImpl(const std::string &name, int width, int height) override;
static const struct wl_registry_listener registryListener;
struct wl_display *mDisplay;
struct wl_compositor *mCompositor;
struct wl_surface *mSurface;
struct wl_egl_window *mWindow;
struct pollfd fds[1];
};
#endif // UTIL_WAYLAND_WINDOW_H