From 7d4380b242d0739bf0f4e221dbfd03575a4c8188 Mon Sep 17 00:00:00 2001 From: DH Date: Tue, 15 Oct 2024 20:16:47 +0300 Subject: [PATCH] fix build with glfw < 3.4 --- rpcsx/gpu/Device.cpp | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/rpcsx/gpu/Device.cpp b/rpcsx/gpu/Device.cpp index 8efee25c5..6e053f928 100644 --- a/rpcsx/gpu/Device.cpp +++ b/rpcsx/gpu/Device.cpp @@ -67,24 +67,30 @@ static vk::Context createVkContext(Device *device) { rx::die("failed to reserve userspace memory"); } + auto createWindow = [=] { + glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); + device->window = glfwCreateWindow(1920, 1080, "RPCSX", nullptr, nullptr); + }; + +#ifdef GLFW_PLATFORM_WAYLAND if (glfwPlatformSupported(GLFW_PLATFORM_WAYLAND)) { glfwInitHint(GLFW_PLATFORM, GLFW_PLATFORM_WAYLAND); } glfwInit(); - glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); - - device->window = glfwCreateWindow(1920, 1080, "RPCSX", nullptr, nullptr); + createWindow(); if (device->window == nullptr) { glfwTerminate(); glfwInitHint(GLFW_PLATFORM, GLFW_ANY_PLATFORM); glfwInit(); - - glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); - device->window = glfwCreateWindow(1920, 1080, "RPCSX", nullptr, nullptr); + createWindow(); } +#else + glfwInit(); + createWindow(); +#endif const char **glfwExtensions; uint32_t glfwExtensionCount = 0; @@ -474,8 +480,7 @@ void Device::start() { } } -void Device::submitCommand(Ring &ring, - std::span command) { +void Device::submitCommand(Ring &ring, std::span command) { std::scoped_lock lock(writeCommandMtx); if (ring.wptr + command.size() > ring.base + ring.size) { while (ring.wptr != ring.rptr) { @@ -605,8 +610,8 @@ void Device::onCommandBuffer(std::uint32_t pid, int cmdHeader, } else if (op == gnm::IT_INDIRECT_BUFFER) { graphicsPipes[0].setDeQueue( Ring::createFromRange(process.vmId, - memory.getPointer(address), - size / sizeof(std::uint32_t)), + memory.getPointer(address), + size / sizeof(std::uint32_t)), 1); } else { rx::die("unimplemented command buffer %x", cmdHeader);