Fixing glfw package breaking changes

This commit is contained in:
2026-04-06 17:29:55 +02:00
parent 87390db80d
commit ace1554020
6 changed files with 20 additions and 14 deletions
-2
View File
@@ -1,2 +0,0 @@
(?<enum>[A-Z_]*) = [0-9]*,
case SE_${enum}:\nreturn VK_${enum};
-4
View File
@@ -1,4 +0,0 @@
// Hint files help the Visual Studio IDE interpret Visual C++ identifiers
// such as names of functions and macros.
// For more information see https://go.microsoft.com/fwlink/?linkid=865984
#define DECLARE_REF(x)
+5
View File
@@ -688,6 +688,11 @@ Array<const char*> Graphics::getRequiredExtensions() {
}
void Graphics::initInstance(GraphicsInitializer initInfo) {
#if defined(GLFW_WAYLAND_LIBDECOR) && defined(GLFW_WAYLAND_DISABLE_LIBDECOR)
// Work around libdecor runtime regressions on some Wayland stacks.
glfwInitHint(GLFW_WAYLAND_LIBDECOR, GLFW_WAYLAND_DISABLE_LIBDECOR);
#endif
if (!glfwInit()) {
throw std::runtime_error("Failed to initialize GLFW");
}
-2
View File
@@ -1,8 +1,6 @@
#include "Resources.h"
#include "Command.h"
#include "Enums.h"
#include "Graphics.h"
#include "Window.h"
using namespace Seele;
using namespace Seele::Vulkan;
+9 -4
View File
@@ -61,6 +61,7 @@ Window::Window(PGraphics graphics, const WindowCreateInfo& createInfo)
glfwGetMonitorContentScale(glfwGetPrimaryMonitor(), &contentScaleX, &contentScaleY);
glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE);
glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);
GLFWwindow* handle = glfwCreateWindow(createInfo.width / contentScaleX, createInfo.height / contentScaleY, createInfo.title, nullptr, nullptr);
if (handle == nullptr) {
const char* glfwError = nullptr;
@@ -125,6 +126,9 @@ void Window::beginFrame() {
imageAvailableFences[currentSemaphoreIndex]->getHandle(), &currentImageIndex));
imageAvailableSemaphores[currentSemaphoreIndex]->encodeSignal();
imageAvailableFences[currentSemaphoreIndex]->submit();
// The image was reacquired, so the previous presentation using this image's
// renderDone semaphore has completed and it can be safely reused
renderingDoneSemaphores[currentImageIndex]->resolveSignal();
graphics->getGraphicsCommands()->getCommands()->waitForSemaphore(VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
imageAvailableSemaphores[currentSemaphoreIndex]);
static double start = glfwGetTime();
@@ -138,9 +142,9 @@ void Window::endFrame() {
swapChainTextures[currentImageIndex]->changeLayout(Gfx::SE_IMAGE_LAYOUT_PRESENT_SRC_KHR, Gfx::SE_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
Gfx::SE_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, Gfx::SE_ACCESS_MEMORY_READ_BIT,
Gfx::SE_PIPELINE_STAGE_TOP_OF_PIPE_BIT);
renderingDoneSemaphores[currentSemaphoreIndex]->rotateSemaphore();
graphics->getGraphicsCommands()->submitCommands(renderingDoneSemaphores[currentSemaphoreIndex]);
VkSemaphore renderDoneHandle = renderingDoneSemaphores[currentSemaphoreIndex]->getHandle();
renderingDoneSemaphores[currentImageIndex]->rotateSemaphore();
graphics->getGraphicsCommands()->submitCommands(renderingDoneSemaphores[currentImageIndex]);
VkSemaphore renderDoneHandle = renderingDoneSemaphores[currentImageIndex]->getHandle();
VkPresentInfoKHR presentInfo = {
.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
.pNext = nullptr,
@@ -158,7 +162,7 @@ void Window::endFrame() {
} else {
VK_CHECK(r);
}
renderingDoneSemaphores[currentSemaphoreIndex]->resolveSignal();
renderingDoneSemaphores[currentImageIndex]->encodeSignal();
currentSemaphoreIndex = (currentSemaphoreIndex + 1) % Gfx::numFramesBuffered;
currentFrameIndex = currentSemaphoreIndex;
// graphics->waitDeviceIdle();
@@ -270,6 +274,7 @@ void Window::chooseSwapExtent() {
}
void Window::createSwapChain() {
graphics->waitDeviceIdle();
uint32 imageCount = Gfx::numFramesBuffered;
VkSwapchainCreateInfoKHR createInfo = {
.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,
+6 -2
View File
@@ -3,7 +3,6 @@
{
"name": "vulkan"
},
"vulkan-loader",
{
"name": "vulkan-memory-allocator"
},
@@ -11,7 +10,12 @@
"stb",
"entt",
"freetype",
"glfw3",
{
"name": "glfw3",
"features": [
"wayland"
]
},
"glm",
"ktx",
"nlohmann-json",