Skip to content

Add CI for SIGGRAPH 2026 tutorial - #517

Draft
SaschaWillems wants to merge 10 commits into
mainfrom
siggraph_tutorial_ci
Draft

SaschaWillems wants to merge 10 commits into
mainfrom
siggraph_tutorial_ci

Conversation

@SaschaWillems

Copy link
Copy Markdown
Collaborator

There is no CI yet for the SIGGRAPH 2026 tutorial, so if anything breaks (like in #513), we're not noticing that. This PR adds CI for the SIGGRAPH 2026 tutorial to close that gap.

Note: Currently a draft.

@SaschaWillems

SaschaWillems commented Sep 17, 2026

Copy link
Copy Markdown
Collaborator Author

Interestingly this fails on Linux, not due to an issue with CI, but an actual issue with the code itself. So adding CI for this already seems to show benefits :)

@iagoCL

iagoCL commented Sep 18, 2026

Copy link
Copy Markdown
Collaborator

Thank you very much for adding the CI workflow. I think it will be useful going forward.

I tried building the tutorial again on my Linux machine. It initially compiled successfully, but after updating Clang I was able to partially reproduce the issue.

I can fix the part I reproduced with the following change:

diff --git a/attachments/siggraph2026_vk_tutorial/src/main.cpp b/attachments/siggraph2026_vk_tutorial/src/main.cpp
index e44ed50..f0f0d94 100644
--- a/attachments/siggraph2026_vk_tutorial/src/main.cpp
+++ b/attachments/siggraph2026_vk_tutorial/src/main.cpp
@@ -538,7 +538,7 @@ void Application::initVulkanVKB()

         // Store format and extent of the swapchain images for later use.
         {
-            m_swapchainFormat = vk::Format{m_vkbData.m_swapchain.image_format};
+            m_swapchainFormat = static_cast<vk::Format>(m_vkbData.m_swapchain.image_format);
             m_swapchainExtent = vk::Extent2D{
                 .width = m_vkbData.m_swapchain.extent.width,
                 .height = m_vkbData.m_swapchain.extent.height,

I am not sure why this does not trigger on Windows, but I think we can simply fix it.

When using Vulkan, I do not think we should have to specify every initializer. Designated initializers make Vulkan code significantly less verbose and allow us to omit pNext and other unnecessary fields.

In theory, -Wno-missing-designated-field-initializers should solve the problem by allowing unused fields to be omitted when designated initializers are used.

Which version of Clang is installed in CI?

warning: unknown warning option '-Wno-missing-designated-field-initializers'; did you mean '-Wno-missing-field-initializers'? [-Wunknown-warning-option]

As a workaround, we could also disable -Wmissing-field-initializers for the Linux Clang build, although I do not think this should be necessary:

diff --git a/attachments/siggraph2026_vk_tutorial/CMakeLists.txt b/attachments/siggraph2026_vk_tutorial/CMakeLists.txt
index 88cdda9..734b66f 100644
--- a/attachments/siggraph2026_vk_tutorial/CMakeLists.txt
+++ b/attachments/siggraph2026_vk_tutorial/CMakeLists.txt
@@ -293,7 +293,7 @@ if(MSVC)
 else()
   target_compile_options(vulkan_siggraph PRIVATE -Wall -Wextra -Wpedantic)
   if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
-    target_compile_options(vulkan_siggraph PRIVATE -Wno-missing-designated-field-initializers)
+    target_compile_options(vulkan_siggraph PRIVATE -Wno-missing-designated-field-initializers -Wno-missing-field-initializers)
   endif()
 endif()

@SaschaWillems

Copy link
Copy Markdown
Collaborator Author

Looking at the CI failure, I don't think that the issue is caused by the missing initializers. That does cause a few warnings, but the error is an actual type conversion error:

  541 |             m_swapchainFormat = vk::Format{m_vkbData.m_swapchain.image_format};

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants