fix build with glfw < 3.4

This commit is contained in:
DH 2024-10-15 20:16:47 +03:00
parent 08f73b28c3
commit 7d4380b242

View file

@ -67,24 +67,30 @@ static vk::Context createVkContext(Device *device) {
rx::die("failed to reserve userspace memory"); 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)) { if (glfwPlatformSupported(GLFW_PLATFORM_WAYLAND)) {
glfwInitHint(GLFW_PLATFORM, GLFW_PLATFORM_WAYLAND); glfwInitHint(GLFW_PLATFORM, GLFW_PLATFORM_WAYLAND);
} }
glfwInit(); glfwInit();
glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); createWindow();
device->window = glfwCreateWindow(1920, 1080, "RPCSX", nullptr, nullptr);
if (device->window == nullptr) { if (device->window == nullptr) {
glfwTerminate(); glfwTerminate();
glfwInitHint(GLFW_PLATFORM, GLFW_ANY_PLATFORM); glfwInitHint(GLFW_PLATFORM, GLFW_ANY_PLATFORM);
glfwInit(); glfwInit();
createWindow();
glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
device->window = glfwCreateWindow(1920, 1080, "RPCSX", nullptr, nullptr);
} }
#else
glfwInit();
createWindow();
#endif
const char **glfwExtensions; const char **glfwExtensions;
uint32_t glfwExtensionCount = 0; uint32_t glfwExtensionCount = 0;
@ -474,8 +480,7 @@ void Device::start() {
} }
} }
void Device::submitCommand(Ring &ring, void Device::submitCommand(Ring &ring, std::span<const std::uint32_t> command) {
std::span<const std::uint32_t> command) {
std::scoped_lock lock(writeCommandMtx); std::scoped_lock lock(writeCommandMtx);
if (ring.wptr + command.size() > ring.base + ring.size) { if (ring.wptr + command.size() > ring.base + ring.size) {
while (ring.wptr != ring.rptr) { 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) { } else if (op == gnm::IT_INDIRECT_BUFFER) {
graphicsPipes[0].setDeQueue( graphicsPipes[0].setDeQueue(
Ring::createFromRange(process.vmId, Ring::createFromRange(process.vmId,
memory.getPointer<std::uint32_t>(address), memory.getPointer<std::uint32_t>(address),
size / sizeof(std::uint32_t)), size / sizeof(std::uint32_t)),
1); 1);
} else { } else {
rx::die("unimplemented command buffer %x", cmdHeader); rx::die("unimplemented command buffer %x", cmdHeader);