# "Helper" targets that don't have interesting source code should set their FOLDER property to this
set(TOOLS_HELPER_FOLDER "Helper Targets")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_COMPILE_FLAGS} -Wno-shadow -Wno-cast-align")
+
# ~~~
# Find Vulkan Headers and Loader
# Search order:
#elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
#include <linux/input.h>
#include "xdg-shell-client-header.h"
-#include "xdg-decoration-client-header.h"
+//#include "xdg-decoration-client-header.h"
#endif
#ifdef _WIN32
struct xdg_wm_base *xdg_wm_base;
struct zxdg_decoration_manager_v1 *xdg_decoration_mgr;
struct zxdg_toplevel_decoration_v1 *toplevel_decoration;
- struct xdg_surface *xdg_surface;
+ struct wl_shell_surface *xdg_surface;
int xdg_surface_has_been_configured;
struct xdg_toplevel *xdg_toplevel;
struct wl_seat *seat;
struct wl_pointer *pointer;
struct wl_keyboard *keyboard;
+ struct wl_shell *shell;
#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT)
IDirectFB *dfb;
IDirectFBSurface *window;
if (demo->keyboard) wl_keyboard_destroy(demo->keyboard);
if (demo->pointer) wl_pointer_destroy(demo->pointer);
if (demo->seat) wl_seat_destroy(demo->seat);
- xdg_toplevel_destroy(demo->xdg_toplevel);
- xdg_surface_destroy(demo->xdg_surface);
+ //xdg_toplevel_destroy(demo->xdg_toplevel);
+ //xdg_surface_destroy(demo->xdg_surface);
wl_surface_destroy(demo->window);
- xdg_wm_base_destroy(demo->xdg_wm_base);
+ /*xdg_wm_base_destroy(demo->xdg_wm_base);
if (demo->xdg_decoration_mgr) {
zxdg_toplevel_decoration_v1_destroy(demo->toplevel_decoration);
zxdg_decoration_manager_v1_destroy(demo->xdg_decoration_mgr);
- }
+ }*/
wl_compositor_destroy(demo->compositor);
wl_registry_destroy(demo->registry);
wl_display_disconnect(demo->display);
}
}
-static void handle_surface_configure(void *data, struct xdg_surface *xdg_surface, uint32_t serial) {
- struct demo *demo = (struct demo *)data;
- xdg_surface_ack_configure(xdg_surface, serial);
- if (demo->xdg_surface_has_been_configured) {
- demo_resize(demo);
- }
- demo->xdg_surface_has_been_configured = 1;
+
+static void PingCb(void *data, struct wl_shell_surface *shell_surface,
+ uint32_t serial)
+{
+ wl_shell_surface_pong(shell_surface, serial);
}
-static const struct xdg_surface_listener xdg_surface_listener = {handle_surface_configure};
+static void ConfigureCb(void *data, struct wl_shell_surface *shell_surface,
+ uint32_t edges, int32_t width, int32_t height)
+{
-static void handle_toplevel_configure(void *data, struct xdg_toplevel *xdg_toplevel UNUSED, int32_t width, int32_t height,
- struct wl_array *states UNUSED) {
- struct demo *demo = (struct demo *)data;
- /* zero values imply the program may choose its own size, so in that case
- * stay with the existing value (which on startup is the default) */
- if (width > 0) {
- demo->width = width;
- }
- if (height > 0) {
- demo->height = height;
- }
- /* This should be followed by a surface configure */
}
-static void handle_toplevel_close(void *data, struct xdg_toplevel *xdg_toplevel UNUSED) {
- struct demo *demo = (struct demo *)data;
- demo->quit = true;
+static void PopupDoneCb(void *data, struct wl_shell_surface *shell_surface)
+{
+
}
-static const struct xdg_toplevel_listener xdg_toplevel_listener = {handle_toplevel_configure, handle_toplevel_close};
static void demo_create_window(struct demo *demo) {
- if (!demo->xdg_wm_base) {
- printf("Compositor did not provide the standard protocol xdg-wm-base\n");
+ if (!demo->shell) {
+ printf("Compositor did not provide the standard protocol\n");
fflush(stdout);
exit(1);
}
exit(1);
}
- demo->xdg_surface = xdg_wm_base_get_xdg_surface(demo->xdg_wm_base, demo->window);
+ demo->xdg_surface = wl_shell_get_shell_surface(demo->shell,
+ demo->window);
+ static const struct wl_shell_surface_listener shell_surface_listener =
+ {PingCb, ConfigureCb, PopupDoneCb};
+ wl_shell_surface_add_listener(demo->xdg_surface, &shell_surface_listener, demo);
+ wl_shell_surface_set_toplevel(demo->xdg_surface);
+ wl_shell_surface_set_title(demo->xdg_surface, APP_SHORT_NAME);
+ /*demo->xdg_surface = xdg_wm_base_get_xdg_surface(demo->xdg_wm_base, demo->window);
if (!demo->xdg_surface) {
printf("Can not get xdg_surface from wayland_surface!\n");
fflush(stdout);
demo->toplevel_decoration =
zxdg_decoration_manager_v1_get_toplevel_decoration(demo->xdg_decoration_mgr, demo->xdg_toplevel);
zxdg_toplevel_decoration_v1_set_mode(demo->toplevel_decoration, ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE);
- }
+ }*/
wl_surface_commit(demo->window);
}
uint32_t state) {
struct demo *demo = data;
if (button == BTN_LEFT && state == WL_POINTER_BUTTON_STATE_PRESSED) {
- xdg_toplevel_move(demo->xdg_toplevel, demo->seat, serial);
+ //xdg_toplevel_move(demo->xdg_toplevel, demo->seat, serial);
}
}
seat_handle_capabilities,
};
-static void wm_base_ping(void *data UNUSED, struct xdg_wm_base *xdg_wm_base, uint32_t serial) {
+/*static void wm_base_ping(void *data UNUSED, struct xdg_wm_base *xdg_wm_base, uint32_t serial) {
xdg_wm_base_pong(xdg_wm_base, serial);
}
-static const struct xdg_wm_base_listener wm_base_listener = {wm_base_ping};
+static const struct xdg_wm_base_listener wm_base_listener = {wm_base_ping};*/
static void registry_handle_global(void *data, struct wl_registry *registry, uint32_t id, const char *interface,
uint32_t version UNUSED) {
fprintf(stderr, "Wayland compositor doesn't support VK_KHR_incremental_present, disabling.\n");
demo->VK_KHR_incremental_present_enabled = false;
}
- } else if (strcmp(interface, xdg_wm_base_interface.name) == 0) {
+ } else if (strcmp(interface, "wl_shell") == 0)
+ {
+ demo->shell = (struct wl_shell *)wl_registry_bind(registry, id,
+ &wl_shell_interface, 1);
+ }
+ /*else if (strcmp(interface, xdg_wm_base_interface.name) == 0) {
demo->xdg_wm_base = wl_registry_bind(registry, id, &xdg_wm_base_interface, 1);
xdg_wm_base_add_listener(demo->xdg_wm_base, &wm_base_listener, NULL);
- } else if (strcmp(interface, wl_seat_interface.name) == 0) {
+ } */else if (strcmp(interface, wl_seat_interface.name) == 0) {
demo->seat = wl_registry_bind(registry, id, &wl_seat_interface, 1);
wl_seat_add_listener(demo->seat, &seat_listener, demo);
- } else if (strcmp(interface, zxdg_decoration_manager_v1_interface.name) == 0) {
+ } /*else if (strcmp(interface, zxdg_decoration_manager_v1_interface.name) == 0) {
demo->xdg_decoration_mgr = wl_registry_bind(registry, id, &zxdg_decoration_manager_v1_interface, 1);
- }
+ }*/
}
static void registry_handle_global_remove(void *data UNUSED, struct wl_registry *registry UNUSED, uint32_t name UNUSED) {}
#elif defined(VK_USE_PLATFORM_WAYLAND_KHR)
#include <linux/input.h>
#include "xdg-shell-client-header.h"
-#include "xdg-decoration-client-header.h"
+//#include "xdg-decoration-client-header.h"
#endif
#include <cassert>
wl_registry *registry = nullptr;
wl_compositor *compositor = nullptr;
wl_surface *window = nullptr;
- xdg_wm_base *wm_base = nullptr;
- zxdg_decoration_manager_v1 *xdg_decoration_mgr = nullptr;
- zxdg_toplevel_decoration_v1 *toplevel_decoration = nullptr;
- xdg_surface *window_surface = nullptr;
+ //xdg_wm_base *wm_base = nullptr;
+ //zxdg_decoration_manager_v1 *xdg_decoration_mgr = nullptr;
+ //zxdg_toplevel_decoration_v1 *toplevel_decoration = nullptr;
+ //xdg_surface *window_surface = nullptr;
bool xdg_surface_has_been_configured = false;
- xdg_toplevel *window_toplevel = nullptr;
+ //xdg_toplevel *window_toplevel = nullptr;
wl_seat *seat = nullptr;
wl_pointer *pointer = nullptr;
wl_keyboard *keyboard = nullptr;
+ wl_shell *shell;
+ wl_shell_surface *window_surface;
#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT)
IDirectFB *dfb = nullptr;
IDirectFBSurface *window = nullptr;
static void pointer_handle_button(void *data, struct wl_pointer *wl_pointer, uint32_t serial, uint32_t time, uint32_t button,
uint32_t state) {
- Demo &demo = *static_cast<Demo *>(data);
+ //Demo &demo = *static_cast<Demo *>(data);
if (button == BTN_LEFT && state == WL_POINTER_BUTTON_STATE_PRESSED) {
- xdg_toplevel_move(demo.window_toplevel, demo.seat, serial);
+ //xdg_toplevel_move(demo.window_toplevel, demo.seat, serial);
}
}
// pickup wayland objects when they appear
if (strcmp(interface, wl_compositor_interface.name) == 0) {
demo.compositor = (wl_compositor *)wl_registry_bind(registry, id, &wl_compositor_interface, 1);
- } else if (strcmp(interface, xdg_wm_base_interface.name) == 0) {
+ } else if (strcmp(interface, "wl_shell") == 0) {
+ demo.shell = (struct wl_shell *)wl_registry_bind(registry, id,
+ &wl_shell_interface, 1);
+ } /*else if (strcmp(interface, xdg_wm_base_interface.name) == 0) {
demo.wm_base = (xdg_wm_base *)wl_registry_bind(registry, id, &xdg_wm_base_interface, 1);
xdg_wm_base_add_listener(demo.wm_base, &wm_base_listener, nullptr);
- } else if (strcmp(interface, wl_seat_interface.name) == 0) {
+ } */else if (strcmp(interface, wl_seat_interface.name) == 0) {
demo.seat = (wl_seat *)wl_registry_bind(registry, id, &wl_seat_interface, 1);
wl_seat_add_listener(demo.seat, &seat_listener, &demo);
- } else if (strcmp(interface, zxdg_decoration_manager_v1_interface.name) == 0) {
+ } /*else if (strcmp(interface, zxdg_decoration_manager_v1_interface.name) == 0) {
demo.xdg_decoration_mgr =
(zxdg_decoration_manager_v1 *)wl_registry_bind(registry, id, &zxdg_decoration_manager_v1_interface, 1);
- }
+ }*/
}
static void registry_handle_global_remove(void *data, wl_registry *registry, uint32_t name) {}
if (keyboard) wl_keyboard_destroy(keyboard);
if (pointer) wl_pointer_destroy(pointer);
if (seat) wl_seat_destroy(seat);
- xdg_toplevel_destroy(window_toplevel);
- xdg_surface_destroy(window_surface);
+ //xdg_toplevel_destroy(window_toplevel);
+ //xdg_surface_destroy(window_surface);
+ wl_shell_surface_destroy(window_surface);
wl_surface_destroy(window);
- xdg_wm_base_destroy(wm_base);
+ /*xdg_wm_base_destroy(wm_base);
if (xdg_decoration_mgr) {
zxdg_toplevel_decoration_v1_destroy(toplevel_decoration);
zxdg_decoration_manager_v1_destroy(xdg_decoration_mgr);
- }
+ }*/
wl_compositor_destroy(compositor);
wl_registry_destroy(registry);
wl_display_disconnect(display);
/* Convert ppm image data from header file into RGBA texture image */
#include "lunarg.ppm.h"
-bool Demo::loadTexture(const char *filename, uint8_t *rgba_data, vk::SubresourceLayout &layout, uint32_t &width, uint32_t &height) {
+bool Demo::loadTexture(const char *filename, uint8_t *rgba_data, vk::SubresourceLayout &layout, uint32_t &w, uint32_t &h) {
(void)filename;
char *cPtr;
cPtr = (char *)lunarg_ppm;
}
while (strncmp(cPtr++, "\n", 1))
;
- sscanf(cPtr, "%u %u", &width, &height);
+ sscanf(cPtr, "%u %u", &w, &h);
if (rgba_data == nullptr) {
return true;
}
}
while (strncmp(cPtr++, "\n", 1))
;
- for (uint32_t y = 0; y < height; y++) {
+ for (uint32_t y = 0; y < h; y++) {
uint8_t *rowPtr = rgba_data;
- for (uint32_t x = 0; x < width; x++) {
+ for (uint32_t x = 0; x < w; x++) {
memcpy(rowPtr, cPtr, 3);
rowPtr[3] = 255; /* Alpha of 1 */
rowPtr += 4;
static const xdg_toplevel_listener toplevel_listener = {handle_toplevel_configure, handle_toplevel_close};
+static void PingCb(void *data, struct wl_shell_surface *shell_surface,
+ uint32_t serial)
+{
+ wl_shell_surface_pong(shell_surface, serial);
+}
+
+static void ConfigureCb(void *data, struct wl_shell_surface *shell_surface,
+ uint32_t edges, int32_t width, int32_t height)
+{
+
+}
+
+static void PopupDoneCb(void *data, struct wl_shell_surface *shell_surface)
+{
+
+}
+
void Demo::create_window() {
- if (!wm_base) {
- printf("Compositor did not provide the standard protocol xdg-wm-base\n");
+ if (!shell) {
+ printf("Compositor did not provide the standard protocol\n");
fflush(stdout);
exit(1);
}
exit(1);
}
- window_surface = xdg_wm_base_get_xdg_surface(wm_base, window);
+ window_surface = wl_shell_get_shell_surface(shell, window);
+ static const struct wl_shell_surface_listener shell_surface_listener =
+ {PingCb, ConfigureCb, PopupDoneCb};
+ wl_shell_surface_add_listener(window_surface, &shell_surface_listener, this);
+ wl_shell_surface_set_toplevel(window_surface);
+ wl_shell_surface_set_title(window_surface, APP_SHORT_NAME);
+
+ /*window_surface = xdg_wm_base_get_xdg_surface(wm_base, window);
if (!window_surface) {
printf("Can not get xdg_surface from wayland_surface!\n");
fflush(stdout);
// if supported, let the compositor render titlebars for us
toplevel_decoration = zxdg_decoration_manager_v1_get_toplevel_decoration(xdg_decoration_mgr, window_toplevel);
zxdg_toplevel_decoration_v1_set_mode(toplevel_decoration, ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE);
- }
+ }*/
wl_surface_commit(window);
}
Name: vulkan-tools
-Version: 1.2.179
+Version: 1.3.208
Release: 0
Summary: Vulkan tools
Group: Graphics & UI Framework/GL
BuildRequires: pkgconfig(wayland-cursor)
BuildRequires: pkgconfig(wayland-server)
BuildRequires: pkgconfig(wayland-egl)
+BuildRequires: pkgconfig(wayland-protocols)
%define BUILD_TYPE Debug
-DBUILD_WSI_XLIB_SUPPORT=OFF -DBUILD_WSI_XCB_SUPPORT=OFF -DBUILD_WSI_WAYLAND_SUPPORT=ON \
-DCUBE_WSI_SELECTION=WAYLAND \
-DCMAKE_INSTALL_LIBDIR=%{_libdir} -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \
- -DCMAKE_INSTALL_DATADIR=%{_datadir} -DCMAKE_INSTALL_BINDIR=%{_bindir}
-make
+ -DCMAKE_INSTALL_DATADIR=%{_datadir} -DCMAKE_INSTALL_BINDIR=%{_bindir} .
+make -j6
%install
rm -rf %{buildroot}
%license LICENSE.txt
%defattr(-,root,root,-)
%{_bindir}/*
-