From ccb457ae801d673914441d260d5af89670139b79 Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 12:00:00 +0330 Subject: [PATCH 01/35] ci: revert changes --- .drone.yml | 252 ++++++++++++++++++++++++++--------------------------- 1 file changed, 126 insertions(+), 126 deletions(-) diff --git a/.drone.yml b/.drone.yml index b07adab..9abc962 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,139 +1,139 @@ --- -# kind: pipeline -# type: exec -# name: amd64 — msvc -# trigger: -# branch: -# - main -# platform: -# os: windows -# arch: amd64 -# -# steps: -# - name: unit tests -# shell: powershell -# commands: -# - ./tools/ci/amd64/msvc/unit_tests.ps1 -# -# --- +kind: pipeline +type: exec +name: amd64 — msvc +trigger: + branch: + - main +platform: + os: windows + arch: amd64 + +steps: +- name: unit tests + shell: powershell + commands: + - ./tools/ci/amd64/msvc/unit_tests.ps1 + +--- kind: pipeline type: docker name: amd64 — gcc trigger: branch: - main -# + steps: -# - name: unit tests -# image: ci:latest -# pull: if-not-exists -# commands: -# - ./tools/ci/amd64/gcc/unit_tests.sh -# +- name: unit tests + image: ci:latest + pull: if-not-exists + commands: + - ./tools/ci/amd64/gcc/unit_tests.sh + - name: valgrind image: ci:latest pull: if-not-exists commands: - ./tools/ci/amd64/gcc/valgrind.sh -# -# --- -# kind: pipeline -# type: docker -# name: amd64 — clang -# trigger: -# branch: -# - main -# -# steps: -# - name: code coverage -# image: ci:latest -# pull: if-not-exists -# environment: -# CODECOV_TOKEN: -# from_secret: CODECOV_TOKEN -# commands: -# - ./tools/ci/amd64/clang/coverage.sh -# -# - name: leak sanitizer -# image: ci:latest -# pull: if-not-exists -# commands: -# - ./tools/ci/amd64/clang/lsan.sh -# -# - name: memory sanitizer -# image: ci:latest -# pull: if-not-exists -# commands: -# - ./tools/ci/amd64/clang/msan.sh -# -# --- -# kind: pipeline -# type: docker -# name: static analysis -# trigger: -# branch: -# - main -# -# steps: -# - name: clang tidy -# image: ci:latest -# pull: if-not-exists -# privileged: true -# commands: -# - ./tools/ci/static_analysis/clang_tidy.sh -# -# - name: clang format -# image: ci:latest -# pull: if-not-exists -# commands: -# - ./tools/ci/static_analysis/clang_format.sh -# -# --- -# kind: pipeline -# type: docker -# name: documentation — development -# node: -# environment: ryali -# trigger: -# branch: -# - main -# -# steps: -# - name: build and deploy -# image: documentation:latest -# pull: if-not-exists -# commands: -# - pwd -# - cd docs -# - mkdir generated -# - touch generated/changelogs.rst -# - touch generated/api.rst -# - sphinx-build -M html . . -# -# - rm -rf /light_docs_dev/* -# - mv ./html/* /light_docs_dev/ -# -# --- -# -# kind: pipeline -# type: docker -# name: documentation — production -# node: -# environment: ryali -# trigger: -# event: -# - tag -# -# steps: -# - name: build and deploy -# image: documentation:latest -# pull: if-not-exists -# commands: -# - cd docs -# - mkdir generated -# - touch generated/changelogs.rst -# - touch generated/api.rst -# - sphinx-build -M html . . -# -# - rm -rf /light_docs/* -# - mv ./html/* /light_docs/ + +--- +kind: pipeline +type: docker +name: amd64 — clang +trigger: + branch: + - main + +steps: +- name: code coverage + image: ci:latest + pull: if-not-exists + environment: + CODECOV_TOKEN: + from_secret: CODECOV_TOKEN + commands: + - ./tools/ci/amd64/clang/coverage.sh + +- name: leak sanitizer + image: ci:latest + pull: if-not-exists + commands: + - ./tools/ci/amd64/clang/lsan.sh + +- name: memory sanitizer + image: ci:latest + pull: if-not-exists + commands: + - ./tools/ci/amd64/clang/msan.sh + +--- +kind: pipeline +type: docker +name: static analysis +trigger: + branch: + - main + +steps: +- name: clang tidy + image: ci:latest + pull: if-not-exists + privileged: true + commands: + - ./tools/ci/static_analysis/clang_tidy.sh + +- name: clang format + image: ci:latest + pull: if-not-exists + commands: + - ./tools/ci/static_analysis/clang_format.sh + +--- +kind: pipeline +type: docker +name: documentation — development +node: + environment: ryali +trigger: + branch: + - main + +steps: +- name: build and deploy + image: documentation:latest + pull: if-not-exists + commands: + - pwd + - cd docs + - mkdir generated + - touch generated/changelogs.rst + - touch generated/api.rst + - sphinx-build -M html . . + + - rm -rf /light_docs_dev/* + - mv ./html/* /light_docs_dev/ + +--- + +kind: pipeline +type: docker +name: documentation — production +node: + environment: ryali +trigger: + event: + - tag + +steps: +- name: build and deploy + image: documentation:latest + pull: if-not-exists + commands: + - cd docs + - mkdir generated + - touch generated/changelogs.rst + - touch generated/api.rst + - sphinx-build -M html . . + + - rm -rf /light_docs/* + - mv ./html/* /light_docs/ -- 2.45.3 From 21dbf3fa8fc21e8e8542a6ad79c514bd4307b963 Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 12:01:22 +0330 Subject: [PATCH 02/35] wip --- .drone.yml | 248 ++++++++++++++++++++++++++--------------------------- 1 file changed, 124 insertions(+), 124 deletions(-) diff --git a/.drone.yml b/.drone.yml index 9abc962..fbefc9a 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,41 +1,41 @@ ---- -kind: pipeline -type: exec -name: amd64 — msvc -trigger: - branch: - - main -platform: - os: windows - arch: amd64 - -steps: -- name: unit tests - shell: powershell - commands: - - ./tools/ci/amd64/msvc/unit_tests.ps1 - ---- -kind: pipeline -type: docker -name: amd64 — gcc -trigger: - branch: - - main - -steps: -- name: unit tests - image: ci:latest - pull: if-not-exists - commands: - - ./tools/ci/amd64/gcc/unit_tests.sh - -- name: valgrind - image: ci:latest - pull: if-not-exists - commands: - - ./tools/ci/amd64/gcc/valgrind.sh - +# --- +# kind: pipeline +# type: exec +# name: amd64 — msvc +# trigger: +# branch: +# - main +# platform: +# os: windows +# arch: amd64 +# +# steps: +# - name: unit tests +# shell: powershell +# commands: +# - ./tools/ci/amd64/msvc/unit_tests.ps1 +# +# --- +# kind: pipeline +# type: docker +# name: amd64 — gcc +# trigger: +# branch: +# - main +# +# steps: +# - name: unit tests +# image: ci:latest +# pull: if-not-exists +# commands: +# - ./tools/ci/amd64/gcc/unit_tests.sh +# +# - name: valgrind +# image: ci:latest +# pull: if-not-exists +# commands: +# - ./tools/ci/amd64/gcc/valgrind.sh +# --- kind: pipeline type: docker @@ -45,95 +45,95 @@ trigger: - main steps: -- name: code coverage - image: ci:latest - pull: if-not-exists - environment: - CODECOV_TOKEN: - from_secret: CODECOV_TOKEN - commands: - - ./tools/ci/amd64/clang/coverage.sh - +# - name: code coverage +# image: ci:latest +# pull: if-not-exists +# environment: +# CODECOV_TOKEN: +# from_secret: CODECOV_TOKEN +# commands: +# - ./tools/ci/amd64/clang/coverage.sh +# - name: leak sanitizer image: ci:latest pull: if-not-exists commands: - ./tools/ci/amd64/clang/lsan.sh -- name: memory sanitizer - image: ci:latest - pull: if-not-exists - commands: - - ./tools/ci/amd64/clang/msan.sh - ---- -kind: pipeline -type: docker -name: static analysis -trigger: - branch: - - main - -steps: -- name: clang tidy - image: ci:latest - pull: if-not-exists - privileged: true - commands: - - ./tools/ci/static_analysis/clang_tidy.sh - -- name: clang format - image: ci:latest - pull: if-not-exists - commands: - - ./tools/ci/static_analysis/clang_format.sh - ---- -kind: pipeline -type: docker -name: documentation — development -node: - environment: ryali -trigger: - branch: - - main - -steps: -- name: build and deploy - image: documentation:latest - pull: if-not-exists - commands: - - pwd - - cd docs - - mkdir generated - - touch generated/changelogs.rst - - touch generated/api.rst - - sphinx-build -M html . . - - - rm -rf /light_docs_dev/* - - mv ./html/* /light_docs_dev/ - ---- - -kind: pipeline -type: docker -name: documentation — production -node: - environment: ryali -trigger: - event: - - tag - -steps: -- name: build and deploy - image: documentation:latest - pull: if-not-exists - commands: - - cd docs - - mkdir generated - - touch generated/changelogs.rst - - touch generated/api.rst - - sphinx-build -M html . . - - - rm -rf /light_docs/* - - mv ./html/* /light_docs/ +# - name: memory sanitizer +# image: ci:latest +# pull: if-not-exists +# commands: +# - ./tools/ci/amd64/clang/msan.sh +# +# --- +# kind: pipeline +# type: docker +# name: static analysis +# trigger: +# branch: +# - main +# +# steps: +# - name: clang tidy +# image: ci:latest +# pull: if-not-exists +# privileged: true +# commands: +# - ./tools/ci/static_analysis/clang_tidy.sh +# +# - name: clang format +# image: ci:latest +# pull: if-not-exists +# commands: +# - ./tools/ci/static_analysis/clang_format.sh +# +# --- +# kind: pipeline +# type: docker +# name: documentation — development +# node: +# environment: ryali +# trigger: +# branch: +# - main +# +# steps: +# - name: build and deploy +# image: documentation:latest +# pull: if-not-exists +# commands: +# - pwd +# - cd docs +# - mkdir generated +# - touch generated/changelogs.rst +# - touch generated/api.rst +# - sphinx-build -M html . . +# +# - rm -rf /light_docs_dev/* +# - mv ./html/* /light_docs_dev/ +# +# --- +# +# kind: pipeline +# type: docker +# name: documentation — production +# node: +# environment: ryali +# trigger: +# event: +# - tag +# +# steps: +# - name: build and deploy +# image: documentation:latest +# pull: if-not-exists +# commands: +# - cd docs +# - mkdir generated +# - touch generated/changelogs.rst +# - touch generated/api.rst +# - sphinx-build -M html . . +# +# - rm -rf /light_docs/* +# - mv ./html/* /light_docs/ -- 2.45.3 From 022d2c90e706c8f4544223170a1a6f3312c8597a Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 12:02:59 +0330 Subject: [PATCH 03/35] wip --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index fbefc9a..fee2075 100644 --- a/.drone.yml +++ b/.drone.yml @@ -36,7 +36,7 @@ # commands: # - ./tools/ci/amd64/gcc/valgrind.sh # ---- +# --- kind: pipeline type: docker name: amd64 — clang -- 2.45.3 From 3a20f3986480dfce6e29af65ce6af81e67d96c7c Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 12:06:59 +0330 Subject: [PATCH 04/35] wip --- tools/ci/amd64/clang/lsan.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/ci/amd64/clang/lsan.sh b/tools/ci/amd64/clang/lsan.sh index 5eb5409..f25f703 100755 --- a/tools/ci/amd64/clang/lsan.sh +++ b/tools/ci/amd64/clang/lsan.sh @@ -33,6 +33,10 @@ cmake . \ export LSAN_OPTIONS="suppressions=$(git rev-parse --show-toplevel)/tools/ci/amd64/clang/lsan.supp" for test in $(find ./build -type f -name '*_tests' -executable); do - echo "Running $test" - "$test" + if [[$test == *renderer* ]]; then + echo "Skipping $test" + else + echo "Running $test" + "$test" + fi done -- 2.45.3 From f4969685f693a257ed0cd25fab0c5e700bebc66b Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 12:09:37 +0330 Subject: [PATCH 05/35] wip --- tools/ci/amd64/clang/lsan.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tools/ci/amd64/clang/lsan.sh b/tools/ci/amd64/clang/lsan.sh index f25f703..d815bea 100755 --- a/tools/ci/amd64/clang/lsan.sh +++ b/tools/ci/amd64/clang/lsan.sh @@ -33,9 +33,7 @@ cmake . \ export LSAN_OPTIONS="suppressions=$(git rev-parse --show-toplevel)/tools/ci/amd64/clang/lsan.supp" for test in $(find ./build -type f -name '*_tests' -executable); do - if [[$test == *renderer* ]]; then - echo "Skipping $test" - else + if [[ $var != *render* ]]; then echo "Running $test" "$test" fi -- 2.45.3 From 16e2776bf492469717ec94a2988a21623ccf1d8b Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 12:12:39 +0330 Subject: [PATCH 06/35] wip --- tools/ci/amd64/clang/lsan.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tools/ci/amd64/clang/lsan.sh b/tools/ci/amd64/clang/lsan.sh index d815bea..80c2bae 100755 --- a/tools/ci/amd64/clang/lsan.sh +++ b/tools/ci/amd64/clang/lsan.sh @@ -32,9 +32,12 @@ cmake . \ export LSAN_OPTIONS="suppressions=$(git rev-parse --show-toplevel)/tools/ci/amd64/clang/lsan.supp" + for test in $(find ./build -type f -name '*_tests' -executable); do - if [[ $var != *render* ]]; then - echo "Running $test" + if [[ $test == './build/modules/renderer/renderer_tests' ]]; then + echo "Skipping $test" + else "$test" + echo "Running $test" fi done -- 2.45.3 From bffd2a04c2bfee25b190d5e84eaf4bf2592e10cc Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 12:13:43 +0330 Subject: [PATCH 07/35] wip --- tools/ci/amd64/clang/lsan.sh | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/tools/ci/amd64/clang/lsan.sh b/tools/ci/amd64/clang/lsan.sh index 80c2bae..53db3ed 100755 --- a/tools/ci/amd64/clang/lsan.sh +++ b/tools/ci/amd64/clang/lsan.sh @@ -31,13 +31,7 @@ cmake . \ && cmake --build ./build -j`nproc` export LSAN_OPTIONS="suppressions=$(git rev-parse --show-toplevel)/tools/ci/amd64/clang/lsan.supp" - - for test in $(find ./build -type f -name '*_tests' -executable); do - if [[ $test == './build/modules/renderer/renderer_tests' ]]; then - echo "Skipping $test" - else - "$test" - echo "Running $test" - fi + echo "Running $test" + "$test" done -- 2.45.3 From c1cf35b2af9b80275d7bdf495af13b3a2ff515cc Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 12:42:17 +0330 Subject: [PATCH 08/35] wip --- tools/ci/amd64/clang/lsan.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/ci/amd64/clang/lsan.sh b/tools/ci/amd64/clang/lsan.sh index 53db3ed..348ec07 100755 --- a/tools/ci/amd64/clang/lsan.sh +++ b/tools/ci/amd64/clang/lsan.sh @@ -30,7 +30,8 @@ cmake . \ -Wl,-rpath,/libcxx_lsan/lib" \ && cmake --build ./build -j`nproc` -export LSAN_OPTIONS="suppressions=$(git rev-parse --show-toplevel)/tools/ci/amd64/clang/lsan.supp" +export LSAN_OPTIONS="suppressions=$(git rev-parse --show-toplevel)/tools/ci/amd64/clang/lsan.supp:fast_unwind_on_malloc=0" +export LSAN_SYMBOLIZER_PATH="$(which llvm-symbolizer)" for test in $(find ./build -type f -name '*_tests' -executable); do echo "Running $test" "$test" -- 2.45.3 From de2a7f7e14b46ac26d4a775a71deb45fabd876e1 Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 13:10:03 +0330 Subject: [PATCH 09/35] wip --- .../private/backend/vk/context/instance.cpp | 14 +++++++------- tools/ci/amd64/clang/lsan.sh | 3 ++- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/modules/renderer/private/backend/vk/context/instance.cpp b/modules/renderer/private/backend/vk/context/instance.cpp index b63f871..bffd4b0 100644 --- a/modules/renderer/private/backend/vk/context/instance.cpp +++ b/modules/renderer/private/backend/vk/context/instance.cpp @@ -231,11 +231,11 @@ void Instance::initialize_instance() void Instance::load_library() { - library = dlopen("libvulkan.so.1", RTLD_NOW | RTLD_LOCAL); - if(!library) - { - library = dlopen("libvulkan.so", RTLD_NOW | RTLD_LOCAL | RTLD_NODELETE); - } + library = dlopen("libvulkan.so.1", RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE); + if (!library) + { + library = dlopen("libvulkan.so", RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE); + } ensure(library, "Failed to dlopen vulkan library"); // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) @@ -256,8 +256,8 @@ void Instance::unload_library() // eg. https://github.com/google/sanitizers/issues/89 // with no noticable gains, so we just don't bother closing it. - // dlclose(library); - // library = nullptr; + dlclose(library); + library = nullptr; } void Instance::load_global_functions() diff --git a/tools/ci/amd64/clang/lsan.sh b/tools/ci/amd64/clang/lsan.sh index 348ec07..265bd34 100755 --- a/tools/ci/amd64/clang/lsan.sh +++ b/tools/ci/amd64/clang/lsan.sh @@ -17,6 +17,7 @@ cmake . \ -DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_CXX_FLAGS=" \ -fsanitize=leak \ +-fno-common \ -g \ -fno-omit-frame-pointer \ -std=c++23 \ @@ -30,7 +31,7 @@ cmake . \ -Wl,-rpath,/libcxx_lsan/lib" \ && cmake --build ./build -j`nproc` -export LSAN_OPTIONS="suppressions=$(git rev-parse --show-toplevel)/tools/ci/amd64/clang/lsan.supp:fast_unwind_on_malloc=0" +export LSAN_OPTIONS="suppressions=$(git rev-parse --show-toplevel)/tools/ci/amd64/clang/lsan.supp:fast_unwind_on_malloc=0:verbosity=1:report_objects=1" export LSAN_SYMBOLIZER_PATH="$(which llvm-symbolizer)" for test in $(find ./build -type f -name '*_tests' -executable); do echo "Running $test" -- 2.45.3 From 13ed750f68c09ae184f2e66284f3dedfc016352e Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 13:26:24 +0330 Subject: [PATCH 10/35] wip --- modules/renderer/private/backend/vk/context/instance.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/renderer/private/backend/vk/context/instance.cpp b/modules/renderer/private/backend/vk/context/instance.cpp index bffd4b0..9211180 100644 --- a/modules/renderer/private/backend/vk/context/instance.cpp +++ b/modules/renderer/private/backend/vk/context/instance.cpp @@ -231,10 +231,11 @@ void Instance::initialize_instance() void Instance::load_library() { - library = dlopen("libvulkan.so.1", RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE); + constexpr auto runtime_loader_flags = RTLD_NOW | RTLD_DEEPBIND | RTLD_LOCAL | RTLD_NODELETE; + library = dlopen("libvulkan.so.1", runtime_loader_flags); if (!library) { - library = dlopen("libvulkan.so", RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE); + library = dlopen("libvulkan.so", runtime_loader_flags); } ensure(library, "Failed to dlopen vulkan library"); @@ -256,8 +257,8 @@ void Instance::unload_library() // eg. https://github.com/google/sanitizers/issues/89 // with no noticable gains, so we just don't bother closing it. - dlclose(library); - library = nullptr; + // dlclose(library); + // library = nullptr; } void Instance::load_global_functions() -- 2.45.3 From a1bdb0005fe08265d83b3121889cf7ad42ecd091 Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 13:39:59 +0330 Subject: [PATCH 11/35] wip --- .../private/backend/vk/context/device.cpp | 12 +++++++++-- .../private/backend/vk/renderer/pass.cpp | 20 +++++++++---------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/modules/renderer/private/backend/vk/context/device.cpp b/modules/renderer/private/backend/vk/context/device.cpp index 3b069d8..50647b5 100644 --- a/modules/renderer/private/backend/vk/context/device.cpp +++ b/modules/renderer/private/backend/vk/context/device.cpp @@ -40,8 +40,16 @@ Device::~Device() return; } - vkc(vk_device_wait_idle(m_device)); - vk_destroy_device(m_device, nullptr); + try + { + vkc(vk_device_wait_idle(m_device)); + vk_destroy_device(m_device, nullptr); + } + catch (const std::exception &exp) + { + log_err("Failed to destroy vk device:"); + log_err("\twhat: {}", exp.what()); + } } void Device::initialize_logical_device() diff --git a/modules/renderer/private/backend/vk/renderer/pass.cpp b/modules/renderer/private/backend/vk/renderer/pass.cpp index 7b7d3af..5dd47e9 100644 --- a/modules/renderer/private/backend/vk/renderer/pass.cpp +++ b/modules/renderer/private/backend/vk/renderer/pass.cpp @@ -10,7 +10,15 @@ Pass::Pass( const lt::assets::ShaderAsset &vertex_shader, const lt::assets::ShaderAsset &fragment_shader ) - : m_device(static_cast(device)) + : m_device(static_cast(device)), m_layout(m_device->create_pipeline_layout( + VkPipelineLayoutCreateInfo { + .sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, + .setLayoutCount = 0u, + .pSetLayouts = nullptr, + .pushConstantRangeCount = 0u, + .pPushConstantRanges = nullptr, + } + )) { auto *vertex_module = create_module( vertex_shader.unpack(lt::assets::ShaderAsset::BlobTag::code) @@ -103,15 +111,7 @@ Pass::Pass( .blendConstants = { 0.0f, 0.0, 0.0, 0.0 }, }; - m_layout = m_device->create_pipeline_layout( - VkPipelineLayoutCreateInfo { - .sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, - .setLayoutCount = 0u, - .pSetLayouts = nullptr, - .pushConstantRangeCount = 0u, - .pPushConstantRanges = nullptr, - } - ); + auto attachment_description = VkAttachmentDescription { .format = static_cast(swapchain)->get_format(), -- 2.45.3 From e204a509d420024a80ed08cd67ed89eeea0a785b Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 13:44:32 +0330 Subject: [PATCH 12/35] wip --- modules/renderer/private/frontend/context/surface.test.cpp | 1 - modules/renderer/private/frontend/renderer/pass.test.cpp | 6 ++++++ modules/renderer/private/system.cpp | 3 +-- modules/renderer/private/test/utils.hpp | 1 + 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/modules/renderer/private/frontend/context/surface.test.cpp b/modules/renderer/private/frontend/context/surface.test.cpp index 9ebeb91..2149582 100644 --- a/modules/renderer/private/frontend/context/surface.test.cpp +++ b/modules/renderer/private/frontend/context/surface.test.cpp @@ -8,7 +8,6 @@ using ::lt::ecs::EntityId; using ::lt::ecs::Registry; -using ::lt::surface::SurfaceComponent; Suite raii = "surface"_suite = [] { Case { "happy path won't throw" } = [&] { diff --git a/modules/renderer/private/frontend/renderer/pass.test.cpp b/modules/renderer/private/frontend/renderer/pass.test.cpp index 30b24b0..34aac1f 100644 --- a/modules/renderer/private/frontend/renderer/pass.test.cpp +++ b/modules/renderer/private/frontend/renderer/pass.test.cpp @@ -1,7 +1,10 @@ #include +#include #include #include +using ::lt::renderer::IMessenger; + Suite raii = "pass_raii"_suite = [] { Case { "happy path won't throw" } = [] { auto fixture = Fixture_RendererSystem {}; @@ -14,6 +17,9 @@ Suite raii = "pass_raii"_suite = [] { lt::assets::ShaderAsset { "./data/test_assets/triangle.vert.asset" }, lt::assets::ShaderAsset { "./data/test_assets/triangle.frag.asset" } ); + + expect_false(fixture.has_any_messages_of(IMessenger ::MessageSeverity::error)); + expect_false(fixture.has_any_messages_of(IMessenger ::MessageSeverity::warning)); }; Case { "unhappy path throws" } = [] { diff --git a/modules/renderer/private/system.cpp b/modules/renderer/private/system.cpp index 36a0367..97a01be 100644 --- a/modules/renderer/private/system.cpp +++ b/modules/renderer/private/system.cpp @@ -47,8 +47,7 @@ System::System(CreateInfo info) } System::~System() -{ -} += default; void System::on_register() { diff --git a/modules/renderer/private/test/utils.hpp b/modules/renderer/private/test/utils.hpp index 8149068..ba4bf20 100644 --- a/modules/renderer/private/test/utils.hpp +++ b/modules/renderer/private/test/utils.hpp @@ -188,6 +188,7 @@ private: std::any &user_data ) { + std::cout << "VULKAN MESSAGE: " << data.message << std::endl; // NOLINT std::ignore = data; std::ignore = type; -- 2.45.3 From ea877a8e5cb13ccc38a14fe30b55fd48c2f0bbb6 Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 13:48:17 +0330 Subject: [PATCH 13/35] wip --- modules/renderer/CMakeLists.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/renderer/CMakeLists.txt b/modules/renderer/CMakeLists.txt index 5ef45e9..78d5b06 100644 --- a/modules/renderer/CMakeLists.txt +++ b/modules/renderer/CMakeLists.txt @@ -40,12 +40,12 @@ add_test_module(renderer system.test.cpp # general backend tests through the frontend - frontend/messenger.test.cpp - frontend/context/surface.test.cpp - frontend/context/device.test.cpp - frontend/context/swapchain.test.cpp - frontend/renderer/pass.test.cpp - frontend/renderer/renderer.test.cpp + # frontend/messenger.test.cpp + # frontend/context/surface.test.cpp + # frontend/context/device.test.cpp + # frontend/context/swapchain.test.cpp + # frontend/renderer/pass.test.cpp + # frontend/renderer/renderer.test.cpp # backend specific tests -- vk backend/vk/context/instance.test.cpp -- 2.45.3 From 44824f6a95fd6ea90b5c12868af946aec142855a Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 13:50:31 +0330 Subject: [PATCH 14/35] wip --- modules/renderer/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/renderer/CMakeLists.txt b/modules/renderer/CMakeLists.txt index 78d5b06..7aed622 100644 --- a/modules/renderer/CMakeLists.txt +++ b/modules/renderer/CMakeLists.txt @@ -37,7 +37,7 @@ PRIVATE add_test_module(renderer test/utils.cpp - system.test.cpp + # system.test.cpp # general backend tests through the frontend # frontend/messenger.test.cpp -- 2.45.3 From b6ac5b2e0b0c68c6c43aa5f3b477770458c3f98d Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 14:04:38 +0330 Subject: [PATCH 15/35] wip --- .../backend/vk/context/instance.test.cpp | 91 ++++++++++--------- .../private/frontend/context/instance.hpp | 1 - 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/modules/renderer/private/backend/vk/context/instance.test.cpp b/modules/renderer/private/backend/vk/context/instance.test.cpp index badef9c..8296a42 100644 --- a/modules/renderer/private/backend/vk/context/instance.test.cpp +++ b/modules/renderer/private/backend/vk/context/instance.test.cpp @@ -42,49 +42,50 @@ Suite raii = "raii"_suite = [] { // expect_not_nullptr(vk_destroy_surface_khr); }; - Case { "post load device functions state is correct" } = [] { - using namespace renderer::vk; - expect_not_nullptr(Instance::get()); - - expect_not_nullptr(vk_get_device_queue); - expect_not_nullptr(vk_create_command_pool); - expect_not_nullptr(vk_destroy_command_pool); - expect_not_nullptr(vk_allocate_command_buffers); - expect_not_nullptr(vk_free_command_buffers); - expect_not_nullptr(vk_begin_command_buffer); - expect_not_nullptr(vk_end_command_buffer); - expect_not_nullptr(vk_cmd_pipeline_barrier); - expect_not_nullptr(vk_queue_submit); - expect_not_nullptr(vk_queue_wait_idle); - expect_not_nullptr(vk_device_wait_idle); - expect_not_nullptr(vk_create_fence); - expect_not_nullptr(vk_destroy_fence); - expect_not_nullptr(vk_wait_for_fences); - expect_not_nullptr(vk_reset_fences); - expect_not_nullptr(vk_create_semaphore); - expect_not_nullptr(vk_destroy_semaphore); - expect_not_nullptr(vk_create_swapchain_khr); - expect_not_nullptr(vk_destroy_swapchain_khr); - expect_not_nullptr(vk_get_swapchain_images_khr); - expect_not_nullptr(vk_acquire_next_image_khr); - expect_not_nullptr(vk_queue_present_khr); - expect_not_nullptr(vk_create_image_view); - expect_not_nullptr(vk_destroy_image_view); - expect_not_nullptr(vk_create_render_pass); - expect_not_nullptr(vk_destroy_render_pass); - expect_not_nullptr(vk_create_frame_buffer); - expect_not_nullptr(vk_destroy_frame_buffer); - expect_not_nullptr(vk_create_shader_module); - expect_not_nullptr(vk_destroy_shader_module); - expect_not_nullptr(vk_create_pipeline_layout); - expect_not_nullptr(vk_destroy_pipeline_layout); - expect_not_nullptr(vk_create_graphics_pipelines); - expect_not_nullptr(vk_destroy_pipeline); - expect_not_nullptr(vk_cmd_begin_render_pass); - expect_not_nullptr(vk_cmd_end_render_pass); - expect_not_nullptr(vk_cmd_bind_pipeline); - expect_not_nullptr(vk_cmd_draw); - expect_not_nullptr(vk_cmd_set_viewport); - expect_not_nullptr(vk_cmd_set_scissors); - }; + // TODO(Light): move device function symbols to device.cpp + // Case { "post load device functions state is correct" } = [] { + // using namespace renderer::vk; + // expect_not_nullptr(Instance::get()); + // + // expect_not_nullptr(vk_get_device_queue); + // expect_not_nullptr(vk_create_command_pool); + // expect_not_nullptr(vk_destroy_command_pool); + // expect_not_nullptr(vk_allocate_command_buffers); + // expect_not_nullptr(vk_free_command_buffers); + // expect_not_nullptr(vk_begin_command_buffer); + // expect_not_nullptr(vk_end_command_buffer); + // expect_not_nullptr(vk_cmd_pipeline_barrier); + // expect_not_nullptr(vk_queue_submit); + // expect_not_nullptr(vk_queue_wait_idle); + // expect_not_nullptr(vk_device_wait_idle); + // expect_not_nullptr(vk_create_fence); + // expect_not_nullptr(vk_destroy_fence); + // expect_not_nullptr(vk_wait_for_fences); + // expect_not_nullptr(vk_reset_fences); + // expect_not_nullptr(vk_create_semaphore); + // expect_not_nullptr(vk_destroy_semaphore); + // expect_not_nullptr(vk_create_swapchain_khr); + // expect_not_nullptr(vk_destroy_swapchain_khr); + // expect_not_nullptr(vk_get_swapchain_images_khr); + // expect_not_nullptr(vk_acquire_next_image_khr); + // expect_not_nullptr(vk_queue_present_khr); + // expect_not_nullptr(vk_create_image_view); + // expect_not_nullptr(vk_destroy_image_view); + // expect_not_nullptr(vk_create_render_pass); + // expect_not_nullptr(vk_destroy_render_pass); + // expect_not_nullptr(vk_create_frame_buffer); + // expect_not_nullptr(vk_destroy_frame_buffer); + // expect_not_nullptr(vk_create_shader_module); + // expect_not_nullptr(vk_destroy_shader_module); + // expect_not_nullptr(vk_create_pipeline_layout); + // expect_not_nullptr(vk_destroy_pipeline_layout); + // expect_not_nullptr(vk_create_graphics_pipelines); + // expect_not_nullptr(vk_destroy_pipeline); + // expect_not_nullptr(vk_cmd_begin_render_pass); + // expect_not_nullptr(vk_cmd_end_render_pass); + // expect_not_nullptr(vk_cmd_bind_pipeline); + // expect_not_nullptr(vk_cmd_draw); + // expect_not_nullptr(vk_cmd_set_viewport); + // expect_not_nullptr(vk_cmd_set_scissors); + // }; }; diff --git a/modules/renderer/private/frontend/context/instance.hpp b/modules/renderer/private/frontend/context/instance.hpp index 2da83d5..907af7c 100644 --- a/modules/renderer/private/frontend/context/instance.hpp +++ b/modules/renderer/private/frontend/context/instance.hpp @@ -8,7 +8,6 @@ class IInstance { public: [[nodiscard]] static auto get(Api target_api) -> IInstance *; - IInstance() = default; virtual ~IInstance() = default; -- 2.45.3 From a129fc415ee356fc1776b06fb5f22128d53a3733 Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 14:07:31 +0330 Subject: [PATCH 16/35] wip --- modules/renderer/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/renderer/CMakeLists.txt b/modules/renderer/CMakeLists.txt index 7aed622..eaa58c5 100644 --- a/modules/renderer/CMakeLists.txt +++ b/modules/renderer/CMakeLists.txt @@ -41,7 +41,7 @@ add_test_module(renderer # general backend tests through the frontend # frontend/messenger.test.cpp - # frontend/context/surface.test.cpp + frontend/context/surface.test.cpp # frontend/context/device.test.cpp # frontend/context/swapchain.test.cpp # frontend/renderer/pass.test.cpp -- 2.45.3 From a8a0bb146efda400067e77f0dc92249a89c3f7a1 Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 14:09:14 +0330 Subject: [PATCH 17/35] wip --- modules/renderer/CMakeLists.txt | 4 ++-- tools/ci/amd64/clang/lsan.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/renderer/CMakeLists.txt b/modules/renderer/CMakeLists.txt index eaa58c5..8d2f1d0 100644 --- a/modules/renderer/CMakeLists.txt +++ b/modules/renderer/CMakeLists.txt @@ -41,8 +41,8 @@ add_test_module(renderer # general backend tests through the frontend # frontend/messenger.test.cpp - frontend/context/surface.test.cpp - # frontend/context/device.test.cpp + # frontend/context/surface.test.cpp + frontend/context/device.test.cpp # frontend/context/swapchain.test.cpp # frontend/renderer/pass.test.cpp # frontend/renderer/renderer.test.cpp diff --git a/tools/ci/amd64/clang/lsan.sh b/tools/ci/amd64/clang/lsan.sh index 265bd34..a074829 100755 --- a/tools/ci/amd64/clang/lsan.sh +++ b/tools/ci/amd64/clang/lsan.sh @@ -29,7 +29,7 @@ cmake . \ -lc++ \ -lc++abi \ -Wl,-rpath,/libcxx_lsan/lib" \ -&& cmake --build ./build -j`nproc` +&& cmake --build ./build --target='renderer_tests' -j`nproc` export LSAN_OPTIONS="suppressions=$(git rev-parse --show-toplevel)/tools/ci/amd64/clang/lsan.supp:fast_unwind_on_malloc=0:verbosity=1:report_objects=1" export LSAN_SYMBOLIZER_PATH="$(which llvm-symbolizer)" -- 2.45.3 From 6545c56a8490a3343d5a811a5a1d54fb646ac015 Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 14:10:46 +0330 Subject: [PATCH 18/35] wip --- modules/renderer/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/renderer/CMakeLists.txt b/modules/renderer/CMakeLists.txt index 8d2f1d0..704b906 100644 --- a/modules/renderer/CMakeLists.txt +++ b/modules/renderer/CMakeLists.txt @@ -42,13 +42,13 @@ add_test_module(renderer # general backend tests through the frontend # frontend/messenger.test.cpp # frontend/context/surface.test.cpp - frontend/context/device.test.cpp + # frontend/context/device.test.cpp # frontend/context/swapchain.test.cpp - # frontend/renderer/pass.test.cpp + frontend/renderer/pass.test.cpp # frontend/renderer/renderer.test.cpp # backend specific tests -- vk - backend/vk/context/instance.test.cpp + # backend/vk/context/instance.test.cpp # backend specific tests -- dx -- 2.45.3 From b3be5e205d8d0ddda5ad4e8363b87a4fc40516aa Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 14:12:48 +0330 Subject: [PATCH 19/35] wip --- modules/renderer/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/renderer/CMakeLists.txt b/modules/renderer/CMakeLists.txt index 704b906..0473078 100644 --- a/modules/renderer/CMakeLists.txt +++ b/modules/renderer/CMakeLists.txt @@ -44,8 +44,8 @@ add_test_module(renderer # frontend/context/surface.test.cpp # frontend/context/device.test.cpp # frontend/context/swapchain.test.cpp - frontend/renderer/pass.test.cpp - # frontend/renderer/renderer.test.cpp + # frontend/renderer/pass.test.cpp + frontend/renderer/renderer.test.cpp # backend specific tests -- vk # backend/vk/context/instance.test.cpp -- 2.45.3 From 762ea62b2ce24a8e27a1ccb40263cac9fc50b729 Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 14:19:45 +0330 Subject: [PATCH 20/35] wip --- .../renderer/private/backend/vk/messenger.cpp | 1 + .../frontend/renderer/renderer.test.cpp | 150 +++++++++--------- modules/renderer/private/test/utils.hpp | 49 ++++++ .../renderer/public/frontend/messenger.hpp | 2 +- 4 files changed, 126 insertions(+), 76 deletions(-) diff --git a/modules/renderer/private/backend/vk/messenger.cpp b/modules/renderer/private/backend/vk/messenger.cpp index 5b96915..c1f6015 100644 --- a/modules/renderer/private/backend/vk/messenger.cpp +++ b/modules/renderer/private/backend/vk/messenger.cpp @@ -5,6 +5,7 @@ namespace lt::renderer::vk { Messenger::Messenger(IInstance *instance, CreateInfo info) : m_instance(static_cast(instance)) , m_user_data(std::move(info.user_data)) + , m_user_callback(std::move(info.callback)) , m_debug_messenger( m_instance, VkDebugUtilsMessengerCreateInfoEXT { diff --git a/modules/renderer/private/frontend/renderer/renderer.test.cpp b/modules/renderer/private/frontend/renderer/renderer.test.cpp index 2d6c0b6..72c2b17 100644 --- a/modules/renderer/private/frontend/renderer/renderer.test.cpp +++ b/modules/renderer/private/frontend/renderer/renderer.test.cpp @@ -13,84 +13,84 @@ Suite raii = "renderer_raii"_suite = [] { ); }; - Case { "unhappy path throws" } = [] { - auto fixture = FixtureDeviceSwapchain {}; - - expect_throw([&] { - ignore = lt::renderer::IRenderer::create( - constants::api, - nullptr, - fixture.swapchain(), - constants::frames_in_flight - ); - }); - - expect_throw([&] { - ignore = lt::renderer::IRenderer::create( - constants::api, - fixture.device(), - nullptr, - constants::frames_in_flight - ); - }); - - expect_throw([&] { - ignore = lt::renderer::IRenderer::create( - constants::api, - fixture.device(), - nullptr, - lt::renderer::IRenderer::frames_in_flight_upper_limit + 1 - ); - }); - - expect_throw([&] { - ignore = lt::renderer::IRenderer::create( - constants::api, - fixture.device(), - nullptr, - lt::renderer::IRenderer::frames_in_flight_lower_limit - 1 - ); - }); - }; + // Case { "unhappy path throws" } = [] { + // auto fixture = FixtureDeviceSwapchain {}; + // + // expect_throw([&] { + // ignore = lt::renderer::IRenderer::create( + // constants::api, + // nullptr, + // fixture.swapchain(), + // constants::frames_in_flight + // ); + // }); + // + // expect_throw([&] { + // ignore = lt::renderer::IRenderer::create( + // constants::api, + // fixture.device(), + // nullptr, + // constants::frames_in_flight + // ); + // }); + // + // expect_throw([&] { + // ignore = lt::renderer::IRenderer::create( + // constants::api, + // fixture.device(), + // nullptr, + // lt::renderer::IRenderer::frames_in_flight_upper_limit + 1 + // ); + // }); + // + // expect_throw([&] { + // ignore = lt::renderer::IRenderer::create( + // constants::api, + // fixture.device(), + // nullptr, + // lt::renderer::IRenderer::frames_in_flight_lower_limit - 1 + // ); + // }); + // }; }; Suite draw = "renderer_draw"_suite = [] { using enum lt::renderer::IRenderer::DrawResult; - Case { "renderer draw" } = [] { - auto fixture = FixtureDeviceSwapchain {}; - auto renderer = lt::renderer::IRenderer::create( - constants::api, - fixture.device(), - fixture.swapchain(), - constants::frames_in_flight - ); - - for (auto frame_idx : std::views::iota(0u, 30u)) - { - expect_eq(renderer->draw(frame_idx % constants::frames_in_flight), success); - } - }; - - Case { "post swapchain replacement renderer draw" } = [] { - auto fixture = FixtureDeviceSwapchain {}; - auto renderer = lt::renderer::IRenderer::create( - constants::api, - fixture.device(), - fixture.swapchain(), - constants::frames_in_flight - ); - - for (auto frame_idx : std::views::iota(0u, 15u)) - { - expect_eq(renderer->draw(frame_idx % constants::frames_in_flight), success); - } - - fixture.recreate_swapchain(); - renderer->replace_swapchain(fixture.swapchain()); - for (auto frame_idx : std::views::iota(0u, 15u)) - { - expect_eq(renderer->draw(frame_idx % constants::frames_in_flight), success); - } - }; + // Case { "renderer draw" } = [] { + // auto fixture = FixtureDeviceSwapchain {}; + // auto renderer = lt::renderer::IRenderer::create( + // constants::api, + // fixture.device(), + // fixture.swapchain(), + // constants::frames_in_flight + // ); + // + // for (auto frame_idx : std::views::iota(0u, 30u)) + // { + // expect_eq(renderer->draw(frame_idx % constants::frames_in_flight), success); + // } + // }; + // + // Case { "post swapchain replacement renderer draw" } = [] { + // auto fixture = FixtureDeviceSwapchain {}; + // auto renderer = lt::renderer::IRenderer::create( + // constants::api, + // fixture.device(), + // fixture.swapchain(), + // constants::frames_in_flight + // ); + // + // for (auto frame_idx : std::views::iota(0u, 15u)) + // { + // expect_eq(renderer->draw(frame_idx % constants::frames_in_flight), success); + // } + // + // fixture.recreate_swapchain(); + // renderer->replace_swapchain(fixture.swapchain()); + // for (auto frame_idx : std::views::iota(0u, 15u)) + // { + // expect_eq(renderer->draw(frame_idx % constants::frames_in_flight), success); + // } + // }; }; diff --git a/modules/renderer/private/test/utils.hpp b/modules/renderer/private/test/utils.hpp index ba4bf20..508967d 100644 --- a/modules/renderer/private/test/utils.hpp +++ b/modules/renderer/private/test/utils.hpp @@ -148,7 +148,56 @@ public: ); } + + [[nodiscard]] auto has_any_messages() const -> bool + { + return m_user_data->m_has_any_messages; + } + + [[nodiscard]] auto has_any_messages_of( + lt::renderer::IMessenger ::MessageSeverity severity + ) const -> uint32_t + { + return m_user_data->m_severity_counter.contains(severity); + } + private: + static void messenger_callback( + lt::renderer::IMessenger::MessageSeverity severity, + lt::renderer::IMessenger::MessageType type, + const lt::renderer::IMessenger::MessageData &data, + std::any &user_data + ) + { + std::cout << "VULKAN MESSAGE: " << data.message << std::endl; // NOLINT + std::ignore = data; + std::ignore = type; + + auto *fixture = std::any_cast(user_data); + fixture->m_has_any_messages = true; + ++fixture->m_severity_counter[severity]; + } + + struct UserData + { + std::unordered_map m_severity_counter; + + bool m_has_any_messages {}; + }; + + lt::memory::Scope m_user_data = lt::memory::create_scope(); + + lt::memory::Scope m_messenger = lt::renderer::IMessenger::create( + constants::api, + lt::renderer::IInstance::get(constants::api), + lt::renderer::IMessenger ::CreateInfo { + .severities = lt::renderer::IMessenger ::MessageSeverity::all, + .types = lt::renderer::IMessenger ::MessageType::all, + .callback = &messenger_callback, + .user_data = m_user_data.get(), + } + ); + lt::memory::Scope m_device { lt::renderer::IDevice::create(constants::api, gpu(), surface()) }; diff --git a/modules/renderer/public/frontend/messenger.hpp b/modules/renderer/public/frontend/messenger.hpp index 9605124..a866e3d 100644 --- a/modules/renderer/public/frontend/messenger.hpp +++ b/modules/renderer/public/frontend/messenger.hpp @@ -41,7 +41,7 @@ public: using Callback_T = std::function; -- 2.45.3 From 2714afb464b2ebd33ea6ce2085bfdd0407d5d6e0 Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 14:24:04 +0330 Subject: [PATCH 21/35] wip --- .../frontend/renderer/renderer.test.cpp | 12 +++---- modules/renderer/private/test/utils.hpp | 32 +++++++++---------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/modules/renderer/private/frontend/renderer/renderer.test.cpp b/modules/renderer/private/frontend/renderer/renderer.test.cpp index 72c2b17..ce2a5ff 100644 --- a/modules/renderer/private/frontend/renderer/renderer.test.cpp +++ b/modules/renderer/private/frontend/renderer/renderer.test.cpp @@ -5,12 +5,12 @@ Suite raii = "renderer_raii"_suite = [] { Case { "happy path won't throw" } = [] { auto fixture = FixtureDeviceSwapchain {}; - ignore = lt::renderer::IRenderer::create( - constants::api, - fixture.device(), - fixture.swapchain(), - constants::frames_in_flight - ); + // ignore = lt::renderer::IRenderer::create( + // constants::api, + // fixture.device(), + // fixture.swapchain(), + // constants::frames_in_flight + // ); }; // Case { "unhappy path throws" } = [] { diff --git a/modules/renderer/private/test/utils.hpp b/modules/renderer/private/test/utils.hpp index 508967d..0382264 100644 --- a/modules/renderer/private/test/utils.hpp +++ b/modules/renderer/private/test/utils.hpp @@ -131,21 +131,21 @@ public: { return m_device.get(); } - - [[nodiscard]] auto swapchain() -> lt::renderer::ISwapchain * - { - return m_swapchain.get(); - } + // + // [[nodiscard]] auto swapchain() -> lt::renderer::ISwapchain * + // { + // return m_swapchain.get(); + // } void recreate_swapchain() { - m_swapchain.reset(); - m_swapchain = lt::renderer::ISwapchain::create( - constants::api, - surface(), - gpu(), - m_device.get() - ); + // m_swapchain.reset(); + // m_swapchain = lt::renderer::ISwapchain::create( + // constants::api, + // surface(), + // gpu(), + // m_device.get() + // ); } @@ -201,10 +201,10 @@ private: lt::memory::Scope m_device { lt::renderer::IDevice::create(constants::api, gpu(), surface()) }; - - lt::memory::Scope m_swapchain { - lt::renderer::ISwapchain::create(constants::api, surface(), gpu(), m_device.get()) - }; + // + // lt::memory::Scope m_swapchain { + // lt::renderer::ISwapchain::create(constants::api, surface(), gpu(), m_device.get()) + // }; }; class Fixture_RendererSystem: public Fixture_SurfaceSystem -- 2.45.3 From 6b1c46a06dd8b92a483281159b8db92aa99743d9 Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 14:24:42 +0330 Subject: [PATCH 22/35] wip --- modules/renderer/private/test/utils.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/renderer/private/test/utils.hpp b/modules/renderer/private/test/utils.hpp index 0382264..ad0856a 100644 --- a/modules/renderer/private/test/utils.hpp +++ b/modules/renderer/private/test/utils.hpp @@ -202,9 +202,9 @@ private: lt::renderer::IDevice::create(constants::api, gpu(), surface()) }; // - // lt::memory::Scope m_swapchain { - // lt::renderer::ISwapchain::create(constants::api, surface(), gpu(), m_device.get()) - // }; + lt::memory::Scope m_swapchain { + lt::renderer::ISwapchain::create(constants::api, surface(), gpu(), m_device.get()) + }; }; class Fixture_RendererSystem: public Fixture_SurfaceSystem -- 2.45.3 From e6d8798296d3c7bf42a0433d7d5f17ec3a014273 Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 14:29:07 +0330 Subject: [PATCH 23/35] wip --- .../private/backend/vk/context/swapchain.cpp | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/modules/renderer/private/backend/vk/context/swapchain.cpp b/modules/renderer/private/backend/vk/context/swapchain.cpp index 5a40f28..698370d 100644 --- a/modules/renderer/private/backend/vk/context/swapchain.cpp +++ b/modules/renderer/private/backend/vk/context/swapchain.cpp @@ -49,33 +49,33 @@ Swapchain::Swapchain(ISurface *surface, IGpu *gpu, IDevice *device) m_device->wait_idle(); - m_images = m_device->get_swapchain_images(m_swapchain); - m_image_views.resize(m_images.size()); - for (auto idx = 0u; auto [image, view] : std::views::zip(m_images, m_image_views)) - { - view = m_device->create_image_view(VkImageViewCreateInfo { - .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, - .image = image, - .viewType = VK_IMAGE_VIEW_TYPE_2D, - .format = surface_format.format, - .components = VkComponentMapping { - .r = VK_COMPONENT_SWIZZLE_IDENTITY, - .g = VK_COMPONENT_SWIZZLE_IDENTITY, - .b = VK_COMPONENT_SWIZZLE_IDENTITY, - .a = VK_COMPONENT_SWIZZLE_IDENTITY, - }, - .subresourceRange = VkImageSubresourceRange { - .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, - .baseMipLevel = 0u, - .levelCount = 1u, - .baseArrayLayer = 0u, - .layerCount = 1u, - } - }); - - m_device->name(image, "swapchain image {}", idx++); - m_device->name(view, "swapchain image view {}", idx++); - } + // m_images = m_device->get_swapchain_images(m_swapchain); + // m_image_views.resize(m_images.size()); + // for (auto idx = 0u; auto [image, view] : std::views::zip(m_images, m_image_views)) + // { + // view = m_device->create_image_view(VkImageViewCreateInfo { + // .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, + // .image = image, + // .viewType = VK_IMAGE_VIEW_TYPE_2D, + // .format = surface_format.format, + // .components = VkComponentMapping { + // .r = VK_COMPONENT_SWIZZLE_IDENTITY, + // .g = VK_COMPONENT_SWIZZLE_IDENTITY, + // .b = VK_COMPONENT_SWIZZLE_IDENTITY, + // .a = VK_COMPONENT_SWIZZLE_IDENTITY, + // }, + // .subresourceRange = VkImageSubresourceRange { + // .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, + // .baseMipLevel = 0u, + // .levelCount = 1u, + // .baseArrayLayer = 0u, + // .layerCount = 1u, + // } + // }); + // + // m_device->name(image, "swapchain image {}", idx++); + // m_device->name(view, "swapchain image view {}", idx++); + // } } Swapchain::~Swapchain() @@ -88,7 +88,7 @@ Swapchain::~Swapchain() try { m_device->wait_idle(); - m_device->destroy_image_views(m_image_views); + // m_device->destroy_image_views(m_image_views); m_device->destroy_swapchain(m_swapchain); } catch (const std::exception &exp) -- 2.45.3 From 643fc49b18c28db5203db7984b72f3b94fcbc486 Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 14:29:38 +0330 Subject: [PATCH 24/35] wip --- modules/renderer/private/backend/vk/context/swapchain.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/renderer/private/backend/vk/context/swapchain.cpp b/modules/renderer/private/backend/vk/context/swapchain.cpp index 698370d..d039642 100644 --- a/modules/renderer/private/backend/vk/context/swapchain.cpp +++ b/modules/renderer/private/backend/vk/context/swapchain.cpp @@ -24,6 +24,7 @@ Swapchain::Swapchain(ISurface *surface, IGpu *gpu, IDevice *device) const auto queue_indices = m_device->get_family_indices(); m_format = surface_format.format; + std::cout << "CREATING SWAPCHAIN" << std::endl; m_swapchain = m_device->create_swapchain( VkSwapchainCreateInfoKHR { .sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR, @@ -89,6 +90,7 @@ Swapchain::~Swapchain() { m_device->wait_idle(); // m_device->destroy_image_views(m_image_views); + std::cout << "DESTROYING SWAPCHAIN" << std::endl; m_device->destroy_swapchain(m_swapchain); } catch (const std::exception &exp) -- 2.45.3 From d75a1d9c5fb5ec288c5757a4cf275a6ec55d125a Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 14:31:54 +0330 Subject: [PATCH 25/35] wip --- modules/renderer/private/backend/vk/context/swapchain.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/renderer/private/backend/vk/context/swapchain.cpp b/modules/renderer/private/backend/vk/context/swapchain.cpp index d039642..c684af1 100644 --- a/modules/renderer/private/backend/vk/context/swapchain.cpp +++ b/modules/renderer/private/backend/vk/context/swapchain.cpp @@ -92,6 +92,7 @@ Swapchain::~Swapchain() // m_device->destroy_image_views(m_image_views); std::cout << "DESTROYING SWAPCHAIN" << std::endl; m_device->destroy_swapchain(m_swapchain); + m_device->wait_idle(); } catch (const std::exception &exp) { -- 2.45.3 From 8bd119468cee05cc5bb413133a80e69c093f3730 Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 14:44:24 +0330 Subject: [PATCH 26/35] wip --- modules/renderer/private/backend/vk/context/swapchain.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/renderer/private/backend/vk/context/swapchain.cpp b/modules/renderer/private/backend/vk/context/swapchain.cpp index c684af1..53e1027 100644 --- a/modules/renderer/private/backend/vk/context/swapchain.cpp +++ b/modules/renderer/private/backend/vk/context/swapchain.cpp @@ -24,7 +24,6 @@ Swapchain::Swapchain(ISurface *surface, IGpu *gpu, IDevice *device) const auto queue_indices = m_device->get_family_indices(); m_format = surface_format.format; - std::cout << "CREATING SWAPCHAIN" << std::endl; m_swapchain = m_device->create_swapchain( VkSwapchainCreateInfoKHR { .sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR, @@ -45,6 +44,7 @@ Swapchain::Swapchain(ISurface *surface, IGpu *gpu, IDevice *device) .oldSwapchain = nullptr, } ); + log_dbg("CREATED SWAPCHAIN @ {:x}", std::bit_cast(m_swapchain)); m_resolution = capabilities.currentExtent; m_device->name(m_swapchain, "swapchain {}", idx++); m_device->wait_idle(); @@ -89,8 +89,8 @@ Swapchain::~Swapchain() try { m_device->wait_idle(); - // m_device->destroy_image_views(m_image_views); std::cout << "DESTROYING SWAPCHAIN" << std::endl; + log_dbg("DESTROY SWAPCHAIN @ {:x}", std::bit_cast(m_swapchain)); m_device->destroy_swapchain(m_swapchain); m_device->wait_idle(); } -- 2.45.3 From 6b0a57e524273bf663b30377a719a480f775448e Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 14:48:32 +0330 Subject: [PATCH 27/35] wip --- modules/renderer/private/backend/vk/context/swapchain.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/renderer/private/backend/vk/context/swapchain.cpp b/modules/renderer/private/backend/vk/context/swapchain.cpp index 53e1027..db95867 100644 --- a/modules/renderer/private/backend/vk/context/swapchain.cpp +++ b/modules/renderer/private/backend/vk/context/swapchain.cpp @@ -89,8 +89,8 @@ Swapchain::~Swapchain() try { m_device->wait_idle(); - std::cout << "DESTROYING SWAPCHAIN" << std::endl; - log_dbg("DESTROY SWAPCHAIN @ {:x}", std::bit_cast(m_swapchain)); + log_dbg("DESTROYING SWAPCHAIN @ {:x}", std::bit_cast(m_swapchain)); + std::this_thread::sleep_for(std::chrono::seconds { 10 }); m_device->destroy_swapchain(m_swapchain); m_device->wait_idle(); } -- 2.45.3 From 052db45922b7d6bdbdb43dafb5d286cec40108ff Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 14:49:01 +0330 Subject: [PATCH 28/35] wip --- modules/renderer/private/backend/vk/context/swapchain.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/renderer/private/backend/vk/context/swapchain.cpp b/modules/renderer/private/backend/vk/context/swapchain.cpp index db95867..e4bd29b 100644 --- a/modules/renderer/private/backend/vk/context/swapchain.cpp +++ b/modules/renderer/private/backend/vk/context/swapchain.cpp @@ -93,6 +93,8 @@ Swapchain::~Swapchain() std::this_thread::sleep_for(std::chrono::seconds { 10 }); m_device->destroy_swapchain(m_swapchain); m_device->wait_idle(); + + std::this_thread::sleep_for(std::chrono::seconds { 10 }); } catch (const std::exception &exp) { -- 2.45.3 From b04b627e175de4946f9363d94396d6883dfb4f50 Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 14:51:00 +0330 Subject: [PATCH 29/35] wip --- modules/renderer/private/backend/vk/context/swapchain.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/renderer/private/backend/vk/context/swapchain.cpp b/modules/renderer/private/backend/vk/context/swapchain.cpp index e4bd29b..5c85785 100644 --- a/modules/renderer/private/backend/vk/context/swapchain.cpp +++ b/modules/renderer/private/backend/vk/context/swapchain.cpp @@ -95,6 +95,7 @@ Swapchain::~Swapchain() m_device->wait_idle(); std::this_thread::sleep_for(std::chrono::seconds { 10 }); + std::cout << "EEP" << std::endl; } catch (const std::exception &exp) { -- 2.45.3 From 80d87226edc71085aa284ec260a63fb78797d3a1 Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 16:29:37 +0330 Subject: [PATCH 30/35] wip --- tools/ci/amd64/clang/lsan.supp | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/ci/amd64/clang/lsan.supp b/tools/ci/amd64/clang/lsan.supp index 3c09f4b..10e2aaf 100644 --- a/tools/ci/amd64/clang/lsan.supp +++ b/tools/ci/amd64/clang/lsan.supp @@ -1,3 +1,4 @@ leak:libX11 leak:_dlopen leak:_dlclose +leak:lt::renderer::vk::Device::destroy_swapchain -- 2.45.3 From 98df2908a8c3ed3f1ae69100835a763fd9e464fb Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 16:32:09 +0330 Subject: [PATCH 31/35] wip --- modules/renderer/CMakeLists.txt | 14 +- .../frontend/renderer/renderer.test.cpp | 162 +++++++++--------- modules/renderer/private/test/utils.hpp | 26 +-- 3 files changed, 101 insertions(+), 101 deletions(-) diff --git a/modules/renderer/CMakeLists.txt b/modules/renderer/CMakeLists.txt index 0473078..5ef45e9 100644 --- a/modules/renderer/CMakeLists.txt +++ b/modules/renderer/CMakeLists.txt @@ -37,18 +37,18 @@ PRIVATE add_test_module(renderer test/utils.cpp - # system.test.cpp + system.test.cpp # general backend tests through the frontend - # frontend/messenger.test.cpp - # frontend/context/surface.test.cpp - # frontend/context/device.test.cpp - # frontend/context/swapchain.test.cpp - # frontend/renderer/pass.test.cpp + frontend/messenger.test.cpp + frontend/context/surface.test.cpp + frontend/context/device.test.cpp + frontend/context/swapchain.test.cpp + frontend/renderer/pass.test.cpp frontend/renderer/renderer.test.cpp # backend specific tests -- vk - # backend/vk/context/instance.test.cpp + backend/vk/context/instance.test.cpp # backend specific tests -- dx diff --git a/modules/renderer/private/frontend/renderer/renderer.test.cpp b/modules/renderer/private/frontend/renderer/renderer.test.cpp index ce2a5ff..2d6c0b6 100644 --- a/modules/renderer/private/frontend/renderer/renderer.test.cpp +++ b/modules/renderer/private/frontend/renderer/renderer.test.cpp @@ -5,92 +5,92 @@ Suite raii = "renderer_raii"_suite = [] { Case { "happy path won't throw" } = [] { auto fixture = FixtureDeviceSwapchain {}; - // ignore = lt::renderer::IRenderer::create( - // constants::api, - // fixture.device(), - // fixture.swapchain(), - // constants::frames_in_flight - // ); + ignore = lt::renderer::IRenderer::create( + constants::api, + fixture.device(), + fixture.swapchain(), + constants::frames_in_flight + ); }; - // Case { "unhappy path throws" } = [] { - // auto fixture = FixtureDeviceSwapchain {}; - // - // expect_throw([&] { - // ignore = lt::renderer::IRenderer::create( - // constants::api, - // nullptr, - // fixture.swapchain(), - // constants::frames_in_flight - // ); - // }); - // - // expect_throw([&] { - // ignore = lt::renderer::IRenderer::create( - // constants::api, - // fixture.device(), - // nullptr, - // constants::frames_in_flight - // ); - // }); - // - // expect_throw([&] { - // ignore = lt::renderer::IRenderer::create( - // constants::api, - // fixture.device(), - // nullptr, - // lt::renderer::IRenderer::frames_in_flight_upper_limit + 1 - // ); - // }); - // - // expect_throw([&] { - // ignore = lt::renderer::IRenderer::create( - // constants::api, - // fixture.device(), - // nullptr, - // lt::renderer::IRenderer::frames_in_flight_lower_limit - 1 - // ); - // }); - // }; + Case { "unhappy path throws" } = [] { + auto fixture = FixtureDeviceSwapchain {}; + + expect_throw([&] { + ignore = lt::renderer::IRenderer::create( + constants::api, + nullptr, + fixture.swapchain(), + constants::frames_in_flight + ); + }); + + expect_throw([&] { + ignore = lt::renderer::IRenderer::create( + constants::api, + fixture.device(), + nullptr, + constants::frames_in_flight + ); + }); + + expect_throw([&] { + ignore = lt::renderer::IRenderer::create( + constants::api, + fixture.device(), + nullptr, + lt::renderer::IRenderer::frames_in_flight_upper_limit + 1 + ); + }); + + expect_throw([&] { + ignore = lt::renderer::IRenderer::create( + constants::api, + fixture.device(), + nullptr, + lt::renderer::IRenderer::frames_in_flight_lower_limit - 1 + ); + }); + }; }; Suite draw = "renderer_draw"_suite = [] { using enum lt::renderer::IRenderer::DrawResult; - // Case { "renderer draw" } = [] { - // auto fixture = FixtureDeviceSwapchain {}; - // auto renderer = lt::renderer::IRenderer::create( - // constants::api, - // fixture.device(), - // fixture.swapchain(), - // constants::frames_in_flight - // ); - // - // for (auto frame_idx : std::views::iota(0u, 30u)) - // { - // expect_eq(renderer->draw(frame_idx % constants::frames_in_flight), success); - // } - // }; - // - // Case { "post swapchain replacement renderer draw" } = [] { - // auto fixture = FixtureDeviceSwapchain {}; - // auto renderer = lt::renderer::IRenderer::create( - // constants::api, - // fixture.device(), - // fixture.swapchain(), - // constants::frames_in_flight - // ); - // - // for (auto frame_idx : std::views::iota(0u, 15u)) - // { - // expect_eq(renderer->draw(frame_idx % constants::frames_in_flight), success); - // } - // - // fixture.recreate_swapchain(); - // renderer->replace_swapchain(fixture.swapchain()); - // for (auto frame_idx : std::views::iota(0u, 15u)) - // { - // expect_eq(renderer->draw(frame_idx % constants::frames_in_flight), success); - // } - // }; + Case { "renderer draw" } = [] { + auto fixture = FixtureDeviceSwapchain {}; + auto renderer = lt::renderer::IRenderer::create( + constants::api, + fixture.device(), + fixture.swapchain(), + constants::frames_in_flight + ); + + for (auto frame_idx : std::views::iota(0u, 30u)) + { + expect_eq(renderer->draw(frame_idx % constants::frames_in_flight), success); + } + }; + + Case { "post swapchain replacement renderer draw" } = [] { + auto fixture = FixtureDeviceSwapchain {}; + auto renderer = lt::renderer::IRenderer::create( + constants::api, + fixture.device(), + fixture.swapchain(), + constants::frames_in_flight + ); + + for (auto frame_idx : std::views::iota(0u, 15u)) + { + expect_eq(renderer->draw(frame_idx % constants::frames_in_flight), success); + } + + fixture.recreate_swapchain(); + renderer->replace_swapchain(fixture.swapchain()); + for (auto frame_idx : std::views::iota(0u, 15u)) + { + expect_eq(renderer->draw(frame_idx % constants::frames_in_flight), success); + } + }; }; diff --git a/modules/renderer/private/test/utils.hpp b/modules/renderer/private/test/utils.hpp index ad0856a..508967d 100644 --- a/modules/renderer/private/test/utils.hpp +++ b/modules/renderer/private/test/utils.hpp @@ -131,21 +131,21 @@ public: { return m_device.get(); } - // - // [[nodiscard]] auto swapchain() -> lt::renderer::ISwapchain * - // { - // return m_swapchain.get(); - // } + + [[nodiscard]] auto swapchain() -> lt::renderer::ISwapchain * + { + return m_swapchain.get(); + } void recreate_swapchain() { - // m_swapchain.reset(); - // m_swapchain = lt::renderer::ISwapchain::create( - // constants::api, - // surface(), - // gpu(), - // m_device.get() - // ); + m_swapchain.reset(); + m_swapchain = lt::renderer::ISwapchain::create( + constants::api, + surface(), + gpu(), + m_device.get() + ); } @@ -201,7 +201,7 @@ private: lt::memory::Scope m_device { lt::renderer::IDevice::create(constants::api, gpu(), surface()) }; - // + lt::memory::Scope m_swapchain { lt::renderer::ISwapchain::create(constants::api, surface(), gpu(), m_device.get()) }; -- 2.45.3 From 099af13f2f09edff9ed8573e96fcf50bfb0f3e8e Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 16:50:41 +0330 Subject: [PATCH 32/35] wip --- .../private/backend/vk/context/instance.cpp | 13 +++- .../private/backend/vk/context/swapchain.cpp | 62 +++++++++---------- 2 files changed, 41 insertions(+), 34 deletions(-) diff --git a/modules/renderer/private/backend/vk/context/instance.cpp b/modules/renderer/private/backend/vk/context/instance.cpp index 9211180..19c13bc 100644 --- a/modules/renderer/private/backend/vk/context/instance.cpp +++ b/modules/renderer/private/backend/vk/context/instance.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #if defined(_WIN32) #error "Unsupported platform (currently)" @@ -190,11 +191,21 @@ void Instance::initialize_instance() .pValues = &setting_duplicate_message_limit, }, }); + auto disable = VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT; + + auto validation_features = VkValidationFeaturesEXT { + .sType = VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT, + .enabledValidationFeatureCount = 0u, + .pEnabledValidationFeatures = nullptr, + .disabledValidationFeatureCount = 1u, + .pDisabledValidationFeatures = &disable, + }; const VkLayerSettingsCreateInfoEXT layer_settings_create_info = { .sType = VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT, + .pNext = &validation_features, .settingCount = settings.size(), - .pSettings = settings.data() + .pSettings = settings.data(), }; auto layers = std::vector { diff --git a/modules/renderer/private/backend/vk/context/swapchain.cpp b/modules/renderer/private/backend/vk/context/swapchain.cpp index 5c85785..212f9fb 100644 --- a/modules/renderer/private/backend/vk/context/swapchain.cpp +++ b/modules/renderer/private/backend/vk/context/swapchain.cpp @@ -44,39 +44,39 @@ Swapchain::Swapchain(ISurface *surface, IGpu *gpu, IDevice *device) .oldSwapchain = nullptr, } ); - log_dbg("CREATED SWAPCHAIN @ {:x}", std::bit_cast(m_swapchain)); m_resolution = capabilities.currentExtent; m_device->name(m_swapchain, "swapchain {}", idx++); m_device->wait_idle(); - // m_images = m_device->get_swapchain_images(m_swapchain); - // m_image_views.resize(m_images.size()); - // for (auto idx = 0u; auto [image, view] : std::views::zip(m_images, m_image_views)) - // { - // view = m_device->create_image_view(VkImageViewCreateInfo { - // .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, - // .image = image, - // .viewType = VK_IMAGE_VIEW_TYPE_2D, - // .format = surface_format.format, - // .components = VkComponentMapping { - // .r = VK_COMPONENT_SWIZZLE_IDENTITY, - // .g = VK_COMPONENT_SWIZZLE_IDENTITY, - // .b = VK_COMPONENT_SWIZZLE_IDENTITY, - // .a = VK_COMPONENT_SWIZZLE_IDENTITY, - // }, - // .subresourceRange = VkImageSubresourceRange { - // .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, - // .baseMipLevel = 0u, - // .levelCount = 1u, - // .baseArrayLayer = 0u, - // .layerCount = 1u, - // } - // }); - // - // m_device->name(image, "swapchain image {}", idx++); - // m_device->name(view, "swapchain image view {}", idx++); - // } + m_images = m_device->get_swapchain_images(m_swapchain); + m_image_views.resize(m_images.size()); + for (auto idx = 0u; auto [image, view] : std::views::zip(m_images, m_image_views)) + { + view = m_device->create_image_view(VkImageViewCreateInfo { + .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, + .image = image, + .viewType = VK_IMAGE_VIEW_TYPE_2D, + .format = surface_format.format, + .components = VkComponentMapping { + .r = VK_COMPONENT_SWIZZLE_IDENTITY, + .g = VK_COMPONENT_SWIZZLE_IDENTITY, + .b = VK_COMPONENT_SWIZZLE_IDENTITY, + .a = VK_COMPONENT_SWIZZLE_IDENTITY, + }, + .subresourceRange = VkImageSubresourceRange { + .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, + .baseMipLevel = 0u, + .levelCount = 1u, + .baseArrayLayer = 0u, + .layerCount = 1u, + } + }); + + m_device->name(image, "swapchain image {}", idx++); + m_device->name(view, "swapchain image view {}", idx++); + } + m_device->wait_idle(); } Swapchain::~Swapchain() @@ -89,13 +89,9 @@ Swapchain::~Swapchain() try { m_device->wait_idle(); - log_dbg("DESTROYING SWAPCHAIN @ {:x}", std::bit_cast(m_swapchain)); - std::this_thread::sleep_for(std::chrono::seconds { 10 }); + m_device->destroy_image_views(m_image_views); m_device->destroy_swapchain(m_swapchain); m_device->wait_idle(); - - std::this_thread::sleep_for(std::chrono::seconds { 10 }); - std::cout << "EEP" << std::endl; } catch (const std::exception &exp) { -- 2.45.3 From 48f185ae5d705a3135120465de8d036c80c2e6ab Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 16:55:10 +0330 Subject: [PATCH 33/35] ci: revert .drone.yml comments --- .drone.yml | 250 ++++++++++++++++++++++++++--------------------------- 1 file changed, 125 insertions(+), 125 deletions(-) diff --git a/.drone.yml b/.drone.yml index fee2075..9abc962 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,42 +1,42 @@ -# --- -# kind: pipeline -# type: exec -# name: amd64 — msvc -# trigger: -# branch: -# - main -# platform: -# os: windows -# arch: amd64 -# -# steps: -# - name: unit tests -# shell: powershell -# commands: -# - ./tools/ci/amd64/msvc/unit_tests.ps1 -# -# --- -# kind: pipeline -# type: docker -# name: amd64 — gcc -# trigger: -# branch: -# - main -# -# steps: -# - name: unit tests -# image: ci:latest -# pull: if-not-exists -# commands: -# - ./tools/ci/amd64/gcc/unit_tests.sh -# -# - name: valgrind -# image: ci:latest -# pull: if-not-exists -# commands: -# - ./tools/ci/amd64/gcc/valgrind.sh -# -# --- +--- +kind: pipeline +type: exec +name: amd64 — msvc +trigger: + branch: + - main +platform: + os: windows + arch: amd64 + +steps: +- name: unit tests + shell: powershell + commands: + - ./tools/ci/amd64/msvc/unit_tests.ps1 + +--- +kind: pipeline +type: docker +name: amd64 — gcc +trigger: + branch: + - main + +steps: +- name: unit tests + image: ci:latest + pull: if-not-exists + commands: + - ./tools/ci/amd64/gcc/unit_tests.sh + +- name: valgrind + image: ci:latest + pull: if-not-exists + commands: + - ./tools/ci/amd64/gcc/valgrind.sh + +--- kind: pipeline type: docker name: amd64 — clang @@ -45,95 +45,95 @@ trigger: - main steps: -# - name: code coverage -# image: ci:latest -# pull: if-not-exists -# environment: -# CODECOV_TOKEN: -# from_secret: CODECOV_TOKEN -# commands: -# - ./tools/ci/amd64/clang/coverage.sh -# +- name: code coverage + image: ci:latest + pull: if-not-exists + environment: + CODECOV_TOKEN: + from_secret: CODECOV_TOKEN + commands: + - ./tools/ci/amd64/clang/coverage.sh + - name: leak sanitizer image: ci:latest pull: if-not-exists commands: - ./tools/ci/amd64/clang/lsan.sh -# - name: memory sanitizer -# image: ci:latest -# pull: if-not-exists -# commands: -# - ./tools/ci/amd64/clang/msan.sh -# -# --- -# kind: pipeline -# type: docker -# name: static analysis -# trigger: -# branch: -# - main -# -# steps: -# - name: clang tidy -# image: ci:latest -# pull: if-not-exists -# privileged: true -# commands: -# - ./tools/ci/static_analysis/clang_tidy.sh -# -# - name: clang format -# image: ci:latest -# pull: if-not-exists -# commands: -# - ./tools/ci/static_analysis/clang_format.sh -# -# --- -# kind: pipeline -# type: docker -# name: documentation — development -# node: -# environment: ryali -# trigger: -# branch: -# - main -# -# steps: -# - name: build and deploy -# image: documentation:latest -# pull: if-not-exists -# commands: -# - pwd -# - cd docs -# - mkdir generated -# - touch generated/changelogs.rst -# - touch generated/api.rst -# - sphinx-build -M html . . -# -# - rm -rf /light_docs_dev/* -# - mv ./html/* /light_docs_dev/ -# -# --- -# -# kind: pipeline -# type: docker -# name: documentation — production -# node: -# environment: ryali -# trigger: -# event: -# - tag -# -# steps: -# - name: build and deploy -# image: documentation:latest -# pull: if-not-exists -# commands: -# - cd docs -# - mkdir generated -# - touch generated/changelogs.rst -# - touch generated/api.rst -# - sphinx-build -M html . . -# -# - rm -rf /light_docs/* -# - mv ./html/* /light_docs/ +- name: memory sanitizer + image: ci:latest + pull: if-not-exists + commands: + - ./tools/ci/amd64/clang/msan.sh + +--- +kind: pipeline +type: docker +name: static analysis +trigger: + branch: + - main + +steps: +- name: clang tidy + image: ci:latest + pull: if-not-exists + privileged: true + commands: + - ./tools/ci/static_analysis/clang_tidy.sh + +- name: clang format + image: ci:latest + pull: if-not-exists + commands: + - ./tools/ci/static_analysis/clang_format.sh + +--- +kind: pipeline +type: docker +name: documentation — development +node: + environment: ryali +trigger: + branch: + - main + +steps: +- name: build and deploy + image: documentation:latest + pull: if-not-exists + commands: + - pwd + - cd docs + - mkdir generated + - touch generated/changelogs.rst + - touch generated/api.rst + - sphinx-build -M html . . + + - rm -rf /light_docs_dev/* + - mv ./html/* /light_docs_dev/ + +--- + +kind: pipeline +type: docker +name: documentation — production +node: + environment: ryali +trigger: + event: + - tag + +steps: +- name: build and deploy + image: documentation:latest + pull: if-not-exists + commands: + - cd docs + - mkdir generated + - touch generated/changelogs.rst + - touch generated/api.rst + - sphinx-build -M html . . + + - rm -rf /light_docs/* + - mv ./html/* /light_docs/ -- 2.45.3 From cee10bcc435060915e69ce2b8c70119bbe0d310f Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 17:25:02 +0330 Subject: [PATCH 34/35] wip --- .../renderer/private/backend/vk/context/instance.cpp | 10 ---------- modules/renderer/private/test/utils.hpp | 5 ++++- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/modules/renderer/private/backend/vk/context/instance.cpp b/modules/renderer/private/backend/vk/context/instance.cpp index 19c13bc..d4451b3 100644 --- a/modules/renderer/private/backend/vk/context/instance.cpp +++ b/modules/renderer/private/backend/vk/context/instance.cpp @@ -191,19 +191,9 @@ void Instance::initialize_instance() .pValues = &setting_duplicate_message_limit, }, }); - auto disable = VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT; - - auto validation_features = VkValidationFeaturesEXT { - .sType = VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT, - .enabledValidationFeatureCount = 0u, - .pEnabledValidationFeatures = nullptr, - .disabledValidationFeatureCount = 1u, - .pDisabledValidationFeatures = &disable, - }; const VkLayerSettingsCreateInfoEXT layer_settings_create_info = { .sType = VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT, - .pNext = &validation_features, .settingCount = settings.size(), .pSettings = settings.data(), }; diff --git a/modules/renderer/private/test/utils.hpp b/modules/renderer/private/test/utils.hpp index 508967d..06f024e 100644 --- a/modules/renderer/private/test/utils.hpp +++ b/modules/renderer/private/test/utils.hpp @@ -237,7 +237,10 @@ private: std::any &user_data ) { - std::cout << "VULKAN MESSAGE: " << data.message << std::endl; // NOLINT + // I know this makes the tests too verbose... + // but makes it easier to figure out what the problem is when things fail on ci + log_trc("vulkan: {}", data.message); + std::ignore = data; std::ignore = type; -- 2.45.3 From d7870dc4695bae70ce3f9d3346f0a98aebfee33c Mon Sep 17 00:00:00 2001 From: light7734 Date: Thu, 9 Oct 2025 17:37:32 +0330 Subject: [PATCH 35/35] wip --- modules/renderer/private/test/utils.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/renderer/private/test/utils.hpp b/modules/renderer/private/test/utils.hpp index 06f024e..245a0a4 100644 --- a/modules/renderer/private/test/utils.hpp +++ b/modules/renderer/private/test/utils.hpp @@ -169,7 +169,9 @@ private: std::any &user_data ) { - std::cout << "VULKAN MESSAGE: " << data.message << std::endl; // NOLINT + // I know this makes the tests too verbose... + // but makes it easier to figure out what the problem is when things fail on ci + log_trc("vulkan: {}", data.message); std::ignore = data; std::ignore = type; -- 2.45.3