From 0e784b7ad2f118f003a2f2512703f6c18a7af08f Mon Sep 17 00:00:00 2001 From: Jordan Arch Date: Fri, 20 Feb 2026 14:00:53 -0500 Subject: [PATCH] Finished depth buffer --- .clang-format | 29 +- CMakeLists.txt | 1 + Shaders/frag.spv | Bin 572 -> 740 bytes Shaders/shader.frag | 8 +- Shaders/shader.vert | 7 +- Shaders/vert.spv | Bin 1676 -> 1860 bytes build/CMakeFiles/CMakeConfigureLog.yaml | 160 +- .../LearningVulkan.dir/DependInfo.cmake | 4 +- .../CMakeFiles/LearningVulkan.dir/build.make | 52 +- .../LearningVulkan.dir/cmake_clean.cmake | 8 +- .../compiler_depend.internal | 572 +-- .../LearningVulkan.dir/compiler_depend.make | 844 ++-- .../CMakeFiles/LearningVulkan.dir/flags.make | 2 +- build/CMakeFiles/LearningVulkan.dir/link.d | 8 +- build/CMakeFiles/LearningVulkan.dir/link.txt | 2 +- .../LearningVulkan.dir/src/main.cpp.o | Bin 192288 -> 190240 bytes .../LearningVulkan.dir/src/main.cpp.o.d | 198 +- .../src/private/VulkanCommandBuffers.cpp.o | Bin 191072 -> 0 bytes .../src/private/VulkanCommandBuffers.cpp.o.d | 357 -- .../src/private/VulkanContext.cpp.o | Bin 220072 -> 224144 bytes .../src/private/VulkanContext.cpp.o.d | 478 +- .../src/private/VulkanDebugManager.cpp.o | Bin 184560 -> 184560 bytes .../src/private/VulkanDeviceManager.cpp.o | Bin 202368 -> 202352 bytes .../src/private/VulkanDeviceManager.cpp.o.d | 306 +- .../src/private/VulkanFramebuffers.cpp.o | Bin 182240 -> 184056 bytes .../src/private/VulkanInstanceManager.cpp.o | Bin 189272 -> 188352 bytes .../src/private/VulkanInstanceManager.cpp.o.d | 328 +- .../src/private/VulkanPipeline.cpp.o | Bin 193664 -> 193904 bytes .../src/private/VulkanPipeline.cpp.o.d | 13 +- .../src/private/VulkanRenderPass.cpp.o | Bin 182536 -> 182952 bytes .../src/private/VulkanRenderPass.cpp.o.d | 3 +- .../src/private/VulkanSwapChain.cpp.o | Bin 193848 -> 187912 bytes .../src/private/VulkanSwapChain.cpp.o.d | 70 +- .../src/private/VulkanVertexBuffer.cpp.o | Bin 189440 -> 0 bytes .../src/private/VulkanVertexBuffer.cpp.o.d | 355 -- build/LearningVulkan | Bin 1820552 -> 1831304 bytes build/Makefile | 72 +- build/compile_commands.json | 50 +- lib/tinyobjloader/tiny_obj_loader.h | 4222 +++++++++++++++++ src/main.cpp | 35 +- src/private/VulkanBuffers.cpp | 479 ++ src/private/VulkanCommandBuffers.cpp | 129 - src/private/VulkanContext.cpp | 738 ++- src/private/VulkanDebugManager.cpp | 1 + src/private/VulkanDeviceManager.cpp | 50 +- src/private/VulkanFramebuffers.cpp | 24 +- src/private/VulkanInstanceManager.cpp | 4 +- src/private/VulkanPipeline.cpp | 48 +- src/private/VulkanRenderPass.cpp | 45 +- src/private/VulkanSwapChain.cpp | 151 +- src/private/VulkanTexture.cpp | 281 ++ src/private/VulkanVertexBuffer.cpp | 176 - src/public/VulkanBuffers.h | 109 + src/public/VulkanCommandBuffers.h | 58 - .../{VulkanContext.h => VulkanContext.hpp} | 76 +- src/public/VulkanDepthPass.hpp | 73 + src/public/VulkanDeviceManager.h | 26 +- src/public/VulkanFramebuffers.h | 9 +- ...nceManager.h => VulkanInstanceManager.hpp} | 4 +- src/public/VulkanRenderPass.h | 2 +- src/public/VulkanSwapChain.h | 109 +- src/public/VulkanTexture.hpp | 68 + src/public/VulkanVertexBuffer.h | 55 - src/utilities/Primitives.h | 15 +- 64 files changed, 7390 insertions(+), 3524 deletions(-) delete mode 100644 build/CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o delete mode 100644 build/CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o.d delete mode 100644 build/CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o delete mode 100644 build/CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o.d create mode 100644 lib/tinyobjloader/tiny_obj_loader.h create mode 100644 src/private/VulkanBuffers.cpp delete mode 100644 src/private/VulkanCommandBuffers.cpp create mode 100644 src/private/VulkanTexture.cpp delete mode 100644 src/private/VulkanVertexBuffer.cpp create mode 100644 src/public/VulkanBuffers.h delete mode 100644 src/public/VulkanCommandBuffers.h rename src/public/{VulkanContext.h => VulkanContext.hpp} (52%) create mode 100644 src/public/VulkanDepthPass.hpp rename src/public/{VulkanInstanceManager.h => VulkanInstanceManager.hpp} (76%) create mode 100644 src/public/VulkanTexture.hpp delete mode 100644 src/public/VulkanVertexBuffer.h diff --git a/.clang-format b/.clang-format index b03980c..834cc68 100644 --- a/.clang-format +++ b/.clang-format @@ -1,9 +1,26 @@ -StatementMacros: ['UPROPERTY', 'UFUNCTION', 'UCLASS', 'USTRUCT', 'UENUM', 'UINTERFACE', 'GENERATED_BODY'] +StatementMacros: + [ + "UPROPERTY", + "UFUNCTION", + "UCLASS", + "USTRUCT", + "UENUM", + "UINTERFACE", + "GENERATED_BODY", + ] Language: Cpp BasedOnStyle: LLVM AccessModifierOffset: -4 -AlignAfterOpenBracket: DontAlign + +AlignAfterOpenBracket: BlockIndent +# BreakAfterOpenBracketBracedList: true +# BreakAfterOpenBracketFunction: true +# BreakAfterOpenBracketIf: true +# BreakBeforeCloseBracketBracedList: true +# BreakBeforeCloseBracketFunction: true +# BreakBeforeCloseBracketIf: true + AlignConsecutiveDeclarations: true AlignEscapedNewlines: Left AlignOperands: DontAlign @@ -35,7 +52,6 @@ BreakInheritanceList: AfterColon BreakBeforeTernaryOperators: true BreakConstructorInitializers: BeforeComma BreakStringLiterals: false -ColumnLimit: 0 ConstructorInitializerAllOnOneLineOrOnePerLine: true Cpp11BracedListStyle: false EmptyLineBeforeAccessModifier: LogicalBlock @@ -49,3 +65,10 @@ SortIncludes: false SpaceBeforeCaseColon: false TabWidth: 4 UseTab: Always + +ColumnLimit: 100 +BinPackArguments: false +BinPackParameters: false +AllowAllArgumentsOnNextLine: false +AllowAllParametersOfDeclarationOnNextLine: false +ExperimentalAutoDetectBinPacking: false diff --git a/CMakeLists.txt b/CMakeLists.txt index 295348f..fd34ec1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,6 +31,7 @@ target_include_directories(${PROJECT_NAME} PRIVATE lib lib/stb + lib/tinyobjloader ${IMGUI_DIR} ${IMGUI_DIR}/backends src diff --git a/Shaders/frag.spv b/Shaders/frag.spv index da37f7ede672fe162b5322c32f5938a7836409a7..f6337accb88e606d53f8d77897723f37e6e9da3a 100644 GIT binary patch literal 740 zcmYk3-Alq?6vj{K%(VQ-QX&Ygd+DMgh`N#3jo^hrmqXl&!Q5odsDH1&s+*waHy!xG zv-6(kJn#8hY5)4bY|rX;Y(3kYw(W~Cah2S<Fncm6B{K- z>WA?x3s%IPd(dk5xw@;#qNm>ODf|m5>k6PF-_ceCM?QRJ;!wXSOFsHU z-;yO4JbHX)ghPKSi=KYapUDz~M~}}A;O@0!@-iETH@{*W*(b5|)DY+gpPDBE_1>gn T2OR+o{IfE!3%Ea3co6;pg$_Wr delta 252 zcmX|+u?oU46h&{6#-L5K>d>{)(OD1#^%HcK4vr4G365PIOMb`C@izqTD^bGX<=%Ib zyu9rz3r5!tP{f`EuhHL*l#UX)JtPs9O1WSEqf+(1@)8F{Gl-Srrj~ zleACXl3KE30<^o>>gplEKqPd8?E{nKvHZOvd2;zLH%*>qJ-~4RGa~0DFMWAz%kkt7 K())0{HTeP!k`NgH diff --git a/Shaders/shader.frag b/Shaders/shader.frag index 13009da..9212366 100644 --- a/Shaders/shader.frag +++ b/Shaders/shader.frag @@ -1,9 +1,13 @@ #version 450 layout(location = 0) in vec3 fragColor; +layout(location = 1) in vec2 fragTextureCoordinates; layout(location = 0) out vec4 outColor; +layout(binding = 1) uniform sampler2D textureSampler; + void main() { - outColor = vec4(fragColor, 1.0); -} \ No newline at end of file + outColor = texture(textureSampler, fragTextureCoordinates); +} + diff --git a/Shaders/shader.vert b/Shaders/shader.vert index 7ce15ef..3170771 100644 --- a/Shaders/shader.vert +++ b/Shaders/shader.vert @@ -6,12 +6,15 @@ layout(binding = 0) uniform UniformBufferObject { mat4 proj; } ubo; -layout(location = 0) in vec2 inPosition; +layout(location = 0) in vec3 inPosition; layout(location = 1) in vec3 inColor; +layout(location = 2) in vec2 inTextureCoordinates; layout(location = 0) out vec3 fragColor; +layout(location = 1) out vec2 fragTextureCoordinates; void main() { - gl_Position = ubo.proj * ubo.view * ubo.model * vec4(inPosition, 0.0, 1.0); + gl_Position = ubo.proj * ubo.view * ubo.model * vec4(inPosition, 1.0); fragColor = inColor; + fragTextureCoordinates = inTextureCoordinates; } diff --git a/Shaders/vert.spv b/Shaders/vert.spv index 00c2804a31e015b61eb14e95b5849cb649d018d1..ed0dc98c573ff86522fd5b4bb1f5b3b859f02aa0 100644 GIT binary patch delta 509 zcmZvY%}T>S6oqG!CKhVkxNudiRxQP!8e>6;KZ_!6Ex4C}RRY>TTA@3A09{C)MEVNu zeHhn*=c`$`aNx_GbLUL%NnV1Fg}`;1bH-RxGlA*81>IK7uqxsqNr&tMu`0I3jtE8c zo{a1@o!dOQ>t**@uDz#wIMU&7$1~NL8_(5XGJebly)4Ub(qS?ljPO@YH1q#=YNlWI z+#WGxS+Fk30ccxl;{4UT5baF+ZfvbvyjH@e=d*^cw$*lpzSy9*O1+{Qmzr^S&<$0- zhfzz?9aUdAg8O@_c`>NdS%4wVxhkk=urFsWS}-x delta 302 zcmXw!y9&ZE6oyZFQz;R|!Oga|)xk@35QKt@h`9L*U6g{hpikiLpyWx!$=y|a8b`tZ zNKN?2e+eh#Q9VhiYkrAHkWG?C7ddt+#LED?B+Xb$;DJ7fuIWKItk(NvGt0O69@@nH z2xpr8l3T3Jg*xly8ZufGWfNN5?s_bQrryTLChDTH5C_UL8_Nb<7mgDhxbVF~a~>C- zU;p<5XaW8``$%2Qmk8C-s)ud(R&i%VC2XP&2myCK2-MSxU7j!m{EsQ-^DFE>m_Gqu DDGebn diff --git a/build/CMakeFiles/CMakeConfigureLog.yaml b/build/CMakeFiles/CMakeConfigureLog.yaml index a69fbfc..aa40752 100644 --- a/build/CMakeFiles/CMakeConfigureLog.yaml +++ b/build/CMakeFiles/CMakeConfigureLog.yaml @@ -1196,8 +1196,8 @@ events: checks: - "Detecting C compiler ABI info" directories: - source: "/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-cavOgA" - binary: "/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-cavOgA" + source: "/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-kiNiNJ" + binary: "/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-kiNiNJ" cmakeVariables: CMAKE_C_FLAGS: "" CMAKE_C_FLAGS_DEBUG: "-g" @@ -1206,13 +1206,13 @@ events: variable: "CMAKE_C_ABI_COMPILED" cached: true stdout: | - Change Dir: '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-cavOgA' + Change Dir: '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-kiNiNJ' - Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_f22b1/fast - /usr/bin/make -f CMakeFiles/cmTC_f22b1.dir/build.make CMakeFiles/cmTC_f22b1.dir/build - make[1]: Entering directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-cavOgA' - Building C object CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o - /usr/bin/cc -v -o CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake/Modules/CMakeCCompilerABI.c + Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_eb7a5/fast + /usr/bin/make -f CMakeFiles/cmTC_eb7a5.dir/build.make CMakeFiles/cmTC_eb7a5.dir/build + make[1]: Entering directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-kiNiNJ' + Building C object CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o + /usr/bin/cc -v -o CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake/Modules/CMakeCCompilerABI.c Using built-in specs. COLLECT_GCC=/usr/bin/cc Target: x86_64-pc-linux-gnu @@ -1220,8 +1220,8 @@ events: Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 15.2.1 20260209 (GCC) - COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f22b1.dir/' - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/cc1 -quiet -v /usr/share/cmake/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_f22b1.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -o /tmp/ccUBJkg7.s + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_eb7a5.dir/' + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/cc1 -quiet -v /usr/share/cmake/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_eb7a5.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -o /tmp/cc5eJlFE.s GNU C23 (GCC) version 15.2.1 20260209 (x86_64-pc-linux-gnu) compiled by GNU C version 15.2.1 20260209, GMP version 6.3.0, MPFR version 4.2.2, MPC version 1.3.1, isl version isl-0.27-GMP @@ -1235,14 +1235,14 @@ events: /usr/include End of search list. Compiler executable checksum: 4a3176b8a5098bb872007d0a1d5e5fb3 - COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f22b1.dir/' - as -v --64 -o CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o /tmp/ccUBJkg7.s + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_eb7a5.dir/' + as -v --64 -o CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o /tmp/cc5eJlFE.s GNU assembler version 2.46 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.46 COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/ - COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.' - Linking C executable cmTC_f22b1 - /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_f22b1.dir/link.txt --verbose=1 + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.' + Linking C executable cmTC_eb7a5 + /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_eb7a5.dir/link.txt --verbose=1 Using built-in specs. COLLECT_GCC=/usr/bin/cc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper @@ -1253,14 +1253,14 @@ events: gcc version 15.2.1 20260209 (GCC) COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/ - COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_f22b1' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_f22b1.' - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/cciDPlOs.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_f22b1 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_eb7a5' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_eb7a5.' + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccdcg62N.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_eb7a5 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o collect2 version 15.2.1 20260209 - /usr/bin/ld -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/cciDPlOs.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_f22b1 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o + /usr/bin/ld -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccdcg62N.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_eb7a5 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o GNU ld (GNU Binutils) 2.46 - COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_f22b1' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_f22b1.' - /usr/bin/cc -v -Wl,-v CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o -o cmTC_f22b1 - make[1]: Leaving directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-cavOgA' + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_eb7a5' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_eb7a5.' + /usr/bin/cc -v -Wl,-v CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o -o cmTC_eb7a5 + make[1]: Leaving directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-kiNiNJ' exitCode: 0 - @@ -1295,13 +1295,13 @@ events: Parsed C implicit link information: link line regex: [^( *|.*[/\\])(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] linker tool regex: [^[ ]*(->|"|[0-9]+>[ -]*Build:[ 0-9]+ ms[ ]*)?[ ]*(([^"]*[/\\])?(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)))("|,| |$)] - ignore line: [Change Dir: '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-cavOgA'] + ignore line: [Change Dir: '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-kiNiNJ'] ignore line: [] - ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_f22b1/fast] - ignore line: [/usr/bin/make -f CMakeFiles/cmTC_f22b1.dir/build.make CMakeFiles/cmTC_f22b1.dir/build] - ignore line: [make[1]: Entering directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-cavOgA'] - ignore line: [Building C object CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o] - ignore line: [/usr/bin/cc -v -o CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake/Modules/CMakeCCompilerABI.c] + ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_eb7a5/fast] + ignore line: [/usr/bin/make -f CMakeFiles/cmTC_eb7a5.dir/build.make CMakeFiles/cmTC_eb7a5.dir/build] + ignore line: [make[1]: Entering directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-kiNiNJ'] + ignore line: [Building C object CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o] + ignore line: [/usr/bin/cc -v -o CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake/Modules/CMakeCCompilerABI.c] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/cc] ignore line: [Target: x86_64-pc-linux-gnu] @@ -1309,8 +1309,8 @@ events: ignore line: [Thread model: posix] ignore line: [Supported LTO compression algorithms: zlib zstd] ignore line: [gcc version 15.2.1 20260209 (GCC) ] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f22b1.dir/'] - ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/cc1 -quiet -v /usr/share/cmake/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_f22b1.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -o /tmp/ccUBJkg7.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_eb7a5.dir/'] + ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/cc1 -quiet -v /usr/share/cmake/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_eb7a5.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -o /tmp/cc5eJlFE.s] ignore line: [GNU C23 (GCC) version 15.2.1 20260209 (x86_64-pc-linux-gnu)] ignore line: [ compiled by GNU C version 15.2.1 20260209 GMP version 6.3.0 MPFR version 4.2.2 MPC version 1.3.1 isl version isl-0.27-GMP] ignore line: [] @@ -1324,14 +1324,14 @@ events: ignore line: [ /usr/include] ignore line: [End of search list.] ignore line: [Compiler executable checksum: 4a3176b8a5098bb872007d0a1d5e5fb3] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f22b1.dir/'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o /tmp/ccUBJkg7.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_eb7a5.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o /tmp/cc5eJlFE.s] ignore line: [GNU assembler version 2.46 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.46] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.'] - ignore line: [Linking C executable cmTC_f22b1] - ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_f22b1.dir/link.txt --verbose=1] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.'] + ignore line: [Linking C executable cmTC_eb7a5] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_eb7a5.dir/link.txt --verbose=1] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/cc] ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper] @@ -1342,13 +1342,13 @@ events: ignore line: [gcc version 15.2.1 20260209 (GCC) ] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_f22b1' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_f22b1.'] - link line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/cciDPlOs.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_f22b1 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_eb7a5' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_eb7a5.'] + link line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccdcg62N.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_eb7a5 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2] ==> ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/cciDPlOs.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccdcg62N.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -1363,7 +1363,7 @@ events: arg [/lib64/ld-linux-x86-64.so.2] ==> ignore arg [-pie] ==> ignore arg [-o] ==> ignore - arg [cmTC_f22b1] ==> ignore + arg [cmTC_eb7a5] ==> ignore arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o] arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o] arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o] @@ -1375,7 +1375,7 @@ events: arg [-L/lib] ==> dir [/lib] arg [-L/usr/lib] ==> dir [/usr/lib] arg [-v] ==> ignore - arg [CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o] ==> ignore arg [-lgcc] ==> lib [gcc] arg [--push-state] ==> ignore arg [--as-needed] ==> ignore @@ -1390,7 +1390,7 @@ events: arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o] arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] ignore line: [collect2 version 15.2.1 20260209] - ignore line: [/usr/bin/ld -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/cciDPlOs.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_f22b1 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_f22b1.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] + ignore line: [/usr/bin/ld -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccdcg62N.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_eb7a5 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_eb7a5.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] linker tool for 'C': /usr/bin/ld collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o] ==> [/usr/lib/Scrt1.o] collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o] ==> [/usr/lib/crti.o] @@ -1427,8 +1427,8 @@ events: checks: - "Detecting CXX compiler ABI info" directories: - source: "/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-Z1OehA" - binary: "/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-Z1OehA" + source: "/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-WEPuEz" + binary: "/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-WEPuEz" cmakeVariables: CMAKE_CXX_FLAGS: "" CMAKE_CXX_FLAGS_DEBUG: "-g" @@ -1438,13 +1438,13 @@ events: variable: "CMAKE_CXX_ABI_COMPILED" cached: true stdout: | - Change Dir: '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-Z1OehA' + Change Dir: '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-WEPuEz' - Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_62d97/fast - /usr/bin/make -f CMakeFiles/cmTC_62d97.dir/build.make CMakeFiles/cmTC_62d97.dir/build - make[1]: Entering directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-Z1OehA' - Building CXX object CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o - /usr/bin/c++ -v -o CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp + Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_f63bc/fast + /usr/bin/make -f CMakeFiles/cmTC_f63bc.dir/build.make CMakeFiles/cmTC_f63bc.dir/build + make[1]: Entering directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-WEPuEz' + Building CXX object CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o + /usr/bin/c++ -v -o CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp Using built-in specs. COLLECT_GCC=/usr/bin/c++ Target: x86_64-pc-linux-gnu @@ -1452,8 +1452,8 @@ events: Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 15.2.1 20260209 (GCC) - COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_62d97.dir/' - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/cc1plus -quiet -v -D_GNU_SOURCE /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_62d97.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -o /tmp/ccSB0kAz.s + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f63bc.dir/' + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/cc1plus -quiet -v -D_GNU_SOURCE /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_f63bc.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -o /tmp/cchk7ZQV.s GNU C++17 (GCC) version 15.2.1 20260209 (x86_64-pc-linux-gnu) compiled by GNU C version 15.2.1 20260209, GMP version 6.3.0, MPFR version 4.2.2, MPC version 1.3.1, isl version isl-0.27-GMP @@ -1470,14 +1470,14 @@ events: /usr/include End of search list. Compiler executable checksum: 5e3969de92aa3c12a625237f01b15b2f - COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_62d97.dir/' - as -v --64 -o CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccSB0kAz.s + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f63bc.dir/' + as -v --64 -o CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o /tmp/cchk7ZQV.s GNU assembler version 2.46 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.46 COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/ - COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.' - Linking CXX executable cmTC_62d97 - /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_62d97.dir/link.txt --verbose=1 + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.' + Linking CXX executable cmTC_f63bc + /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_f63bc.dir/link.txt --verbose=1 Using built-in specs. COLLECT_GCC=/usr/bin/c++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper @@ -1488,14 +1488,14 @@ events: gcc version 15.2.1 20260209 (GCC) COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/ - COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_62d97' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_62d97.' - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/cc9yM9j7.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_62d97 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_f63bc' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_f63bc.' + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccilJvOl.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_f63bc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o collect2 version 15.2.1 20260209 - /usr/bin/ld -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/cc9yM9j7.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_62d97 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o + /usr/bin/ld -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccilJvOl.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_f63bc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o GNU ld (GNU Binutils) 2.46 - COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_62d97' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_62d97.' - /usr/bin/c++ -v -Wl,-v CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_62d97 - make[1]: Leaving directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-Z1OehA' + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_f63bc' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_f63bc.' + /usr/bin/c++ -v -Wl,-v CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_f63bc + make[1]: Leaving directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-WEPuEz' exitCode: 0 - @@ -1536,13 +1536,13 @@ events: Parsed CXX implicit link information: link line regex: [^( *|.*[/\\])(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] linker tool regex: [^[ ]*(->|"|[0-9]+>[ -]*Build:[ 0-9]+ ms[ ]*)?[ ]*(([^"]*[/\\])?(ld[0-9]*(|\\.[a-rt-z][a-z]*|\\.s[a-np-z][a-z]*|\\.so[a-z]+)))("|,| |$)] - ignore line: [Change Dir: '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-Z1OehA'] + ignore line: [Change Dir: '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-WEPuEz'] ignore line: [] - ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_62d97/fast] - ignore line: [/usr/bin/make -f CMakeFiles/cmTC_62d97.dir/build.make CMakeFiles/cmTC_62d97.dir/build] - ignore line: [make[1]: Entering directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-Z1OehA'] - ignore line: [Building CXX object CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o] - ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/make -f Makefile cmTC_f63bc/fast] + ignore line: [/usr/bin/make -f CMakeFiles/cmTC_f63bc.dir/build.make CMakeFiles/cmTC_f63bc.dir/build] + ignore line: [make[1]: Entering directory '/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/CMakeScratch/TryCompile-WEPuEz'] + ignore line: [Building CXX object CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [Target: x86_64-pc-linux-gnu] @@ -1550,8 +1550,8 @@ events: ignore line: [Thread model: posix] ignore line: [Supported LTO compression algorithms: zlib zstd] ignore line: [gcc version 15.2.1 20260209 (GCC) ] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_62d97.dir/'] - ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/cc1plus -quiet -v -D_GNU_SOURCE /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_62d97.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -o /tmp/ccSB0kAz.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f63bc.dir/'] + ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/cc1plus -quiet -v -D_GNU_SOURCE /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_f63bc.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -o /tmp/cchk7ZQV.s] ignore line: [GNU C++17 (GCC) version 15.2.1 20260209 (x86_64-pc-linux-gnu)] ignore line: [ compiled by GNU C version 15.2.1 20260209 GMP version 6.3.0 MPFR version 4.2.2 MPC version 1.3.1 isl version isl-0.27-GMP] ignore line: [] @@ -1568,14 +1568,14 @@ events: ignore line: [ /usr/include] ignore line: [End of search list.] ignore line: [Compiler executable checksum: 5e3969de92aa3c12a625237f01b15b2f] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_62d97.dir/'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccSB0kAz.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f63bc.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o /tmp/cchk7ZQV.s] ignore line: [GNU assembler version 2.46 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.46] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.'] - ignore line: [Linking CXX executable cmTC_62d97] - ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_62d97.dir/link.txt --verbose=1] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.'] + ignore line: [Linking CXX executable cmTC_f63bc] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_f63bc.dir/link.txt --verbose=1] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper] @@ -1586,13 +1586,13 @@ events: ignore line: [gcc version 15.2.1 20260209 (GCC) ] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_62d97' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_62d97.'] - link line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/cc9yM9j7.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_62d97 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_f63bc' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_f63bc.'] + link line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccilJvOl.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_f63bc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/collect2] ==> ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/cc9yM9j7.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccilJvOl.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -1607,7 +1607,7 @@ events: arg [/lib64/ld-linux-x86-64.so.2] ==> ignore arg [-pie] ==> ignore arg [-o] ==> ignore - arg [cmTC_62d97] ==> ignore + arg [cmTC_f63bc] ==> ignore arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o] arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o] arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o] @@ -1619,7 +1619,7 @@ events: arg [-L/lib] ==> dir [/lib] arg [-L/usr/lib] ==> dir [/usr/lib] arg [-v] ==> ignore - arg [CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore arg [-lstdc++] ==> lib [stdc++] arg [-lm] ==> lib [m] arg [-lgcc_s] ==> lib [gcc_s] @@ -1630,7 +1630,7 @@ events: arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o] arg [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] ignore line: [collect2 version 15.2.1 20260209] - ignore line: [/usr/bin/ld -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/cc9yM9j7.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_62d97 /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_62d97.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] + ignore line: [/usr/bin/ld -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccilJvOl.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_f63bc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1 -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../.. -L/lib -L/usr/lib -v CMakeFiles/cmTC_f63bc.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crtn.o] linker tool for 'CXX': /usr/bin/ld collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/Scrt1.o] ==> [/usr/lib/Scrt1.o] collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/../../../../lib/crti.o] ==> [/usr/lib/crti.o] diff --git a/build/CMakeFiles/LearningVulkan.dir/DependInfo.cmake b/build/CMakeFiles/LearningVulkan.dir/DependInfo.cmake index 59b2aa9..49a7dc1 100644 --- a/build/CMakeFiles/LearningVulkan.dir/DependInfo.cmake +++ b/build/CMakeFiles/LearningVulkan.dir/DependInfo.cmake @@ -17,7 +17,7 @@ set(CMAKE_DEPENDS_DEPENDENCY_FILES "/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui_widgets.cpp" "CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_widgets.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_widgets.cpp.o.d" "/home/Jordan/Projects/CPP/LearningVulkan/src/main.cpp" "CMakeFiles/LearningVulkan.dir/src/main.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/main.cpp.o.d" "/home/Jordan/Projects/CPP/LearningVulkan/src/private/GlfwWindowManager.cpp" "CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o.d" - "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanCommandBuffers.cpp" "CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o.d" + "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanBuffers.cpp" "CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o.d" "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanContext.cpp" "CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o.d" "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanDebugManager.cpp" "CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o.d" "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanDeviceManager.cpp" "CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o.d" @@ -26,7 +26,7 @@ set(CMAKE_DEPENDS_DEPENDENCY_FILES "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanPipeline.cpp" "CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o.d" "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanRenderPass.cpp" "CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o.d" "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanSwapChain.cpp" "CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o.d" - "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanVertexBuffer.cpp" "CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o.d" + "/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanTexture.cpp" "CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o.d" "/home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.cpp" "CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o.d" "/home/Jordan/Projects/CPP/LearningVulkan/src/utilities/stb_image_impl.cpp" "CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o" "gcc" "CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o.d" "" "LearningVulkan" "gcc" "CMakeFiles/LearningVulkan.dir/link.d" diff --git a/build/CMakeFiles/LearningVulkan.dir/build.make b/build/CMakeFiles/LearningVulkan.dir/build.make index e0f6456..cfeec64 100644 --- a/build/CMakeFiles/LearningVulkan.dir/build.make +++ b/build/CMakeFiles/LearningVulkan.dir/build.make @@ -100,19 +100,19 @@ CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.s: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.s" /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/Jordan/Projects/CPP/LearningVulkan/src/private/GlfwWindowManager.cpp -o CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.s -CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o: CMakeFiles/LearningVulkan.dir/flags.make -CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanCommandBuffers.cpp -CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o: CMakeFiles/LearningVulkan.dir/compiler_depend.ts - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o" - /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o -MF CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o.d -o CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanCommandBuffers.cpp +CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o: CMakeFiles/LearningVulkan.dir/flags.make +CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanBuffers.cpp +CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o: CMakeFiles/LearningVulkan.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o -MF CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o.d -o CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanBuffers.cpp -CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.i: cmake_force - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.i" - /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanCommandBuffers.cpp > CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.i +CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanBuffers.cpp > CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.i -CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.s: cmake_force - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.s" - /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanCommandBuffers.cpp -o CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.s +CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanBuffers.cpp -o CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.s CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: CMakeFiles/LearningVulkan.dir/flags.make CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanContext.cpp @@ -226,19 +226,19 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.s: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.s" /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanSwapChain.cpp -o CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.s -CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: CMakeFiles/LearningVulkan.dir/flags.make -CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanVertexBuffer.cpp -CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: CMakeFiles/LearningVulkan.dir/compiler_depend.ts - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_12) "Building CXX object CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o" - /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o -MF CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o.d -o CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanVertexBuffer.cpp +CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o: CMakeFiles/LearningVulkan.dir/flags.make +CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanTexture.cpp +CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o: CMakeFiles/LearningVulkan.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_12) "Building CXX object CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o -MF CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o.d -o CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o -c /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanTexture.cpp -CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.i: cmake_force - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.i" - /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanVertexBuffer.cpp > CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.i +CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanTexture.cpp > CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.i -CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.s: cmake_force - @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.s" - /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanVertexBuffer.cpp -o CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.s +CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanTexture.cpp -o CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.s CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o: CMakeFiles/LearningVulkan.dir/flags.make CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.cpp @@ -370,7 +370,7 @@ CMakeFiles/LearningVulkan.dir/lib/imgui/backends/imgui_impl_vulkan.cpp.s: cmake_ LearningVulkan_OBJECTS = \ "CMakeFiles/LearningVulkan.dir/src/main.cpp.o" \ "CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o" \ -"CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o" \ +"CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o" \ "CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o" \ "CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o" \ "CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o" \ @@ -379,7 +379,7 @@ LearningVulkan_OBJECTS = \ "CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o" \ "CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o" \ "CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o" \ -"CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o" \ +"CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o" \ "CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o" \ "CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o" \ "CMakeFiles/LearningVulkan.dir/lib/imgui/imgui.cpp.o" \ @@ -395,7 +395,7 @@ LearningVulkan_EXTERNAL_OBJECTS = LearningVulkan: CMakeFiles/LearningVulkan.dir/src/main.cpp.o LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o -LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o +LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o @@ -404,7 +404,7 @@ LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager. LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o -LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o +LearningVulkan: CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o LearningVulkan: CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o LearningVulkan: CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o LearningVulkan: CMakeFiles/LearningVulkan.dir/lib/imgui/imgui.cpp.o diff --git a/build/CMakeFiles/LearningVulkan.dir/cmake_clean.cmake b/build/CMakeFiles/LearningVulkan.dir/cmake_clean.cmake index 615776a..0417e53 100644 --- a/build/CMakeFiles/LearningVulkan.dir/cmake_clean.cmake +++ b/build/CMakeFiles/LearningVulkan.dir/cmake_clean.cmake @@ -18,8 +18,8 @@ file(REMOVE_RECURSE "CMakeFiles/LearningVulkan.dir/src/main.cpp.o.d" "CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o" "CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o.d" - "CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o" - "CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o.d" + "CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o" + "CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o.d" "CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o" "CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o.d" "CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o" @@ -36,8 +36,8 @@ file(REMOVE_RECURSE "CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o.d" "CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o" "CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o.d" - "CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o" - "CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o.d" + "CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o" + "CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o.d" "CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o" "CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o.d" "CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o" diff --git a/build/CMakeFiles/LearningVulkan.dir/compiler_depend.internal b/build/CMakeFiles/LearningVulkan.dir/compiler_depend.internal index ade10e7..47ef933 100644 --- a/build/CMakeFiles/LearningVulkan.dir/compiler_depend.internal +++ b/build/CMakeFiles/LearningVulkan.dir/compiler_depend.internal @@ -1373,18 +1373,10 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imconfig.h /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.h /home/Jordan/Projects/CPP/LearningVulkan/src/public/GlfwWindowManager.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h /usr/include/GL/gl.h /usr/include/GL/glext.h /usr/include/GLFW/glfw3.h @@ -1402,18 +1394,24 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/asm/posix_types.h /usr/include/asm/posix_types_64.h /usr/include/asm/types.h + /usr/include/asm/unistd.h + /usr/include/asm/unistd_64.h /usr/include/assert.h /usr/include/bits/atomic_wide_counter.h /usr/include/bits/byteswap.h + /usr/include/bits/confname.h /usr/include/bits/cpu-set.h /usr/include/bits/endian.h /usr/include/bits/endianness.h + /usr/include/bits/environments.h /usr/include/bits/errno.h /usr/include/bits/floatn-common.h /usr/include/bits/floatn.h /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-fast.h /usr/include/bits/fp-logb.h + /usr/include/bits/getopt_core.h + /usr/include/bits/getopt_posix.h /usr/include/bits/iscanonical.h /usr/include/bits/libc-header-start.h /usr/include/bits/libm-simd-decl-stubs.h @@ -1427,6 +1425,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/bits/mathcalls.h /usr/include/bits/posix1_lim.h /usr/include/bits/posix2_lim.h + /usr/include/bits/posix_opt.h /usr/include/bits/pthread_stack_min-dynamic.h /usr/include/bits/pthreadtypes-arch.h /usr/include/bits/pthreadtypes.h @@ -1442,6 +1441,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/bits/stdlib-float.h /usr/include/bits/struct_mutex.h /usr/include/bits/struct_rwlock.h + /usr/include/bits/syscall.h /usr/include/bits/thread-shared-types.h /usr/include/bits/time.h /usr/include/bits/time64.h @@ -1475,6 +1475,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/bits/typesizes.h /usr/include/bits/uintn-identity.h /usr/include/bits/uio_lim.h + /usr/include/bits/unistd_ext.h /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h /usr/include/bits/wchar.h @@ -1482,11 +1483,19 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/bits/wordsize.h /usr/include/bits/xopen_lim.h /usr/include/c++/15.2.1/array + /usr/include/c++/15.2.1/backward/auto_ptr.h /usr/include/c++/15.2.1/backward/binders.h /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/bits/algorithmfwd.h + /usr/include/c++/15.2.1/bits/align.h /usr/include/c++/15.2.1/bits/alloc_traits.h + /usr/include/c++/15.2.1/bits/allocated_ptr.h /usr/include/c++/15.2.1/bits/allocator.h + /usr/include/c++/15.2.1/bits/atomic_base.h + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h + /usr/include/c++/15.2.1/bits/atomic_wait.h + /usr/include/c++/15.2.1/bits/basic_ios.h + /usr/include/c++/15.2.1/bits/basic_ios.tcc /usr/include/c++/15.2.1/bits/basic_string.h /usr/include/c++/15.2.1/bits/basic_string.tcc /usr/include/c++/15.2.1/bits/char_traits.h @@ -1526,6 +1535,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/c++/15.2.1/bits/nested_exception.h /usr/include/c++/15.2.1/bits/new_allocator.h /usr/include/c++/15.2.1/bits/node_handle.h + /usr/include/c++/15.2.1/bits/ostream.h /usr/include/c++/15.2.1/bits/ostream_insert.h /usr/include/c++/15.2.1/bits/postypes.h /usr/include/c++/15.2.1/bits/predefined_ops.h @@ -1534,12 +1544,17 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/c++/15.2.1/bits/ranges_algobase.h /usr/include/c++/15.2.1/bits/ranges_base.h /usr/include/c++/15.2.1/bits/ranges_cmp.h + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h /usr/include/c++/15.2.1/bits/ranges_util.h /usr/include/c++/15.2.1/bits/refwrap.h /usr/include/c++/15.2.1/bits/requires_hosted.h + /usr/include/c++/15.2.1/bits/shared_ptr.h + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h + /usr/include/c++/15.2.1/bits/shared_ptr_base.h /usr/include/c++/15.2.1/bits/specfun.h /usr/include/c++/15.2.1/bits/std_abs.h /usr/include/c++/15.2.1/bits/std_function.h + /usr/include/c++/15.2.1/bits/std_mutex.h /usr/include/c++/15.2.1/bits/stl_algo.h /usr/include/c++/15.2.1/bits/stl_algobase.h /usr/include/c++/15.2.1/bits/stl_bvector.h @@ -1550,6 +1565,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h /usr/include/c++/15.2.1/bits/stl_pair.h + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h /usr/include/c++/15.2.1/bits/stl_tempbuf.h /usr/include/c++/15.2.1/bits/stl_uninitialized.h /usr/include/c++/15.2.1/bits/stl_vector.h @@ -1560,6 +1576,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/c++/15.2.1/bits/unicode-data.h /usr/include/c++/15.2.1/bits/unicode.h /usr/include/c++/15.2.1/bits/uniform_int_dist.h + /usr/include/c++/15.2.1/bits/unique_ptr.h /usr/include/c++/15.2.1/bits/unordered_map.h /usr/include/c++/15.2.1/bits/uses_allocator.h /usr/include/c++/15.2.1/bits/uses_allocator_args.h @@ -1589,18 +1606,23 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/c++/15.2.1/ext/aligned_buffer.h /usr/include/c++/15.2.1/ext/alloc_traits.h /usr/include/c++/15.2.1/ext/atomicity.h + /usr/include/c++/15.2.1/ext/concurrence.h /usr/include/c++/15.2.1/ext/numeric_traits.h /usr/include/c++/15.2.1/ext/string_conversions.h /usr/include/c++/15.2.1/ext/type_traits.h /usr/include/c++/15.2.1/format /usr/include/c++/15.2.1/functional /usr/include/c++/15.2.1/initializer_list + /usr/include/c++/15.2.1/ios /usr/include/c++/15.2.1/iosfwd /usr/include/c++/15.2.1/limits /usr/include/c++/15.2.1/locale + /usr/include/c++/15.2.1/memory /usr/include/c++/15.2.1/new /usr/include/c++/15.2.1/numbers /usr/include/c++/15.2.1/optional + /usr/include/c++/15.2.1/pstl/execution_defs.h + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h /usr/include/c++/15.2.1/pstl/pstl_config.h /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/span @@ -1782,6 +1804,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/gnu/stubs.h /usr/include/libintl.h /usr/include/limits.h + /usr/include/linux/close_range.h /usr/include/linux/errno.h /usr/include/linux/limits.h /usr/include/linux/posix_types.h @@ -1801,8 +1824,11 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o /usr/include/sys/cdefs.h /usr/include/sys/select.h /usr/include/sys/single_threaded.h + /usr/include/sys/syscall.h /usr/include/sys/types.h + /usr/include/syscall.h /usr/include/time.h + /usr/include/unistd.h /usr/include/vk_video/vulkan_video_codec_av1std.h /usr/include/vk_video/vulkan_video_codec_av1std_decode.h /usr/include/vk_video/vulkan_video_codec_av1std_encode.h @@ -2084,15 +2110,14 @@ CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h -CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o - /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanCommandBuffers.cpp +CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o + /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanBuffers.cpp /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends/imgui_impl_vulkan.h /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imconfig.h /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanBuffers.h /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h /usr/include/GL/gl.h /usr/include/GL/glext.h /usr/include/GLFW/glfw3.h @@ -2541,18 +2566,18 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imconfig.h /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.h /home/Jordan/Projects/CPP/LearningVulkan/lib/stb/stb_image.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanBuffers.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.hpp /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanTexture.hpp /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h /usr/include/GL/gl.h /usr/include/GL/glext.h /usr/include/GLFW/glfw3.h @@ -2569,18 +2594,26 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/asm/posix_types.h /usr/include/asm/posix_types_64.h /usr/include/asm/types.h + /usr/include/asm/unistd.h + /usr/include/asm/unistd_64.h /usr/include/assert.h /usr/include/bits/atomic_wide_counter.h /usr/include/bits/byteswap.h + /usr/include/bits/confname.h /usr/include/bits/cpu-set.h + /usr/include/bits/dl_find_object.h + /usr/include/bits/dlfcn.h /usr/include/bits/endian.h /usr/include/bits/endianness.h + /usr/include/bits/environments.h /usr/include/bits/errno.h /usr/include/bits/floatn-common.h /usr/include/bits/floatn.h /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-fast.h /usr/include/bits/fp-logb.h + /usr/include/bits/getopt_core.h + /usr/include/bits/getopt_posix.h /usr/include/bits/iscanonical.h /usr/include/bits/libc-header-start.h /usr/include/bits/libm-simd-decl-stubs.h @@ -2594,6 +2627,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/bits/mathcalls.h /usr/include/bits/posix1_lim.h /usr/include/bits/posix2_lim.h + /usr/include/bits/posix_opt.h /usr/include/bits/pthread_stack_min-dynamic.h /usr/include/bits/pthreadtypes-arch.h /usr/include/bits/pthreadtypes.h @@ -2609,6 +2643,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/bits/stdlib-float.h /usr/include/bits/struct_mutex.h /usr/include/bits/struct_rwlock.h + /usr/include/bits/syscall.h /usr/include/bits/thread-shared-types.h /usr/include/bits/time.h /usr/include/bits/time64.h @@ -2642,13 +2677,16 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/bits/typesizes.h /usr/include/bits/uintn-identity.h /usr/include/bits/uio_lim.h + /usr/include/bits/unistd_ext.h /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h /usr/include/bits/wchar.h /usr/include/bits/wctype-wchar.h /usr/include/bits/wordsize.h /usr/include/bits/xopen_lim.h + /usr/include/c++/15.2.1/algorithm /usr/include/c++/15.2.1/array + /usr/include/c++/15.2.1/backward/auto_ptr.h /usr/include/c++/15.2.1/backward/binders.h /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/bits/algorithmfwd.h @@ -2656,6 +2694,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/c++/15.2.1/bits/alloc_traits.h /usr/include/c++/15.2.1/bits/allocated_ptr.h /usr/include/c++/15.2.1/bits/allocator.h + /usr/include/c++/15.2.1/bits/atomic_base.h + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h + /usr/include/c++/15.2.1/bits/atomic_wait.h /usr/include/c++/15.2.1/bits/basic_ios.h /usr/include/c++/15.2.1/bits/basic_ios.tcc /usr/include/c++/15.2.1/bits/basic_string.h @@ -2709,18 +2750,22 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/c++/15.2.1/bits/ptr_traits.h /usr/include/c++/15.2.1/bits/quoted_string.h /usr/include/c++/15.2.1/bits/range_access.h + /usr/include/c++/15.2.1/bits/ranges_algo.h /usr/include/c++/15.2.1/bits/ranges_algobase.h /usr/include/c++/15.2.1/bits/ranges_base.h /usr/include/c++/15.2.1/bits/ranges_cmp.h + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h /usr/include/c++/15.2.1/bits/ranges_util.h /usr/include/c++/15.2.1/bits/refwrap.h /usr/include/c++/15.2.1/bits/requires_hosted.h /usr/include/c++/15.2.1/bits/shared_ptr.h + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h /usr/include/c++/15.2.1/bits/shared_ptr_base.h /usr/include/c++/15.2.1/bits/specfun.h /usr/include/c++/15.2.1/bits/sstream.tcc /usr/include/c++/15.2.1/bits/std_abs.h /usr/include/c++/15.2.1/bits/std_function.h + /usr/include/c++/15.2.1/bits/std_mutex.h /usr/include/c++/15.2.1/bits/stl_algo.h /usr/include/c++/15.2.1/bits/stl_algobase.h /usr/include/c++/15.2.1/bits/stl_bvector.h @@ -2731,6 +2776,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h /usr/include/c++/15.2.1/bits/stl_pair.h + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h + /usr/include/c++/15.2.1/bits/stl_relops.h /usr/include/c++/15.2.1/bits/stl_tempbuf.h /usr/include/c++/15.2.1/bits/stl_uninitialized.h /usr/include/c++/15.2.1/bits/stl_vector.h @@ -2763,6 +2810,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/c++/15.2.1/cstdint /usr/include/c++/15.2.1/cstdio /usr/include/c++/15.2.1/cstdlib + /usr/include/c++/15.2.1/cstring /usr/include/c++/15.2.1/ctime /usr/include/c++/15.2.1/cwchar /usr/include/c++/15.2.1/cwctype @@ -2785,10 +2833,14 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/c++/15.2.1/istream /usr/include/c++/15.2.1/limits /usr/include/c++/15.2.1/locale + /usr/include/c++/15.2.1/memory /usr/include/c++/15.2.1/new /usr/include/c++/15.2.1/numbers /usr/include/c++/15.2.1/optional /usr/include/c++/15.2.1/ostream + /usr/include/c++/15.2.1/pstl/execution_defs.h + /usr/include/c++/15.2.1/pstl/glue_algorithm_defs.h + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h /usr/include/c++/15.2.1/pstl/pstl_config.h /usr/include/c++/15.2.1/ratio /usr/include/c++/15.2.1/source_location @@ -2816,7 +2868,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/c++/15.2.1/type_traits /usr/include/c++/15.2.1/typeinfo /usr/include/c++/15.2.1/unordered_map + /usr/include/c++/15.2.1/utility /usr/include/c++/15.2.1/vector + /usr/include/c++/15.2.1/version /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h @@ -2831,6 +2885,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/os_defines.h /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h /usr/include/ctype.h + /usr/include/dlfcn.h /usr/include/endian.h /usr/include/errno.h /usr/include/features-time64.h @@ -2985,6 +3040,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/gnu/stubs.h /usr/include/libintl.h /usr/include/limits.h + /usr/include/linux/close_range.h /usr/include/linux/errno.h /usr/include/linux/limits.h /usr/include/linux/posix_types.h @@ -3004,8 +3060,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/sys/cdefs.h /usr/include/sys/select.h /usr/include/sys/single_threaded.h + /usr/include/sys/syscall.h /usr/include/sys/types.h + /usr/include/syscall.h /usr/include/time.h + /usr/include/unistd.h /usr/include/vk_video/vulkan_video_codec_av1std.h /usr/include/vk_video/vulkan_video_codec_av1std_decode.h /usr/include/vk_video/vulkan_video_codec_av1std_encode.h @@ -3020,7 +3079,14 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /usr/include/vk_video/vulkan_video_codecs_common.h /usr/include/vulkan/vk_platform.h /usr/include/vulkan/vulkan.h + /usr/include/vulkan/vulkan.hpp /usr/include/vulkan/vulkan_core.h + /usr/include/vulkan/vulkan_enums.hpp + /usr/include/vulkan/vulkan_funcs.hpp + /usr/include/vulkan/vulkan_handles.hpp + /usr/include/vulkan/vulkan_hpp_macros.hpp + /usr/include/vulkan/vulkan_structs.hpp + /usr/include/vulkan/vulkan_to_string.hpp /usr/include/wchar.h /usr/include/wctype.h /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h @@ -3288,17 +3354,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanDeviceManager.cpp - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h /usr/include/GL/gl.h /usr/include/GL/glext.h @@ -3316,31 +3373,27 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/asm/posix_types.h /usr/include/asm/posix_types_64.h /usr/include/asm/types.h - /usr/include/assert.h + /usr/include/asm/unistd.h + /usr/include/asm/unistd_64.h /usr/include/bits/atomic_wide_counter.h /usr/include/bits/byteswap.h + /usr/include/bits/confname.h /usr/include/bits/cpu-set.h /usr/include/bits/endian.h /usr/include/bits/endianness.h + /usr/include/bits/environments.h /usr/include/bits/errno.h /usr/include/bits/floatn-common.h /usr/include/bits/floatn.h - /usr/include/bits/flt-eval-method.h - /usr/include/bits/fp-fast.h - /usr/include/bits/fp-logb.h - /usr/include/bits/iscanonical.h + /usr/include/bits/getopt_core.h + /usr/include/bits/getopt_posix.h /usr/include/bits/libc-header-start.h - /usr/include/bits/libm-simd-decl-stubs.h /usr/include/bits/local_lim.h /usr/include/bits/locale.h /usr/include/bits/long-double.h - /usr/include/bits/math-vector.h - /usr/include/bits/mathcalls-helper-functions.h - /usr/include/bits/mathcalls-macros.h - /usr/include/bits/mathcalls-narrow.h - /usr/include/bits/mathcalls.h /usr/include/bits/posix1_lim.h /usr/include/bits/posix2_lim.h + /usr/include/bits/posix_opt.h /usr/include/bits/pthread_stack_min-dynamic.h /usr/include/bits/pthreadtypes-arch.h /usr/include/bits/pthreadtypes.h @@ -3356,6 +3409,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/bits/stdlib-float.h /usr/include/bits/struct_mutex.h /usr/include/bits/struct_rwlock.h + /usr/include/bits/syscall.h /usr/include/bits/thread-shared-types.h /usr/include/bits/time.h /usr/include/bits/time64.h @@ -3389,6 +3443,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/bits/typesizes.h /usr/include/bits/uintn-identity.h /usr/include/bits/uio_lim.h + /usr/include/bits/unistd_ext.h /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h /usr/include/bits/wchar.h @@ -3396,11 +3451,19 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/bits/wordsize.h /usr/include/bits/xopen_lim.h /usr/include/c++/15.2.1/array + /usr/include/c++/15.2.1/backward/auto_ptr.h /usr/include/c++/15.2.1/backward/binders.h /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/bits/algorithmfwd.h + /usr/include/c++/15.2.1/bits/align.h /usr/include/c++/15.2.1/bits/alloc_traits.h + /usr/include/c++/15.2.1/bits/allocated_ptr.h /usr/include/c++/15.2.1/bits/allocator.h + /usr/include/c++/15.2.1/bits/atomic_base.h + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h + /usr/include/c++/15.2.1/bits/atomic_wait.h + /usr/include/c++/15.2.1/bits/basic_ios.h + /usr/include/c++/15.2.1/bits/basic_ios.tcc /usr/include/c++/15.2.1/bits/basic_string.h /usr/include/c++/15.2.1/bits/basic_string.tcc /usr/include/c++/15.2.1/bits/char_traits.h @@ -3419,8 +3482,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/c++/15.2.1/bits/functexcept.h /usr/include/c++/15.2.1/bits/functional_hash.h /usr/include/c++/15.2.1/bits/hash_bytes.h - /usr/include/c++/15.2.1/bits/hashtable.h - /usr/include/c++/15.2.1/bits/hashtable_policy.h /usr/include/c++/15.2.1/bits/invoke.h /usr/include/c++/15.2.1/bits/ios_base.h /usr/include/c++/15.2.1/bits/iterator_concepts.h @@ -3440,6 +3501,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/c++/15.2.1/bits/nested_exception.h /usr/include/c++/15.2.1/bits/new_allocator.h /usr/include/c++/15.2.1/bits/node_handle.h + /usr/include/c++/15.2.1/bits/ostream.h /usr/include/c++/15.2.1/bits/ostream_insert.h /usr/include/c++/15.2.1/bits/postypes.h /usr/include/c++/15.2.1/bits/predefined_ops.h @@ -3448,12 +3510,15 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/c++/15.2.1/bits/ranges_algobase.h /usr/include/c++/15.2.1/bits/ranges_base.h /usr/include/c++/15.2.1/bits/ranges_cmp.h + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h /usr/include/c++/15.2.1/bits/ranges_util.h /usr/include/c++/15.2.1/bits/refwrap.h /usr/include/c++/15.2.1/bits/requires_hosted.h - /usr/include/c++/15.2.1/bits/specfun.h + /usr/include/c++/15.2.1/bits/shared_ptr.h + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h + /usr/include/c++/15.2.1/bits/shared_ptr_base.h /usr/include/c++/15.2.1/bits/std_abs.h - /usr/include/c++/15.2.1/bits/std_function.h + /usr/include/c++/15.2.1/bits/std_mutex.h /usr/include/c++/15.2.1/bits/stl_algo.h /usr/include/c++/15.2.1/bits/stl_algobase.h /usr/include/c++/15.2.1/bits/stl_bvector.h @@ -3467,6 +3532,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/c++/15.2.1/bits/stl_multimap.h /usr/include/c++/15.2.1/bits/stl_multiset.h /usr/include/c++/15.2.1/bits/stl_pair.h + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h /usr/include/c++/15.2.1/bits/stl_set.h /usr/include/c++/15.2.1/bits/stl_tempbuf.h /usr/include/c++/15.2.1/bits/stl_tree.h @@ -3479,20 +3545,17 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/c++/15.2.1/bits/unicode-data.h /usr/include/c++/15.2.1/bits/unicode.h /usr/include/c++/15.2.1/bits/uniform_int_dist.h - /usr/include/c++/15.2.1/bits/unordered_map.h + /usr/include/c++/15.2.1/bits/unique_ptr.h /usr/include/c++/15.2.1/bits/uses_allocator.h /usr/include/c++/15.2.1/bits/uses_allocator_args.h /usr/include/c++/15.2.1/bits/utility.h /usr/include/c++/15.2.1/bits/vector.tcc /usr/include/c++/15.2.1/bits/version.h - /usr/include/c++/15.2.1/cassert /usr/include/c++/15.2.1/cctype /usr/include/c++/15.2.1/cerrno - /usr/include/c++/15.2.1/cfloat /usr/include/c++/15.2.1/charconv /usr/include/c++/15.2.1/climits /usr/include/c++/15.2.1/clocale - /usr/include/c++/15.2.1/cmath /usr/include/c++/15.2.1/compare /usr/include/c++/15.2.1/concepts /usr/include/c++/15.2.1/cstddef @@ -3508,19 +3571,23 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/c++/15.2.1/ext/aligned_buffer.h /usr/include/c++/15.2.1/ext/alloc_traits.h /usr/include/c++/15.2.1/ext/atomicity.h + /usr/include/c++/15.2.1/ext/concurrence.h /usr/include/c++/15.2.1/ext/numeric_traits.h /usr/include/c++/15.2.1/ext/string_conversions.h /usr/include/c++/15.2.1/ext/type_traits.h /usr/include/c++/15.2.1/format - /usr/include/c++/15.2.1/functional /usr/include/c++/15.2.1/initializer_list + /usr/include/c++/15.2.1/ios /usr/include/c++/15.2.1/iosfwd /usr/include/c++/15.2.1/limits /usr/include/c++/15.2.1/locale /usr/include/c++/15.2.1/map + /usr/include/c++/15.2.1/memory /usr/include/c++/15.2.1/new /usr/include/c++/15.2.1/numbers /usr/include/c++/15.2.1/optional + /usr/include/c++/15.2.1/pstl/execution_defs.h + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h /usr/include/c++/15.2.1/pstl/pstl_config.h /usr/include/c++/15.2.1/set /usr/include/c++/15.2.1/source_location @@ -3530,22 +3597,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/c++/15.2.1/string /usr/include/c++/15.2.1/string_view /usr/include/c++/15.2.1/system_error - /usr/include/c++/15.2.1/tr1/bessel_function.tcc - /usr/include/c++/15.2.1/tr1/beta_function.tcc - /usr/include/c++/15.2.1/tr1/ell_integral.tcc - /usr/include/c++/15.2.1/tr1/exp_integral.tcc - /usr/include/c++/15.2.1/tr1/gamma.tcc - /usr/include/c++/15.2.1/tr1/hypergeometric.tcc - /usr/include/c++/15.2.1/tr1/legendre_function.tcc - /usr/include/c++/15.2.1/tr1/modified_bessel_func.tcc - /usr/include/c++/15.2.1/tr1/poly_hermite.tcc - /usr/include/c++/15.2.1/tr1/poly_laguerre.tcc - /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc - /usr/include/c++/15.2.1/tr1/special_function_util.h /usr/include/c++/15.2.1/tuple /usr/include/c++/15.2.1/type_traits /usr/include/c++/15.2.1/typeinfo - /usr/include/c++/15.2.1/unordered_map /usr/include/c++/15.2.1/vector /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h @@ -3565,144 +3619,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/errno.h /usr/include/features-time64.h /usr/include/features.h - /usr/include/glm/common.hpp - /usr/include/glm/detail/_fixes.hpp - /usr/include/glm/detail/_vectorize.hpp - /usr/include/glm/detail/compute_common.hpp - /usr/include/glm/detail/compute_vector_decl.hpp - /usr/include/glm/detail/compute_vector_relational.hpp - /usr/include/glm/detail/func_common.inl - /usr/include/glm/detail/func_exponential.inl - /usr/include/glm/detail/func_geometric.inl - /usr/include/glm/detail/func_integer.inl - /usr/include/glm/detail/func_matrix.inl - /usr/include/glm/detail/func_packing.inl - /usr/include/glm/detail/func_trigonometric.inl - /usr/include/glm/detail/func_vector_relational.inl - /usr/include/glm/detail/qualifier.hpp - /usr/include/glm/detail/setup.hpp - /usr/include/glm/detail/type_half.hpp - /usr/include/glm/detail/type_half.inl - /usr/include/glm/detail/type_mat2x2.hpp - /usr/include/glm/detail/type_mat2x2.inl - /usr/include/glm/detail/type_mat2x3.hpp - /usr/include/glm/detail/type_mat2x3.inl - /usr/include/glm/detail/type_mat2x4.hpp - /usr/include/glm/detail/type_mat2x4.inl - /usr/include/glm/detail/type_mat3x2.hpp - /usr/include/glm/detail/type_mat3x2.inl - /usr/include/glm/detail/type_mat3x3.hpp - /usr/include/glm/detail/type_mat3x3.inl - /usr/include/glm/detail/type_mat3x4.hpp - /usr/include/glm/detail/type_mat3x4.inl - /usr/include/glm/detail/type_mat4x2.hpp - /usr/include/glm/detail/type_mat4x2.inl - /usr/include/glm/detail/type_mat4x3.hpp - /usr/include/glm/detail/type_mat4x3.inl - /usr/include/glm/detail/type_mat4x4.hpp - /usr/include/glm/detail/type_mat4x4.inl - /usr/include/glm/detail/type_vec1.hpp - /usr/include/glm/detail/type_vec1.inl - /usr/include/glm/detail/type_vec2.hpp - /usr/include/glm/detail/type_vec2.inl - /usr/include/glm/detail/type_vec3.hpp - /usr/include/glm/detail/type_vec3.inl - /usr/include/glm/detail/type_vec4.hpp - /usr/include/glm/detail/type_vec4.inl - /usr/include/glm/exponential.hpp - /usr/include/glm/ext/matrix_double2x2.hpp - /usr/include/glm/ext/matrix_double2x2_precision.hpp - /usr/include/glm/ext/matrix_double2x3.hpp - /usr/include/glm/ext/matrix_double2x3_precision.hpp - /usr/include/glm/ext/matrix_double2x4.hpp - /usr/include/glm/ext/matrix_double2x4_precision.hpp - /usr/include/glm/ext/matrix_double3x2.hpp - /usr/include/glm/ext/matrix_double3x2_precision.hpp - /usr/include/glm/ext/matrix_double3x3.hpp - /usr/include/glm/ext/matrix_double3x3_precision.hpp - /usr/include/glm/ext/matrix_double3x4.hpp - /usr/include/glm/ext/matrix_double3x4_precision.hpp - /usr/include/glm/ext/matrix_double4x2.hpp - /usr/include/glm/ext/matrix_double4x2_precision.hpp - /usr/include/glm/ext/matrix_double4x3.hpp - /usr/include/glm/ext/matrix_double4x3_precision.hpp - /usr/include/glm/ext/matrix_double4x4.hpp - /usr/include/glm/ext/matrix_double4x4_precision.hpp - /usr/include/glm/ext/matrix_float2x2.hpp - /usr/include/glm/ext/matrix_float2x2_precision.hpp - /usr/include/glm/ext/matrix_float2x3.hpp - /usr/include/glm/ext/matrix_float2x3_precision.hpp - /usr/include/glm/ext/matrix_float2x4.hpp - /usr/include/glm/ext/matrix_float2x4_precision.hpp - /usr/include/glm/ext/matrix_float3x2.hpp - /usr/include/glm/ext/matrix_float3x2_precision.hpp - /usr/include/glm/ext/matrix_float3x3.hpp - /usr/include/glm/ext/matrix_float3x3_precision.hpp - /usr/include/glm/ext/matrix_float3x4.hpp - /usr/include/glm/ext/matrix_float3x4_precision.hpp - /usr/include/glm/ext/matrix_float4x2.hpp - /usr/include/glm/ext/matrix_float4x2_precision.hpp - /usr/include/glm/ext/matrix_float4x3.hpp - /usr/include/glm/ext/matrix_float4x3_precision.hpp - /usr/include/glm/ext/matrix_float4x4.hpp - /usr/include/glm/ext/matrix_float4x4_precision.hpp - /usr/include/glm/ext/scalar_int_sized.hpp - /usr/include/glm/ext/scalar_uint_sized.hpp - /usr/include/glm/ext/vector_bool2.hpp - /usr/include/glm/ext/vector_bool2_precision.hpp - /usr/include/glm/ext/vector_bool3.hpp - /usr/include/glm/ext/vector_bool3_precision.hpp - /usr/include/glm/ext/vector_bool4.hpp - /usr/include/glm/ext/vector_bool4_precision.hpp - /usr/include/glm/ext/vector_double2.hpp - /usr/include/glm/ext/vector_double2_precision.hpp - /usr/include/glm/ext/vector_double3.hpp - /usr/include/glm/ext/vector_double3_precision.hpp - /usr/include/glm/ext/vector_double4.hpp - /usr/include/glm/ext/vector_double4_precision.hpp - /usr/include/glm/ext/vector_float2.hpp - /usr/include/glm/ext/vector_float2_precision.hpp - /usr/include/glm/ext/vector_float3.hpp - /usr/include/glm/ext/vector_float3_precision.hpp - /usr/include/glm/ext/vector_float4.hpp - /usr/include/glm/ext/vector_float4_precision.hpp - /usr/include/glm/ext/vector_int2.hpp - /usr/include/glm/ext/vector_int2_sized.hpp - /usr/include/glm/ext/vector_int3.hpp - /usr/include/glm/ext/vector_int3_sized.hpp - /usr/include/glm/ext/vector_int4.hpp - /usr/include/glm/ext/vector_int4_sized.hpp - /usr/include/glm/ext/vector_uint2.hpp - /usr/include/glm/ext/vector_uint2_sized.hpp - /usr/include/glm/ext/vector_uint3.hpp - /usr/include/glm/ext/vector_uint3_sized.hpp - /usr/include/glm/ext/vector_uint4.hpp - /usr/include/glm/ext/vector_uint4_sized.hpp - /usr/include/glm/fwd.hpp - /usr/include/glm/geometric.hpp - /usr/include/glm/glm.hpp - /usr/include/glm/integer.hpp - /usr/include/glm/mat2x2.hpp - /usr/include/glm/mat2x3.hpp - /usr/include/glm/mat2x4.hpp - /usr/include/glm/mat3x2.hpp - /usr/include/glm/mat3x3.hpp - /usr/include/glm/mat3x4.hpp - /usr/include/glm/mat4x2.hpp - /usr/include/glm/mat4x3.hpp - /usr/include/glm/mat4x4.hpp - /usr/include/glm/matrix.hpp - /usr/include/glm/packing.hpp - /usr/include/glm/simd/platform.h - /usr/include/glm/trigonometric.hpp - /usr/include/glm/vec2.hpp - /usr/include/glm/vec3.hpp - /usr/include/glm/vec4.hpp - /usr/include/glm/vector_relational.hpp /usr/include/gnu/stubs-64.h /usr/include/gnu/stubs.h /usr/include/libintl.h /usr/include/limits.h + /usr/include/linux/close_range.h /usr/include/linux/errno.h /usr/include/linux/limits.h /usr/include/linux/posix_types.h @@ -3710,7 +3631,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/linux/stddef.h /usr/include/linux/types.h /usr/include/locale.h - /usr/include/math.h /usr/include/pthread.h /usr/include/sched.h /usr/include/stdc-predef.h @@ -3720,8 +3640,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/sys/cdefs.h /usr/include/sys/select.h /usr/include/sys/single_threaded.h + /usr/include/sys/syscall.h /usr/include/sys/types.h + /usr/include/syscall.h /usr/include/time.h + /usr/include/unistd.h /usr/include/vk_video/vulkan_video_codec_av1std.h /usr/include/vk_video/vulkan_video_codec_av1std_decode.h /usr/include/vk_video/vulkan_video_codec_av1std_encode.h @@ -3739,7 +3662,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o /usr/include/vulkan/vulkan_core.h /usr/include/wchar.h /usr/include/wctype.h - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h @@ -4009,17 +3931,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanInstanceManager.cpp - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.hpp /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h /usr/include/GL/gl.h /usr/include/GL/glext.h @@ -4037,31 +3951,27 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/asm/posix_types.h /usr/include/asm/posix_types_64.h /usr/include/asm/types.h - /usr/include/assert.h + /usr/include/asm/unistd.h + /usr/include/asm/unistd_64.h /usr/include/bits/atomic_wide_counter.h /usr/include/bits/byteswap.h + /usr/include/bits/confname.h /usr/include/bits/cpu-set.h /usr/include/bits/endian.h /usr/include/bits/endianness.h + /usr/include/bits/environments.h /usr/include/bits/errno.h /usr/include/bits/floatn-common.h /usr/include/bits/floatn.h - /usr/include/bits/flt-eval-method.h - /usr/include/bits/fp-fast.h - /usr/include/bits/fp-logb.h - /usr/include/bits/iscanonical.h + /usr/include/bits/getopt_core.h + /usr/include/bits/getopt_posix.h /usr/include/bits/libc-header-start.h - /usr/include/bits/libm-simd-decl-stubs.h /usr/include/bits/local_lim.h /usr/include/bits/locale.h /usr/include/bits/long-double.h - /usr/include/bits/math-vector.h - /usr/include/bits/mathcalls-helper-functions.h - /usr/include/bits/mathcalls-macros.h - /usr/include/bits/mathcalls-narrow.h - /usr/include/bits/mathcalls.h /usr/include/bits/posix1_lim.h /usr/include/bits/posix2_lim.h + /usr/include/bits/posix_opt.h /usr/include/bits/pthread_stack_min-dynamic.h /usr/include/bits/pthreadtypes-arch.h /usr/include/bits/pthreadtypes.h @@ -4077,6 +3987,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/bits/stdlib-float.h /usr/include/bits/struct_mutex.h /usr/include/bits/struct_rwlock.h + /usr/include/bits/syscall.h /usr/include/bits/thread-shared-types.h /usr/include/bits/time.h /usr/include/bits/time64.h @@ -4110,6 +4021,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/bits/typesizes.h /usr/include/bits/uintn-identity.h /usr/include/bits/uio_lim.h + /usr/include/bits/unistd_ext.h /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h /usr/include/bits/wchar.h @@ -4117,11 +4029,19 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/bits/wordsize.h /usr/include/bits/xopen_lim.h /usr/include/c++/15.2.1/array + /usr/include/c++/15.2.1/backward/auto_ptr.h /usr/include/c++/15.2.1/backward/binders.h /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/bits/algorithmfwd.h + /usr/include/c++/15.2.1/bits/align.h /usr/include/c++/15.2.1/bits/alloc_traits.h + /usr/include/c++/15.2.1/bits/allocated_ptr.h /usr/include/c++/15.2.1/bits/allocator.h + /usr/include/c++/15.2.1/bits/atomic_base.h + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h + /usr/include/c++/15.2.1/bits/atomic_wait.h + /usr/include/c++/15.2.1/bits/basic_ios.h + /usr/include/c++/15.2.1/bits/basic_ios.tcc /usr/include/c++/15.2.1/bits/basic_string.h /usr/include/c++/15.2.1/bits/basic_string.tcc /usr/include/c++/15.2.1/bits/char_traits.h @@ -4132,7 +4052,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/c++/15.2.1/bits/cxxabi_forced.h /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h /usr/include/c++/15.2.1/bits/enable_special_members.h - /usr/include/c++/15.2.1/bits/erase_if.h /usr/include/c++/15.2.1/bits/exception.h /usr/include/c++/15.2.1/bits/exception_defines.h /usr/include/c++/15.2.1/bits/exception_ptr.h @@ -4140,8 +4059,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/c++/15.2.1/bits/functexcept.h /usr/include/c++/15.2.1/bits/functional_hash.h /usr/include/c++/15.2.1/bits/hash_bytes.h - /usr/include/c++/15.2.1/bits/hashtable.h - /usr/include/c++/15.2.1/bits/hashtable_policy.h /usr/include/c++/15.2.1/bits/invoke.h /usr/include/c++/15.2.1/bits/ios_base.h /usr/include/c++/15.2.1/bits/iterator_concepts.h @@ -4160,7 +4077,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/c++/15.2.1/bits/move.h /usr/include/c++/15.2.1/bits/nested_exception.h /usr/include/c++/15.2.1/bits/new_allocator.h - /usr/include/c++/15.2.1/bits/node_handle.h + /usr/include/c++/15.2.1/bits/ostream.h /usr/include/c++/15.2.1/bits/ostream_insert.h /usr/include/c++/15.2.1/bits/postypes.h /usr/include/c++/15.2.1/bits/predefined_ops.h @@ -4169,12 +4086,15 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/c++/15.2.1/bits/ranges_algobase.h /usr/include/c++/15.2.1/bits/ranges_base.h /usr/include/c++/15.2.1/bits/ranges_cmp.h + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h /usr/include/c++/15.2.1/bits/ranges_util.h /usr/include/c++/15.2.1/bits/refwrap.h /usr/include/c++/15.2.1/bits/requires_hosted.h - /usr/include/c++/15.2.1/bits/specfun.h + /usr/include/c++/15.2.1/bits/shared_ptr.h + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h + /usr/include/c++/15.2.1/bits/shared_ptr_base.h /usr/include/c++/15.2.1/bits/std_abs.h - /usr/include/c++/15.2.1/bits/std_function.h + /usr/include/c++/15.2.1/bits/std_mutex.h /usr/include/c++/15.2.1/bits/stl_algo.h /usr/include/c++/15.2.1/bits/stl_algobase.h /usr/include/c++/15.2.1/bits/stl_bvector.h @@ -4185,6 +4105,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h /usr/include/c++/15.2.1/bits/stl_pair.h + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h /usr/include/c++/15.2.1/bits/stl_tempbuf.h /usr/include/c++/15.2.1/bits/stl_uninitialized.h /usr/include/c++/15.2.1/bits/stl_vector.h @@ -4195,20 +4116,17 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/c++/15.2.1/bits/unicode-data.h /usr/include/c++/15.2.1/bits/unicode.h /usr/include/c++/15.2.1/bits/uniform_int_dist.h - /usr/include/c++/15.2.1/bits/unordered_map.h + /usr/include/c++/15.2.1/bits/unique_ptr.h /usr/include/c++/15.2.1/bits/uses_allocator.h /usr/include/c++/15.2.1/bits/uses_allocator_args.h /usr/include/c++/15.2.1/bits/utility.h /usr/include/c++/15.2.1/bits/vector.tcc /usr/include/c++/15.2.1/bits/version.h - /usr/include/c++/15.2.1/cassert /usr/include/c++/15.2.1/cctype /usr/include/c++/15.2.1/cerrno - /usr/include/c++/15.2.1/cfloat /usr/include/c++/15.2.1/charconv /usr/include/c++/15.2.1/climits /usr/include/c++/15.2.1/clocale - /usr/include/c++/15.2.1/cmath /usr/include/c++/15.2.1/compare /usr/include/c++/15.2.1/concepts /usr/include/c++/15.2.1/cstddef @@ -4225,18 +4143,22 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/c++/15.2.1/ext/aligned_buffer.h /usr/include/c++/15.2.1/ext/alloc_traits.h /usr/include/c++/15.2.1/ext/atomicity.h + /usr/include/c++/15.2.1/ext/concurrence.h /usr/include/c++/15.2.1/ext/numeric_traits.h /usr/include/c++/15.2.1/ext/string_conversions.h /usr/include/c++/15.2.1/ext/type_traits.h /usr/include/c++/15.2.1/format - /usr/include/c++/15.2.1/functional /usr/include/c++/15.2.1/initializer_list + /usr/include/c++/15.2.1/ios /usr/include/c++/15.2.1/iosfwd /usr/include/c++/15.2.1/limits /usr/include/c++/15.2.1/locale + /usr/include/c++/15.2.1/memory /usr/include/c++/15.2.1/new /usr/include/c++/15.2.1/numbers /usr/include/c++/15.2.1/optional + /usr/include/c++/15.2.1/pstl/execution_defs.h + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h /usr/include/c++/15.2.1/pstl/pstl_config.h /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/span @@ -4245,22 +4167,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/c++/15.2.1/string /usr/include/c++/15.2.1/string_view /usr/include/c++/15.2.1/system_error - /usr/include/c++/15.2.1/tr1/bessel_function.tcc - /usr/include/c++/15.2.1/tr1/beta_function.tcc - /usr/include/c++/15.2.1/tr1/ell_integral.tcc - /usr/include/c++/15.2.1/tr1/exp_integral.tcc - /usr/include/c++/15.2.1/tr1/gamma.tcc - /usr/include/c++/15.2.1/tr1/hypergeometric.tcc - /usr/include/c++/15.2.1/tr1/legendre_function.tcc - /usr/include/c++/15.2.1/tr1/modified_bessel_func.tcc - /usr/include/c++/15.2.1/tr1/poly_hermite.tcc - /usr/include/c++/15.2.1/tr1/poly_laguerre.tcc - /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc - /usr/include/c++/15.2.1/tr1/special_function_util.h /usr/include/c++/15.2.1/tuple /usr/include/c++/15.2.1/type_traits /usr/include/c++/15.2.1/typeinfo - /usr/include/c++/15.2.1/unordered_map /usr/include/c++/15.2.1/vector /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h @@ -4280,144 +4189,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/errno.h /usr/include/features-time64.h /usr/include/features.h - /usr/include/glm/common.hpp - /usr/include/glm/detail/_fixes.hpp - /usr/include/glm/detail/_vectorize.hpp - /usr/include/glm/detail/compute_common.hpp - /usr/include/glm/detail/compute_vector_decl.hpp - /usr/include/glm/detail/compute_vector_relational.hpp - /usr/include/glm/detail/func_common.inl - /usr/include/glm/detail/func_exponential.inl - /usr/include/glm/detail/func_geometric.inl - /usr/include/glm/detail/func_integer.inl - /usr/include/glm/detail/func_matrix.inl - /usr/include/glm/detail/func_packing.inl - /usr/include/glm/detail/func_trigonometric.inl - /usr/include/glm/detail/func_vector_relational.inl - /usr/include/glm/detail/qualifier.hpp - /usr/include/glm/detail/setup.hpp - /usr/include/glm/detail/type_half.hpp - /usr/include/glm/detail/type_half.inl - /usr/include/glm/detail/type_mat2x2.hpp - /usr/include/glm/detail/type_mat2x2.inl - /usr/include/glm/detail/type_mat2x3.hpp - /usr/include/glm/detail/type_mat2x3.inl - /usr/include/glm/detail/type_mat2x4.hpp - /usr/include/glm/detail/type_mat2x4.inl - /usr/include/glm/detail/type_mat3x2.hpp - /usr/include/glm/detail/type_mat3x2.inl - /usr/include/glm/detail/type_mat3x3.hpp - /usr/include/glm/detail/type_mat3x3.inl - /usr/include/glm/detail/type_mat3x4.hpp - /usr/include/glm/detail/type_mat3x4.inl - /usr/include/glm/detail/type_mat4x2.hpp - /usr/include/glm/detail/type_mat4x2.inl - /usr/include/glm/detail/type_mat4x3.hpp - /usr/include/glm/detail/type_mat4x3.inl - /usr/include/glm/detail/type_mat4x4.hpp - /usr/include/glm/detail/type_mat4x4.inl - /usr/include/glm/detail/type_vec1.hpp - /usr/include/glm/detail/type_vec1.inl - /usr/include/glm/detail/type_vec2.hpp - /usr/include/glm/detail/type_vec2.inl - /usr/include/glm/detail/type_vec3.hpp - /usr/include/glm/detail/type_vec3.inl - /usr/include/glm/detail/type_vec4.hpp - /usr/include/glm/detail/type_vec4.inl - /usr/include/glm/exponential.hpp - /usr/include/glm/ext/matrix_double2x2.hpp - /usr/include/glm/ext/matrix_double2x2_precision.hpp - /usr/include/glm/ext/matrix_double2x3.hpp - /usr/include/glm/ext/matrix_double2x3_precision.hpp - /usr/include/glm/ext/matrix_double2x4.hpp - /usr/include/glm/ext/matrix_double2x4_precision.hpp - /usr/include/glm/ext/matrix_double3x2.hpp - /usr/include/glm/ext/matrix_double3x2_precision.hpp - /usr/include/glm/ext/matrix_double3x3.hpp - /usr/include/glm/ext/matrix_double3x3_precision.hpp - /usr/include/glm/ext/matrix_double3x4.hpp - /usr/include/glm/ext/matrix_double3x4_precision.hpp - /usr/include/glm/ext/matrix_double4x2.hpp - /usr/include/glm/ext/matrix_double4x2_precision.hpp - /usr/include/glm/ext/matrix_double4x3.hpp - /usr/include/glm/ext/matrix_double4x3_precision.hpp - /usr/include/glm/ext/matrix_double4x4.hpp - /usr/include/glm/ext/matrix_double4x4_precision.hpp - /usr/include/glm/ext/matrix_float2x2.hpp - /usr/include/glm/ext/matrix_float2x2_precision.hpp - /usr/include/glm/ext/matrix_float2x3.hpp - /usr/include/glm/ext/matrix_float2x3_precision.hpp - /usr/include/glm/ext/matrix_float2x4.hpp - /usr/include/glm/ext/matrix_float2x4_precision.hpp - /usr/include/glm/ext/matrix_float3x2.hpp - /usr/include/glm/ext/matrix_float3x2_precision.hpp - /usr/include/glm/ext/matrix_float3x3.hpp - /usr/include/glm/ext/matrix_float3x3_precision.hpp - /usr/include/glm/ext/matrix_float3x4.hpp - /usr/include/glm/ext/matrix_float3x4_precision.hpp - /usr/include/glm/ext/matrix_float4x2.hpp - /usr/include/glm/ext/matrix_float4x2_precision.hpp - /usr/include/glm/ext/matrix_float4x3.hpp - /usr/include/glm/ext/matrix_float4x3_precision.hpp - /usr/include/glm/ext/matrix_float4x4.hpp - /usr/include/glm/ext/matrix_float4x4_precision.hpp - /usr/include/glm/ext/scalar_int_sized.hpp - /usr/include/glm/ext/scalar_uint_sized.hpp - /usr/include/glm/ext/vector_bool2.hpp - /usr/include/glm/ext/vector_bool2_precision.hpp - /usr/include/glm/ext/vector_bool3.hpp - /usr/include/glm/ext/vector_bool3_precision.hpp - /usr/include/glm/ext/vector_bool4.hpp - /usr/include/glm/ext/vector_bool4_precision.hpp - /usr/include/glm/ext/vector_double2.hpp - /usr/include/glm/ext/vector_double2_precision.hpp - /usr/include/glm/ext/vector_double3.hpp - /usr/include/glm/ext/vector_double3_precision.hpp - /usr/include/glm/ext/vector_double4.hpp - /usr/include/glm/ext/vector_double4_precision.hpp - /usr/include/glm/ext/vector_float2.hpp - /usr/include/glm/ext/vector_float2_precision.hpp - /usr/include/glm/ext/vector_float3.hpp - /usr/include/glm/ext/vector_float3_precision.hpp - /usr/include/glm/ext/vector_float4.hpp - /usr/include/glm/ext/vector_float4_precision.hpp - /usr/include/glm/ext/vector_int2.hpp - /usr/include/glm/ext/vector_int2_sized.hpp - /usr/include/glm/ext/vector_int3.hpp - /usr/include/glm/ext/vector_int3_sized.hpp - /usr/include/glm/ext/vector_int4.hpp - /usr/include/glm/ext/vector_int4_sized.hpp - /usr/include/glm/ext/vector_uint2.hpp - /usr/include/glm/ext/vector_uint2_sized.hpp - /usr/include/glm/ext/vector_uint3.hpp - /usr/include/glm/ext/vector_uint3_sized.hpp - /usr/include/glm/ext/vector_uint4.hpp - /usr/include/glm/ext/vector_uint4_sized.hpp - /usr/include/glm/fwd.hpp - /usr/include/glm/geometric.hpp - /usr/include/glm/glm.hpp - /usr/include/glm/integer.hpp - /usr/include/glm/mat2x2.hpp - /usr/include/glm/mat2x3.hpp - /usr/include/glm/mat2x4.hpp - /usr/include/glm/mat3x2.hpp - /usr/include/glm/mat3x3.hpp - /usr/include/glm/mat3x4.hpp - /usr/include/glm/mat4x2.hpp - /usr/include/glm/mat4x3.hpp - /usr/include/glm/mat4x4.hpp - /usr/include/glm/matrix.hpp - /usr/include/glm/packing.hpp - /usr/include/glm/simd/platform.h - /usr/include/glm/trigonometric.hpp - /usr/include/glm/vec2.hpp - /usr/include/glm/vec3.hpp - /usr/include/glm/vec4.hpp - /usr/include/glm/vector_relational.hpp /usr/include/gnu/stubs-64.h /usr/include/gnu/stubs.h /usr/include/libintl.h /usr/include/limits.h + /usr/include/linux/close_range.h /usr/include/linux/errno.h /usr/include/linux/limits.h /usr/include/linux/posix_types.h @@ -4425,7 +4201,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/linux/stddef.h /usr/include/linux/types.h /usr/include/locale.h - /usr/include/math.h /usr/include/pthread.h /usr/include/sched.h /usr/include/stdc-predef.h @@ -4437,8 +4212,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/sys/cdefs.h /usr/include/sys/select.h /usr/include/sys/single_threaded.h + /usr/include/sys/syscall.h /usr/include/sys/types.h + /usr/include/syscall.h /usr/include/time.h + /usr/include/unistd.h /usr/include/vk_video/vulkan_video_codec_av1std.h /usr/include/vk_video/vulkan_video_codec_av1std_decode.h /usr/include/vk_video/vulkan_video_codec_av1std_encode.h @@ -4456,7 +4234,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o /usr/include/vulkan/vulkan_core.h /usr/include/wchar.h /usr/include/wctype.h - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h @@ -4465,10 +4242,10 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanPipeline.cpp - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/FileReader.h /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h /usr/include/GL/gl.h /usr/include/GL/glext.h /usr/include/GLFW/glfw3.h @@ -5441,11 +5218,14 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h -CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o - /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanVertexBuffer.cpp - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h +CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o + /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanTexture.cpp + /home/Jordan/Projects/CPP/LearningVulkan/lib/stb/stb_image.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanBuffers.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanTexture.hpp /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h /usr/include/GL/gl.h /usr/include/GL/glext.h /usr/include/GLFW/glfw3.h @@ -5466,6 +5246,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o /usr/include/bits/atomic_wide_counter.h /usr/include/bits/byteswap.h /usr/include/bits/cpu-set.h + /usr/include/bits/dl_find_object.h + /usr/include/bits/dlfcn.h /usr/include/bits/endian.h /usr/include/bits/endianness.h /usr/include/bits/errno.h @@ -5541,6 +5323,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o /usr/include/bits/wctype-wchar.h /usr/include/bits/wordsize.h /usr/include/bits/xopen_lim.h + /usr/include/c++/15.2.1/algorithm /usr/include/c++/15.2.1/array /usr/include/c++/15.2.1/backward/binders.h /usr/include/c++/15.2.1/bit @@ -5591,6 +5374,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o /usr/include/c++/15.2.1/bits/predefined_ops.h /usr/include/c++/15.2.1/bits/ptr_traits.h /usr/include/c++/15.2.1/bits/range_access.h + /usr/include/c++/15.2.1/bits/ranges_algo.h /usr/include/c++/15.2.1/bits/ranges_algobase.h /usr/include/c++/15.2.1/bits/ranges_base.h /usr/include/c++/15.2.1/bits/ranges_cmp.h @@ -5610,6 +5394,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h /usr/include/c++/15.2.1/bits/stl_pair.h + /usr/include/c++/15.2.1/bits/stl_relops.h /usr/include/c++/15.2.1/bits/stl_tempbuf.h /usr/include/c++/15.2.1/bits/stl_uninitialized.h /usr/include/c++/15.2.1/bits/stl_vector.h @@ -5662,10 +5447,13 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o /usr/include/c++/15.2.1/new /usr/include/c++/15.2.1/numbers /usr/include/c++/15.2.1/optional + /usr/include/c++/15.2.1/pstl/execution_defs.h + /usr/include/c++/15.2.1/pstl/glue_algorithm_defs.h /usr/include/c++/15.2.1/pstl/pstl_config.h /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/span /usr/include/c++/15.2.1/stdexcept + /usr/include/c++/15.2.1/stdlib.h /usr/include/c++/15.2.1/streambuf /usr/include/c++/15.2.1/string /usr/include/c++/15.2.1/string_view @@ -5686,7 +5474,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o /usr/include/c++/15.2.1/type_traits /usr/include/c++/15.2.1/typeinfo /usr/include/c++/15.2.1/unordered_map + /usr/include/c++/15.2.1/utility /usr/include/c++/15.2.1/vector + /usr/include/c++/15.2.1/version /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h @@ -5701,6 +5491,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/os_defines.h /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h /usr/include/ctype.h + /usr/include/dlfcn.h /usr/include/endian.h /usr/include/errno.h /usr/include/features-time64.h @@ -5878,7 +5669,14 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o /usr/include/vk_video/vulkan_video_codecs_common.h /usr/include/vulkan/vk_platform.h /usr/include/vulkan/vulkan.h + /usr/include/vulkan/vulkan.hpp /usr/include/vulkan/vulkan_core.h + /usr/include/vulkan/vulkan_enums.hpp + /usr/include/vulkan/vulkan_funcs.hpp + /usr/include/vulkan/vulkan_handles.hpp + /usr/include/vulkan/vulkan_hpp_macros.hpp + /usr/include/vulkan/vulkan_structs.hpp + /usr/include/vulkan/vulkan_to_string.hpp /usr/include/wchar.h /usr/include/wctype.h /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h @@ -6318,7 +6116,7 @@ LearningVulkan /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_widgets.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/main.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o - /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o + /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o @@ -6327,7 +6125,7 @@ LearningVulkan /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o - /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o + /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o /home/Jordan/Projects/CPP/LearningVulkan/build/CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o diff --git a/build/CMakeFiles/LearningVulkan.dir/compiler_depend.make b/build/CMakeFiles/LearningVulkan.dir/compiler_depend.make index 10e21ff..41b6a44 100644 --- a/build/CMakeFiles/LearningVulkan.dir/compiler_depend.make +++ b/build/CMakeFiles/LearningVulkan.dir/compiler_depend.make @@ -1365,18 +1365,10 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imconfig.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/GlfwWindowManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h \ /usr/include/GL/gl.h \ /usr/include/GL/glext.h \ /usr/include/GLFW/glfw3.h \ @@ -1394,18 +1386,24 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/asm/posix_types.h \ /usr/include/asm/posix_types_64.h \ /usr/include/asm/types.h \ + /usr/include/asm/unistd.h \ + /usr/include/asm/unistd_64.h \ /usr/include/assert.h \ /usr/include/bits/atomic_wide_counter.h \ /usr/include/bits/byteswap.h \ + /usr/include/bits/confname.h \ /usr/include/bits/cpu-set.h \ /usr/include/bits/endian.h \ /usr/include/bits/endianness.h \ + /usr/include/bits/environments.h \ /usr/include/bits/errno.h \ /usr/include/bits/floatn-common.h \ /usr/include/bits/floatn.h \ /usr/include/bits/flt-eval-method.h \ /usr/include/bits/fp-fast.h \ /usr/include/bits/fp-logb.h \ + /usr/include/bits/getopt_core.h \ + /usr/include/bits/getopt_posix.h \ /usr/include/bits/iscanonical.h \ /usr/include/bits/libc-header-start.h \ /usr/include/bits/libm-simd-decl-stubs.h \ @@ -1419,6 +1417,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/bits/mathcalls.h \ /usr/include/bits/posix1_lim.h \ /usr/include/bits/posix2_lim.h \ + /usr/include/bits/posix_opt.h \ /usr/include/bits/pthread_stack_min-dynamic.h \ /usr/include/bits/pthreadtypes-arch.h \ /usr/include/bits/pthreadtypes.h \ @@ -1434,6 +1433,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/bits/stdlib-float.h \ /usr/include/bits/struct_mutex.h \ /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/syscall.h \ /usr/include/bits/thread-shared-types.h \ /usr/include/bits/time.h \ /usr/include/bits/time64.h \ @@ -1467,6 +1467,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/bits/typesizes.h \ /usr/include/bits/uintn-identity.h \ /usr/include/bits/uio_lim.h \ + /usr/include/bits/unistd_ext.h \ /usr/include/bits/waitflags.h \ /usr/include/bits/waitstatus.h \ /usr/include/bits/wchar.h \ @@ -1474,11 +1475,19 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/bits/wordsize.h \ /usr/include/bits/xopen_lim.h \ /usr/include/c++/15.2.1/array \ + /usr/include/c++/15.2.1/backward/auto_ptr.h \ /usr/include/c++/15.2.1/backward/binders.h \ /usr/include/c++/15.2.1/bit \ /usr/include/c++/15.2.1/bits/algorithmfwd.h \ + /usr/include/c++/15.2.1/bits/align.h \ /usr/include/c++/15.2.1/bits/alloc_traits.h \ + /usr/include/c++/15.2.1/bits/allocated_ptr.h \ /usr/include/c++/15.2.1/bits/allocator.h \ + /usr/include/c++/15.2.1/bits/atomic_base.h \ + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h \ + /usr/include/c++/15.2.1/bits/atomic_wait.h \ + /usr/include/c++/15.2.1/bits/basic_ios.h \ + /usr/include/c++/15.2.1/bits/basic_ios.tcc \ /usr/include/c++/15.2.1/bits/basic_string.h \ /usr/include/c++/15.2.1/bits/basic_string.tcc \ /usr/include/c++/15.2.1/bits/char_traits.h \ @@ -1518,6 +1527,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/c++/15.2.1/bits/nested_exception.h \ /usr/include/c++/15.2.1/bits/new_allocator.h \ /usr/include/c++/15.2.1/bits/node_handle.h \ + /usr/include/c++/15.2.1/bits/ostream.h \ /usr/include/c++/15.2.1/bits/ostream_insert.h \ /usr/include/c++/15.2.1/bits/postypes.h \ /usr/include/c++/15.2.1/bits/predefined_ops.h \ @@ -1526,12 +1536,17 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/c++/15.2.1/bits/ranges_algobase.h \ /usr/include/c++/15.2.1/bits/ranges_base.h \ /usr/include/c++/15.2.1/bits/ranges_cmp.h \ + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h \ /usr/include/c++/15.2.1/bits/ranges_util.h \ /usr/include/c++/15.2.1/bits/refwrap.h \ /usr/include/c++/15.2.1/bits/requires_hosted.h \ + /usr/include/c++/15.2.1/bits/shared_ptr.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_base.h \ /usr/include/c++/15.2.1/bits/specfun.h \ /usr/include/c++/15.2.1/bits/std_abs.h \ /usr/include/c++/15.2.1/bits/std_function.h \ + /usr/include/c++/15.2.1/bits/std_mutex.h \ /usr/include/c++/15.2.1/bits/stl_algo.h \ /usr/include/c++/15.2.1/bits/stl_algobase.h \ /usr/include/c++/15.2.1/bits/stl_bvector.h \ @@ -1542,6 +1557,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h \ /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h \ /usr/include/c++/15.2.1/bits/stl_pair.h \ + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h \ /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ /usr/include/c++/15.2.1/bits/stl_uninitialized.h \ /usr/include/c++/15.2.1/bits/stl_vector.h \ @@ -1552,6 +1568,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/c++/15.2.1/bits/unicode-data.h \ /usr/include/c++/15.2.1/bits/unicode.h \ /usr/include/c++/15.2.1/bits/uniform_int_dist.h \ + /usr/include/c++/15.2.1/bits/unique_ptr.h \ /usr/include/c++/15.2.1/bits/unordered_map.h \ /usr/include/c++/15.2.1/bits/uses_allocator.h \ /usr/include/c++/15.2.1/bits/uses_allocator_args.h \ @@ -1581,18 +1598,23 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/c++/15.2.1/ext/aligned_buffer.h \ /usr/include/c++/15.2.1/ext/alloc_traits.h \ /usr/include/c++/15.2.1/ext/atomicity.h \ + /usr/include/c++/15.2.1/ext/concurrence.h \ /usr/include/c++/15.2.1/ext/numeric_traits.h \ /usr/include/c++/15.2.1/ext/string_conversions.h \ /usr/include/c++/15.2.1/ext/type_traits.h \ /usr/include/c++/15.2.1/format \ /usr/include/c++/15.2.1/functional \ /usr/include/c++/15.2.1/initializer_list \ + /usr/include/c++/15.2.1/ios \ /usr/include/c++/15.2.1/iosfwd \ /usr/include/c++/15.2.1/limits \ /usr/include/c++/15.2.1/locale \ + /usr/include/c++/15.2.1/memory \ /usr/include/c++/15.2.1/new \ /usr/include/c++/15.2.1/numbers \ /usr/include/c++/15.2.1/optional \ + /usr/include/c++/15.2.1/pstl/execution_defs.h \ + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h \ /usr/include/c++/15.2.1/pstl/pstl_config.h \ /usr/include/c++/15.2.1/source_location \ /usr/include/c++/15.2.1/span \ @@ -1774,6 +1796,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/gnu/stubs.h \ /usr/include/libintl.h \ /usr/include/limits.h \ + /usr/include/linux/close_range.h \ /usr/include/linux/errno.h \ /usr/include/linux/limits.h \ /usr/include/linux/posix_types.h \ @@ -1793,8 +1816,11 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/Learning /usr/include/sys/cdefs.h \ /usr/include/sys/select.h \ /usr/include/sys/single_threaded.h \ + /usr/include/sys/syscall.h \ /usr/include/sys/types.h \ + /usr/include/syscall.h \ /usr/include/time.h \ + /usr/include/unistd.h \ /usr/include/vk_video/vulkan_video_codec_av1std.h \ /usr/include/vk_video/vulkan_video_codec_av1std_decode.h \ /usr/include/vk_video/vulkan_video_codec_av1std_encode.h \ @@ -2075,14 +2101,13 @@ CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o: /home/Jordan/ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h -CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanCommandBuffers.cpp \ +CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanBuffers.cpp \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends/imgui_impl_vulkan.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imconfig.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanBuffers.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h \ /usr/include/GL/gl.h \ /usr/include/GL/glext.h \ /usr/include/GLFW/glfw3.h \ @@ -2530,18 +2555,18 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imconfig.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/stb/stb_image.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanBuffers.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.hpp \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanTexture.hpp \ /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h \ /usr/include/GL/gl.h \ /usr/include/GL/glext.h \ /usr/include/GLFW/glfw3.h \ @@ -2558,18 +2583,26 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/asm/posix_types.h \ /usr/include/asm/posix_types_64.h \ /usr/include/asm/types.h \ + /usr/include/asm/unistd.h \ + /usr/include/asm/unistd_64.h \ /usr/include/assert.h \ /usr/include/bits/atomic_wide_counter.h \ /usr/include/bits/byteswap.h \ + /usr/include/bits/confname.h \ /usr/include/bits/cpu-set.h \ + /usr/include/bits/dl_find_object.h \ + /usr/include/bits/dlfcn.h \ /usr/include/bits/endian.h \ /usr/include/bits/endianness.h \ + /usr/include/bits/environments.h \ /usr/include/bits/errno.h \ /usr/include/bits/floatn-common.h \ /usr/include/bits/floatn.h \ /usr/include/bits/flt-eval-method.h \ /usr/include/bits/fp-fast.h \ /usr/include/bits/fp-logb.h \ + /usr/include/bits/getopt_core.h \ + /usr/include/bits/getopt_posix.h \ /usr/include/bits/iscanonical.h \ /usr/include/bits/libc-header-start.h \ /usr/include/bits/libm-simd-decl-stubs.h \ @@ -2583,6 +2616,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/bits/mathcalls.h \ /usr/include/bits/posix1_lim.h \ /usr/include/bits/posix2_lim.h \ + /usr/include/bits/posix_opt.h \ /usr/include/bits/pthread_stack_min-dynamic.h \ /usr/include/bits/pthreadtypes-arch.h \ /usr/include/bits/pthreadtypes.h \ @@ -2598,6 +2632,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/bits/stdlib-float.h \ /usr/include/bits/struct_mutex.h \ /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/syscall.h \ /usr/include/bits/thread-shared-types.h \ /usr/include/bits/time.h \ /usr/include/bits/time64.h \ @@ -2631,13 +2666,16 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/bits/typesizes.h \ /usr/include/bits/uintn-identity.h \ /usr/include/bits/uio_lim.h \ + /usr/include/bits/unistd_ext.h \ /usr/include/bits/waitflags.h \ /usr/include/bits/waitstatus.h \ /usr/include/bits/wchar.h \ /usr/include/bits/wctype-wchar.h \ /usr/include/bits/wordsize.h \ /usr/include/bits/xopen_lim.h \ + /usr/include/c++/15.2.1/algorithm \ /usr/include/c++/15.2.1/array \ + /usr/include/c++/15.2.1/backward/auto_ptr.h \ /usr/include/c++/15.2.1/backward/binders.h \ /usr/include/c++/15.2.1/bit \ /usr/include/c++/15.2.1/bits/algorithmfwd.h \ @@ -2645,6 +2683,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/c++/15.2.1/bits/alloc_traits.h \ /usr/include/c++/15.2.1/bits/allocated_ptr.h \ /usr/include/c++/15.2.1/bits/allocator.h \ + /usr/include/c++/15.2.1/bits/atomic_base.h \ + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h \ + /usr/include/c++/15.2.1/bits/atomic_wait.h \ /usr/include/c++/15.2.1/bits/basic_ios.h \ /usr/include/c++/15.2.1/bits/basic_ios.tcc \ /usr/include/c++/15.2.1/bits/basic_string.h \ @@ -2698,18 +2739,22 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/c++/15.2.1/bits/ptr_traits.h \ /usr/include/c++/15.2.1/bits/quoted_string.h \ /usr/include/c++/15.2.1/bits/range_access.h \ + /usr/include/c++/15.2.1/bits/ranges_algo.h \ /usr/include/c++/15.2.1/bits/ranges_algobase.h \ /usr/include/c++/15.2.1/bits/ranges_base.h \ /usr/include/c++/15.2.1/bits/ranges_cmp.h \ + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h \ /usr/include/c++/15.2.1/bits/ranges_util.h \ /usr/include/c++/15.2.1/bits/refwrap.h \ /usr/include/c++/15.2.1/bits/requires_hosted.h \ /usr/include/c++/15.2.1/bits/shared_ptr.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h \ /usr/include/c++/15.2.1/bits/shared_ptr_base.h \ /usr/include/c++/15.2.1/bits/specfun.h \ /usr/include/c++/15.2.1/bits/sstream.tcc \ /usr/include/c++/15.2.1/bits/std_abs.h \ /usr/include/c++/15.2.1/bits/std_function.h \ + /usr/include/c++/15.2.1/bits/std_mutex.h \ /usr/include/c++/15.2.1/bits/stl_algo.h \ /usr/include/c++/15.2.1/bits/stl_algobase.h \ /usr/include/c++/15.2.1/bits/stl_bvector.h \ @@ -2720,6 +2765,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h \ /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h \ /usr/include/c++/15.2.1/bits/stl_pair.h \ + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h \ + /usr/include/c++/15.2.1/bits/stl_relops.h \ /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ /usr/include/c++/15.2.1/bits/stl_uninitialized.h \ /usr/include/c++/15.2.1/bits/stl_vector.h \ @@ -2752,6 +2799,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/c++/15.2.1/cstdint \ /usr/include/c++/15.2.1/cstdio \ /usr/include/c++/15.2.1/cstdlib \ + /usr/include/c++/15.2.1/cstring \ /usr/include/c++/15.2.1/ctime \ /usr/include/c++/15.2.1/cwchar \ /usr/include/c++/15.2.1/cwctype \ @@ -2774,10 +2822,14 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/c++/15.2.1/istream \ /usr/include/c++/15.2.1/limits \ /usr/include/c++/15.2.1/locale \ + /usr/include/c++/15.2.1/memory \ /usr/include/c++/15.2.1/new \ /usr/include/c++/15.2.1/numbers \ /usr/include/c++/15.2.1/optional \ /usr/include/c++/15.2.1/ostream \ + /usr/include/c++/15.2.1/pstl/execution_defs.h \ + /usr/include/c++/15.2.1/pstl/glue_algorithm_defs.h \ + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h \ /usr/include/c++/15.2.1/pstl/pstl_config.h \ /usr/include/c++/15.2.1/ratio \ /usr/include/c++/15.2.1/source_location \ @@ -2805,7 +2857,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/c++/15.2.1/type_traits \ /usr/include/c++/15.2.1/typeinfo \ /usr/include/c++/15.2.1/unordered_map \ + /usr/include/c++/15.2.1/utility \ /usr/include/c++/15.2.1/vector \ + /usr/include/c++/15.2.1/version \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h \ @@ -2820,6 +2874,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/os_defines.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h \ /usr/include/ctype.h \ + /usr/include/dlfcn.h \ /usr/include/endian.h \ /usr/include/errno.h \ /usr/include/features-time64.h \ @@ -2974,6 +3029,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/gnu/stubs.h \ /usr/include/libintl.h \ /usr/include/limits.h \ + /usr/include/linux/close_range.h \ /usr/include/linux/errno.h \ /usr/include/linux/limits.h \ /usr/include/linux/posix_types.h \ @@ -2993,8 +3049,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/sys/cdefs.h \ /usr/include/sys/select.h \ /usr/include/sys/single_threaded.h \ + /usr/include/sys/syscall.h \ /usr/include/sys/types.h \ + /usr/include/syscall.h \ /usr/include/time.h \ + /usr/include/unistd.h \ /usr/include/vk_video/vulkan_video_codec_av1std.h \ /usr/include/vk_video/vulkan_video_codec_av1std_decode.h \ /usr/include/vk_video/vulkan_video_codec_av1std_encode.h \ @@ -3009,7 +3068,14 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /home/Jordan/Proj /usr/include/vk_video/vulkan_video_codecs_common.h \ /usr/include/vulkan/vk_platform.h \ /usr/include/vulkan/vulkan.h \ + /usr/include/vulkan/vulkan.hpp \ /usr/include/vulkan/vulkan_core.h \ + /usr/include/vulkan/vulkan_enums.hpp \ + /usr/include/vulkan/vulkan_funcs.hpp \ + /usr/include/vulkan/vulkan_handles.hpp \ + /usr/include/vulkan/vulkan_hpp_macros.hpp \ + /usr/include/vulkan/vulkan_structs.hpp \ + /usr/include/vulkan/vulkan_to_string.hpp \ /usr/include/wchar.h \ /usr/include/wctype.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h \ @@ -3275,17 +3341,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o: /home/Jordan /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanDeviceManager.cpp \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ /usr/include/GL/gl.h \ /usr/include/GL/glext.h \ @@ -3303,31 +3360,27 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/asm/posix_types.h \ /usr/include/asm/posix_types_64.h \ /usr/include/asm/types.h \ - /usr/include/assert.h \ + /usr/include/asm/unistd.h \ + /usr/include/asm/unistd_64.h \ /usr/include/bits/atomic_wide_counter.h \ /usr/include/bits/byteswap.h \ + /usr/include/bits/confname.h \ /usr/include/bits/cpu-set.h \ /usr/include/bits/endian.h \ /usr/include/bits/endianness.h \ + /usr/include/bits/environments.h \ /usr/include/bits/errno.h \ /usr/include/bits/floatn-common.h \ /usr/include/bits/floatn.h \ - /usr/include/bits/flt-eval-method.h \ - /usr/include/bits/fp-fast.h \ - /usr/include/bits/fp-logb.h \ - /usr/include/bits/iscanonical.h \ + /usr/include/bits/getopt_core.h \ + /usr/include/bits/getopt_posix.h \ /usr/include/bits/libc-header-start.h \ - /usr/include/bits/libm-simd-decl-stubs.h \ /usr/include/bits/local_lim.h \ /usr/include/bits/locale.h \ /usr/include/bits/long-double.h \ - /usr/include/bits/math-vector.h \ - /usr/include/bits/mathcalls-helper-functions.h \ - /usr/include/bits/mathcalls-macros.h \ - /usr/include/bits/mathcalls-narrow.h \ - /usr/include/bits/mathcalls.h \ /usr/include/bits/posix1_lim.h \ /usr/include/bits/posix2_lim.h \ + /usr/include/bits/posix_opt.h \ /usr/include/bits/pthread_stack_min-dynamic.h \ /usr/include/bits/pthreadtypes-arch.h \ /usr/include/bits/pthreadtypes.h \ @@ -3343,6 +3396,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/bits/stdlib-float.h \ /usr/include/bits/struct_mutex.h \ /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/syscall.h \ /usr/include/bits/thread-shared-types.h \ /usr/include/bits/time.h \ /usr/include/bits/time64.h \ @@ -3376,6 +3430,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/bits/typesizes.h \ /usr/include/bits/uintn-identity.h \ /usr/include/bits/uio_lim.h \ + /usr/include/bits/unistd_ext.h \ /usr/include/bits/waitflags.h \ /usr/include/bits/waitstatus.h \ /usr/include/bits/wchar.h \ @@ -3383,11 +3438,19 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/bits/wordsize.h \ /usr/include/bits/xopen_lim.h \ /usr/include/c++/15.2.1/array \ + /usr/include/c++/15.2.1/backward/auto_ptr.h \ /usr/include/c++/15.2.1/backward/binders.h \ /usr/include/c++/15.2.1/bit \ /usr/include/c++/15.2.1/bits/algorithmfwd.h \ + /usr/include/c++/15.2.1/bits/align.h \ /usr/include/c++/15.2.1/bits/alloc_traits.h \ + /usr/include/c++/15.2.1/bits/allocated_ptr.h \ /usr/include/c++/15.2.1/bits/allocator.h \ + /usr/include/c++/15.2.1/bits/atomic_base.h \ + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h \ + /usr/include/c++/15.2.1/bits/atomic_wait.h \ + /usr/include/c++/15.2.1/bits/basic_ios.h \ + /usr/include/c++/15.2.1/bits/basic_ios.tcc \ /usr/include/c++/15.2.1/bits/basic_string.h \ /usr/include/c++/15.2.1/bits/basic_string.tcc \ /usr/include/c++/15.2.1/bits/char_traits.h \ @@ -3406,8 +3469,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/c++/15.2.1/bits/functexcept.h \ /usr/include/c++/15.2.1/bits/functional_hash.h \ /usr/include/c++/15.2.1/bits/hash_bytes.h \ - /usr/include/c++/15.2.1/bits/hashtable.h \ - /usr/include/c++/15.2.1/bits/hashtable_policy.h \ /usr/include/c++/15.2.1/bits/invoke.h \ /usr/include/c++/15.2.1/bits/ios_base.h \ /usr/include/c++/15.2.1/bits/iterator_concepts.h \ @@ -3427,6 +3488,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/c++/15.2.1/bits/nested_exception.h \ /usr/include/c++/15.2.1/bits/new_allocator.h \ /usr/include/c++/15.2.1/bits/node_handle.h \ + /usr/include/c++/15.2.1/bits/ostream.h \ /usr/include/c++/15.2.1/bits/ostream_insert.h \ /usr/include/c++/15.2.1/bits/postypes.h \ /usr/include/c++/15.2.1/bits/predefined_ops.h \ @@ -3435,12 +3497,15 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/c++/15.2.1/bits/ranges_algobase.h \ /usr/include/c++/15.2.1/bits/ranges_base.h \ /usr/include/c++/15.2.1/bits/ranges_cmp.h \ + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h \ /usr/include/c++/15.2.1/bits/ranges_util.h \ /usr/include/c++/15.2.1/bits/refwrap.h \ /usr/include/c++/15.2.1/bits/requires_hosted.h \ - /usr/include/c++/15.2.1/bits/specfun.h \ + /usr/include/c++/15.2.1/bits/shared_ptr.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_base.h \ /usr/include/c++/15.2.1/bits/std_abs.h \ - /usr/include/c++/15.2.1/bits/std_function.h \ + /usr/include/c++/15.2.1/bits/std_mutex.h \ /usr/include/c++/15.2.1/bits/stl_algo.h \ /usr/include/c++/15.2.1/bits/stl_algobase.h \ /usr/include/c++/15.2.1/bits/stl_bvector.h \ @@ -3454,6 +3519,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/c++/15.2.1/bits/stl_multimap.h \ /usr/include/c++/15.2.1/bits/stl_multiset.h \ /usr/include/c++/15.2.1/bits/stl_pair.h \ + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h \ /usr/include/c++/15.2.1/bits/stl_set.h \ /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ /usr/include/c++/15.2.1/bits/stl_tree.h \ @@ -3466,20 +3532,17 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/c++/15.2.1/bits/unicode-data.h \ /usr/include/c++/15.2.1/bits/unicode.h \ /usr/include/c++/15.2.1/bits/uniform_int_dist.h \ - /usr/include/c++/15.2.1/bits/unordered_map.h \ + /usr/include/c++/15.2.1/bits/unique_ptr.h \ /usr/include/c++/15.2.1/bits/uses_allocator.h \ /usr/include/c++/15.2.1/bits/uses_allocator_args.h \ /usr/include/c++/15.2.1/bits/utility.h \ /usr/include/c++/15.2.1/bits/vector.tcc \ /usr/include/c++/15.2.1/bits/version.h \ - /usr/include/c++/15.2.1/cassert \ /usr/include/c++/15.2.1/cctype \ /usr/include/c++/15.2.1/cerrno \ - /usr/include/c++/15.2.1/cfloat \ /usr/include/c++/15.2.1/charconv \ /usr/include/c++/15.2.1/climits \ /usr/include/c++/15.2.1/clocale \ - /usr/include/c++/15.2.1/cmath \ /usr/include/c++/15.2.1/compare \ /usr/include/c++/15.2.1/concepts \ /usr/include/c++/15.2.1/cstddef \ @@ -3495,19 +3558,23 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/c++/15.2.1/ext/aligned_buffer.h \ /usr/include/c++/15.2.1/ext/alloc_traits.h \ /usr/include/c++/15.2.1/ext/atomicity.h \ + /usr/include/c++/15.2.1/ext/concurrence.h \ /usr/include/c++/15.2.1/ext/numeric_traits.h \ /usr/include/c++/15.2.1/ext/string_conversions.h \ /usr/include/c++/15.2.1/ext/type_traits.h \ /usr/include/c++/15.2.1/format \ - /usr/include/c++/15.2.1/functional \ /usr/include/c++/15.2.1/initializer_list \ + /usr/include/c++/15.2.1/ios \ /usr/include/c++/15.2.1/iosfwd \ /usr/include/c++/15.2.1/limits \ /usr/include/c++/15.2.1/locale \ /usr/include/c++/15.2.1/map \ + /usr/include/c++/15.2.1/memory \ /usr/include/c++/15.2.1/new \ /usr/include/c++/15.2.1/numbers \ /usr/include/c++/15.2.1/optional \ + /usr/include/c++/15.2.1/pstl/execution_defs.h \ + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h \ /usr/include/c++/15.2.1/pstl/pstl_config.h \ /usr/include/c++/15.2.1/set \ /usr/include/c++/15.2.1/source_location \ @@ -3517,22 +3584,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/c++/15.2.1/string \ /usr/include/c++/15.2.1/string_view \ /usr/include/c++/15.2.1/system_error \ - /usr/include/c++/15.2.1/tr1/bessel_function.tcc \ - /usr/include/c++/15.2.1/tr1/beta_function.tcc \ - /usr/include/c++/15.2.1/tr1/ell_integral.tcc \ - /usr/include/c++/15.2.1/tr1/exp_integral.tcc \ - /usr/include/c++/15.2.1/tr1/gamma.tcc \ - /usr/include/c++/15.2.1/tr1/hypergeometric.tcc \ - /usr/include/c++/15.2.1/tr1/legendre_function.tcc \ - /usr/include/c++/15.2.1/tr1/modified_bessel_func.tcc \ - /usr/include/c++/15.2.1/tr1/poly_hermite.tcc \ - /usr/include/c++/15.2.1/tr1/poly_laguerre.tcc \ - /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc \ - /usr/include/c++/15.2.1/tr1/special_function_util.h \ /usr/include/c++/15.2.1/tuple \ /usr/include/c++/15.2.1/type_traits \ /usr/include/c++/15.2.1/typeinfo \ - /usr/include/c++/15.2.1/unordered_map \ /usr/include/c++/15.2.1/vector \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h \ @@ -3552,144 +3606,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/errno.h \ /usr/include/features-time64.h \ /usr/include/features.h \ - /usr/include/glm/common.hpp \ - /usr/include/glm/detail/_fixes.hpp \ - /usr/include/glm/detail/_vectorize.hpp \ - /usr/include/glm/detail/compute_common.hpp \ - /usr/include/glm/detail/compute_vector_decl.hpp \ - /usr/include/glm/detail/compute_vector_relational.hpp \ - /usr/include/glm/detail/func_common.inl \ - /usr/include/glm/detail/func_exponential.inl \ - /usr/include/glm/detail/func_geometric.inl \ - /usr/include/glm/detail/func_integer.inl \ - /usr/include/glm/detail/func_matrix.inl \ - /usr/include/glm/detail/func_packing.inl \ - /usr/include/glm/detail/func_trigonometric.inl \ - /usr/include/glm/detail/func_vector_relational.inl \ - /usr/include/glm/detail/qualifier.hpp \ - /usr/include/glm/detail/setup.hpp \ - /usr/include/glm/detail/type_half.hpp \ - /usr/include/glm/detail/type_half.inl \ - /usr/include/glm/detail/type_mat2x2.hpp \ - /usr/include/glm/detail/type_mat2x2.inl \ - /usr/include/glm/detail/type_mat2x3.hpp \ - /usr/include/glm/detail/type_mat2x3.inl \ - /usr/include/glm/detail/type_mat2x4.hpp \ - /usr/include/glm/detail/type_mat2x4.inl \ - /usr/include/glm/detail/type_mat3x2.hpp \ - /usr/include/glm/detail/type_mat3x2.inl \ - /usr/include/glm/detail/type_mat3x3.hpp \ - /usr/include/glm/detail/type_mat3x3.inl \ - /usr/include/glm/detail/type_mat3x4.hpp \ - /usr/include/glm/detail/type_mat3x4.inl \ - /usr/include/glm/detail/type_mat4x2.hpp \ - /usr/include/glm/detail/type_mat4x2.inl \ - /usr/include/glm/detail/type_mat4x3.hpp \ - /usr/include/glm/detail/type_mat4x3.inl \ - /usr/include/glm/detail/type_mat4x4.hpp \ - /usr/include/glm/detail/type_mat4x4.inl \ - /usr/include/glm/detail/type_vec1.hpp \ - /usr/include/glm/detail/type_vec1.inl \ - /usr/include/glm/detail/type_vec2.hpp \ - /usr/include/glm/detail/type_vec2.inl \ - /usr/include/glm/detail/type_vec3.hpp \ - /usr/include/glm/detail/type_vec3.inl \ - /usr/include/glm/detail/type_vec4.hpp \ - /usr/include/glm/detail/type_vec4.inl \ - /usr/include/glm/exponential.hpp \ - /usr/include/glm/ext/matrix_double2x2.hpp \ - /usr/include/glm/ext/matrix_double2x2_precision.hpp \ - /usr/include/glm/ext/matrix_double2x3.hpp \ - /usr/include/glm/ext/matrix_double2x3_precision.hpp \ - /usr/include/glm/ext/matrix_double2x4.hpp \ - /usr/include/glm/ext/matrix_double2x4_precision.hpp \ - /usr/include/glm/ext/matrix_double3x2.hpp \ - /usr/include/glm/ext/matrix_double3x2_precision.hpp \ - /usr/include/glm/ext/matrix_double3x3.hpp \ - /usr/include/glm/ext/matrix_double3x3_precision.hpp \ - /usr/include/glm/ext/matrix_double3x4.hpp \ - /usr/include/glm/ext/matrix_double3x4_precision.hpp \ - /usr/include/glm/ext/matrix_double4x2.hpp \ - /usr/include/glm/ext/matrix_double4x2_precision.hpp \ - /usr/include/glm/ext/matrix_double4x3.hpp \ - /usr/include/glm/ext/matrix_double4x3_precision.hpp \ - /usr/include/glm/ext/matrix_double4x4.hpp \ - /usr/include/glm/ext/matrix_double4x4_precision.hpp \ - /usr/include/glm/ext/matrix_float2x2.hpp \ - /usr/include/glm/ext/matrix_float2x2_precision.hpp \ - /usr/include/glm/ext/matrix_float2x3.hpp \ - /usr/include/glm/ext/matrix_float2x3_precision.hpp \ - /usr/include/glm/ext/matrix_float2x4.hpp \ - /usr/include/glm/ext/matrix_float2x4_precision.hpp \ - /usr/include/glm/ext/matrix_float3x2.hpp \ - /usr/include/glm/ext/matrix_float3x2_precision.hpp \ - /usr/include/glm/ext/matrix_float3x3.hpp \ - /usr/include/glm/ext/matrix_float3x3_precision.hpp \ - /usr/include/glm/ext/matrix_float3x4.hpp \ - /usr/include/glm/ext/matrix_float3x4_precision.hpp \ - /usr/include/glm/ext/matrix_float4x2.hpp \ - /usr/include/glm/ext/matrix_float4x2_precision.hpp \ - /usr/include/glm/ext/matrix_float4x3.hpp \ - /usr/include/glm/ext/matrix_float4x3_precision.hpp \ - /usr/include/glm/ext/matrix_float4x4.hpp \ - /usr/include/glm/ext/matrix_float4x4_precision.hpp \ - /usr/include/glm/ext/scalar_int_sized.hpp \ - /usr/include/glm/ext/scalar_uint_sized.hpp \ - /usr/include/glm/ext/vector_bool2.hpp \ - /usr/include/glm/ext/vector_bool2_precision.hpp \ - /usr/include/glm/ext/vector_bool3.hpp \ - /usr/include/glm/ext/vector_bool3_precision.hpp \ - /usr/include/glm/ext/vector_bool4.hpp \ - /usr/include/glm/ext/vector_bool4_precision.hpp \ - /usr/include/glm/ext/vector_double2.hpp \ - /usr/include/glm/ext/vector_double2_precision.hpp \ - /usr/include/glm/ext/vector_double3.hpp \ - /usr/include/glm/ext/vector_double3_precision.hpp \ - /usr/include/glm/ext/vector_double4.hpp \ - /usr/include/glm/ext/vector_double4_precision.hpp \ - /usr/include/glm/ext/vector_float2.hpp \ - /usr/include/glm/ext/vector_float2_precision.hpp \ - /usr/include/glm/ext/vector_float3.hpp \ - /usr/include/glm/ext/vector_float3_precision.hpp \ - /usr/include/glm/ext/vector_float4.hpp \ - /usr/include/glm/ext/vector_float4_precision.hpp \ - /usr/include/glm/ext/vector_int2.hpp \ - /usr/include/glm/ext/vector_int2_sized.hpp \ - /usr/include/glm/ext/vector_int3.hpp \ - /usr/include/glm/ext/vector_int3_sized.hpp \ - /usr/include/glm/ext/vector_int4.hpp \ - /usr/include/glm/ext/vector_int4_sized.hpp \ - /usr/include/glm/ext/vector_uint2.hpp \ - /usr/include/glm/ext/vector_uint2_sized.hpp \ - /usr/include/glm/ext/vector_uint3.hpp \ - /usr/include/glm/ext/vector_uint3_sized.hpp \ - /usr/include/glm/ext/vector_uint4.hpp \ - /usr/include/glm/ext/vector_uint4_sized.hpp \ - /usr/include/glm/fwd.hpp \ - /usr/include/glm/geometric.hpp \ - /usr/include/glm/glm.hpp \ - /usr/include/glm/integer.hpp \ - /usr/include/glm/mat2x2.hpp \ - /usr/include/glm/mat2x3.hpp \ - /usr/include/glm/mat2x4.hpp \ - /usr/include/glm/mat3x2.hpp \ - /usr/include/glm/mat3x3.hpp \ - /usr/include/glm/mat3x4.hpp \ - /usr/include/glm/mat4x2.hpp \ - /usr/include/glm/mat4x3.hpp \ - /usr/include/glm/mat4x4.hpp \ - /usr/include/glm/matrix.hpp \ - /usr/include/glm/packing.hpp \ - /usr/include/glm/simd/platform.h \ - /usr/include/glm/trigonometric.hpp \ - /usr/include/glm/vec2.hpp \ - /usr/include/glm/vec3.hpp \ - /usr/include/glm/vec4.hpp \ - /usr/include/glm/vector_relational.hpp \ /usr/include/gnu/stubs-64.h \ /usr/include/gnu/stubs.h \ /usr/include/libintl.h \ /usr/include/limits.h \ + /usr/include/linux/close_range.h \ /usr/include/linux/errno.h \ /usr/include/linux/limits.h \ /usr/include/linux/posix_types.h \ @@ -3697,7 +3618,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/linux/stddef.h \ /usr/include/linux/types.h \ /usr/include/locale.h \ - /usr/include/math.h \ /usr/include/pthread.h \ /usr/include/sched.h \ /usr/include/stdc-predef.h \ @@ -3707,8 +3627,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/sys/cdefs.h \ /usr/include/sys/select.h \ /usr/include/sys/single_threaded.h \ + /usr/include/sys/syscall.h \ /usr/include/sys/types.h \ + /usr/include/syscall.h \ /usr/include/time.h \ + /usr/include/unistd.h \ /usr/include/vk_video/vulkan_video_codec_av1std.h \ /usr/include/vk_video/vulkan_video_codec_av1std_decode.h \ /usr/include/vk_video/vulkan_video_codec_av1std_encode.h \ @@ -3726,7 +3649,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: /home/Jorda /usr/include/vulkan/vulkan_core.h \ /usr/include/wchar.h \ /usr/include/wctype.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ @@ -3994,17 +3916,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o: /home/Jordan /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanInstanceManager.cpp \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.hpp \ /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ /usr/include/GL/gl.h \ /usr/include/GL/glext.h \ @@ -4022,31 +3936,27 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/asm/posix_types.h \ /usr/include/asm/posix_types_64.h \ /usr/include/asm/types.h \ - /usr/include/assert.h \ + /usr/include/asm/unistd.h \ + /usr/include/asm/unistd_64.h \ /usr/include/bits/atomic_wide_counter.h \ /usr/include/bits/byteswap.h \ + /usr/include/bits/confname.h \ /usr/include/bits/cpu-set.h \ /usr/include/bits/endian.h \ /usr/include/bits/endianness.h \ + /usr/include/bits/environments.h \ /usr/include/bits/errno.h \ /usr/include/bits/floatn-common.h \ /usr/include/bits/floatn.h \ - /usr/include/bits/flt-eval-method.h \ - /usr/include/bits/fp-fast.h \ - /usr/include/bits/fp-logb.h \ - /usr/include/bits/iscanonical.h \ + /usr/include/bits/getopt_core.h \ + /usr/include/bits/getopt_posix.h \ /usr/include/bits/libc-header-start.h \ - /usr/include/bits/libm-simd-decl-stubs.h \ /usr/include/bits/local_lim.h \ /usr/include/bits/locale.h \ /usr/include/bits/long-double.h \ - /usr/include/bits/math-vector.h \ - /usr/include/bits/mathcalls-helper-functions.h \ - /usr/include/bits/mathcalls-macros.h \ - /usr/include/bits/mathcalls-narrow.h \ - /usr/include/bits/mathcalls.h \ /usr/include/bits/posix1_lim.h \ /usr/include/bits/posix2_lim.h \ + /usr/include/bits/posix_opt.h \ /usr/include/bits/pthread_stack_min-dynamic.h \ /usr/include/bits/pthreadtypes-arch.h \ /usr/include/bits/pthreadtypes.h \ @@ -4062,6 +3972,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/bits/stdlib-float.h \ /usr/include/bits/struct_mutex.h \ /usr/include/bits/struct_rwlock.h \ + /usr/include/bits/syscall.h \ /usr/include/bits/thread-shared-types.h \ /usr/include/bits/time.h \ /usr/include/bits/time64.h \ @@ -4095,6 +4006,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/bits/typesizes.h \ /usr/include/bits/uintn-identity.h \ /usr/include/bits/uio_lim.h \ + /usr/include/bits/unistd_ext.h \ /usr/include/bits/waitflags.h \ /usr/include/bits/waitstatus.h \ /usr/include/bits/wchar.h \ @@ -4102,11 +4014,19 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/bits/wordsize.h \ /usr/include/bits/xopen_lim.h \ /usr/include/c++/15.2.1/array \ + /usr/include/c++/15.2.1/backward/auto_ptr.h \ /usr/include/c++/15.2.1/backward/binders.h \ /usr/include/c++/15.2.1/bit \ /usr/include/c++/15.2.1/bits/algorithmfwd.h \ + /usr/include/c++/15.2.1/bits/align.h \ /usr/include/c++/15.2.1/bits/alloc_traits.h \ + /usr/include/c++/15.2.1/bits/allocated_ptr.h \ /usr/include/c++/15.2.1/bits/allocator.h \ + /usr/include/c++/15.2.1/bits/atomic_base.h \ + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h \ + /usr/include/c++/15.2.1/bits/atomic_wait.h \ + /usr/include/c++/15.2.1/bits/basic_ios.h \ + /usr/include/c++/15.2.1/bits/basic_ios.tcc \ /usr/include/c++/15.2.1/bits/basic_string.h \ /usr/include/c++/15.2.1/bits/basic_string.tcc \ /usr/include/c++/15.2.1/bits/char_traits.h \ @@ -4117,7 +4037,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/c++/15.2.1/bits/cxxabi_forced.h \ /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ /usr/include/c++/15.2.1/bits/enable_special_members.h \ - /usr/include/c++/15.2.1/bits/erase_if.h \ /usr/include/c++/15.2.1/bits/exception.h \ /usr/include/c++/15.2.1/bits/exception_defines.h \ /usr/include/c++/15.2.1/bits/exception_ptr.h \ @@ -4125,8 +4044,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/c++/15.2.1/bits/functexcept.h \ /usr/include/c++/15.2.1/bits/functional_hash.h \ /usr/include/c++/15.2.1/bits/hash_bytes.h \ - /usr/include/c++/15.2.1/bits/hashtable.h \ - /usr/include/c++/15.2.1/bits/hashtable_policy.h \ /usr/include/c++/15.2.1/bits/invoke.h \ /usr/include/c++/15.2.1/bits/ios_base.h \ /usr/include/c++/15.2.1/bits/iterator_concepts.h \ @@ -4145,7 +4062,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/c++/15.2.1/bits/move.h \ /usr/include/c++/15.2.1/bits/nested_exception.h \ /usr/include/c++/15.2.1/bits/new_allocator.h \ - /usr/include/c++/15.2.1/bits/node_handle.h \ + /usr/include/c++/15.2.1/bits/ostream.h \ /usr/include/c++/15.2.1/bits/ostream_insert.h \ /usr/include/c++/15.2.1/bits/postypes.h \ /usr/include/c++/15.2.1/bits/predefined_ops.h \ @@ -4154,12 +4071,15 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/c++/15.2.1/bits/ranges_algobase.h \ /usr/include/c++/15.2.1/bits/ranges_base.h \ /usr/include/c++/15.2.1/bits/ranges_cmp.h \ + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h \ /usr/include/c++/15.2.1/bits/ranges_util.h \ /usr/include/c++/15.2.1/bits/refwrap.h \ /usr/include/c++/15.2.1/bits/requires_hosted.h \ - /usr/include/c++/15.2.1/bits/specfun.h \ + /usr/include/c++/15.2.1/bits/shared_ptr.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_base.h \ /usr/include/c++/15.2.1/bits/std_abs.h \ - /usr/include/c++/15.2.1/bits/std_function.h \ + /usr/include/c++/15.2.1/bits/std_mutex.h \ /usr/include/c++/15.2.1/bits/stl_algo.h \ /usr/include/c++/15.2.1/bits/stl_algobase.h \ /usr/include/c++/15.2.1/bits/stl_bvector.h \ @@ -4170,6 +4090,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h \ /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h \ /usr/include/c++/15.2.1/bits/stl_pair.h \ + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h \ /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ /usr/include/c++/15.2.1/bits/stl_uninitialized.h \ /usr/include/c++/15.2.1/bits/stl_vector.h \ @@ -4180,20 +4101,17 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/c++/15.2.1/bits/unicode-data.h \ /usr/include/c++/15.2.1/bits/unicode.h \ /usr/include/c++/15.2.1/bits/uniform_int_dist.h \ - /usr/include/c++/15.2.1/bits/unordered_map.h \ + /usr/include/c++/15.2.1/bits/unique_ptr.h \ /usr/include/c++/15.2.1/bits/uses_allocator.h \ /usr/include/c++/15.2.1/bits/uses_allocator_args.h \ /usr/include/c++/15.2.1/bits/utility.h \ /usr/include/c++/15.2.1/bits/vector.tcc \ /usr/include/c++/15.2.1/bits/version.h \ - /usr/include/c++/15.2.1/cassert \ /usr/include/c++/15.2.1/cctype \ /usr/include/c++/15.2.1/cerrno \ - /usr/include/c++/15.2.1/cfloat \ /usr/include/c++/15.2.1/charconv \ /usr/include/c++/15.2.1/climits \ /usr/include/c++/15.2.1/clocale \ - /usr/include/c++/15.2.1/cmath \ /usr/include/c++/15.2.1/compare \ /usr/include/c++/15.2.1/concepts \ /usr/include/c++/15.2.1/cstddef \ @@ -4210,18 +4128,22 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/c++/15.2.1/ext/aligned_buffer.h \ /usr/include/c++/15.2.1/ext/alloc_traits.h \ /usr/include/c++/15.2.1/ext/atomicity.h \ + /usr/include/c++/15.2.1/ext/concurrence.h \ /usr/include/c++/15.2.1/ext/numeric_traits.h \ /usr/include/c++/15.2.1/ext/string_conversions.h \ /usr/include/c++/15.2.1/ext/type_traits.h \ /usr/include/c++/15.2.1/format \ - /usr/include/c++/15.2.1/functional \ /usr/include/c++/15.2.1/initializer_list \ + /usr/include/c++/15.2.1/ios \ /usr/include/c++/15.2.1/iosfwd \ /usr/include/c++/15.2.1/limits \ /usr/include/c++/15.2.1/locale \ + /usr/include/c++/15.2.1/memory \ /usr/include/c++/15.2.1/new \ /usr/include/c++/15.2.1/numbers \ /usr/include/c++/15.2.1/optional \ + /usr/include/c++/15.2.1/pstl/execution_defs.h \ + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h \ /usr/include/c++/15.2.1/pstl/pstl_config.h \ /usr/include/c++/15.2.1/source_location \ /usr/include/c++/15.2.1/span \ @@ -4230,22 +4152,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/c++/15.2.1/string \ /usr/include/c++/15.2.1/string_view \ /usr/include/c++/15.2.1/system_error \ - /usr/include/c++/15.2.1/tr1/bessel_function.tcc \ - /usr/include/c++/15.2.1/tr1/beta_function.tcc \ - /usr/include/c++/15.2.1/tr1/ell_integral.tcc \ - /usr/include/c++/15.2.1/tr1/exp_integral.tcc \ - /usr/include/c++/15.2.1/tr1/gamma.tcc \ - /usr/include/c++/15.2.1/tr1/hypergeometric.tcc \ - /usr/include/c++/15.2.1/tr1/legendre_function.tcc \ - /usr/include/c++/15.2.1/tr1/modified_bessel_func.tcc \ - /usr/include/c++/15.2.1/tr1/poly_hermite.tcc \ - /usr/include/c++/15.2.1/tr1/poly_laguerre.tcc \ - /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc \ - /usr/include/c++/15.2.1/tr1/special_function_util.h \ /usr/include/c++/15.2.1/tuple \ /usr/include/c++/15.2.1/type_traits \ /usr/include/c++/15.2.1/typeinfo \ - /usr/include/c++/15.2.1/unordered_map \ /usr/include/c++/15.2.1/vector \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h \ @@ -4265,144 +4174,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/errno.h \ /usr/include/features-time64.h \ /usr/include/features.h \ - /usr/include/glm/common.hpp \ - /usr/include/glm/detail/_fixes.hpp \ - /usr/include/glm/detail/_vectorize.hpp \ - /usr/include/glm/detail/compute_common.hpp \ - /usr/include/glm/detail/compute_vector_decl.hpp \ - /usr/include/glm/detail/compute_vector_relational.hpp \ - /usr/include/glm/detail/func_common.inl \ - /usr/include/glm/detail/func_exponential.inl \ - /usr/include/glm/detail/func_geometric.inl \ - /usr/include/glm/detail/func_integer.inl \ - /usr/include/glm/detail/func_matrix.inl \ - /usr/include/glm/detail/func_packing.inl \ - /usr/include/glm/detail/func_trigonometric.inl \ - /usr/include/glm/detail/func_vector_relational.inl \ - /usr/include/glm/detail/qualifier.hpp \ - /usr/include/glm/detail/setup.hpp \ - /usr/include/glm/detail/type_half.hpp \ - /usr/include/glm/detail/type_half.inl \ - /usr/include/glm/detail/type_mat2x2.hpp \ - /usr/include/glm/detail/type_mat2x2.inl \ - /usr/include/glm/detail/type_mat2x3.hpp \ - /usr/include/glm/detail/type_mat2x3.inl \ - /usr/include/glm/detail/type_mat2x4.hpp \ - /usr/include/glm/detail/type_mat2x4.inl \ - /usr/include/glm/detail/type_mat3x2.hpp \ - /usr/include/glm/detail/type_mat3x2.inl \ - /usr/include/glm/detail/type_mat3x3.hpp \ - /usr/include/glm/detail/type_mat3x3.inl \ - /usr/include/glm/detail/type_mat3x4.hpp \ - /usr/include/glm/detail/type_mat3x4.inl \ - /usr/include/glm/detail/type_mat4x2.hpp \ - /usr/include/glm/detail/type_mat4x2.inl \ - /usr/include/glm/detail/type_mat4x3.hpp \ - /usr/include/glm/detail/type_mat4x3.inl \ - /usr/include/glm/detail/type_mat4x4.hpp \ - /usr/include/glm/detail/type_mat4x4.inl \ - /usr/include/glm/detail/type_vec1.hpp \ - /usr/include/glm/detail/type_vec1.inl \ - /usr/include/glm/detail/type_vec2.hpp \ - /usr/include/glm/detail/type_vec2.inl \ - /usr/include/glm/detail/type_vec3.hpp \ - /usr/include/glm/detail/type_vec3.inl \ - /usr/include/glm/detail/type_vec4.hpp \ - /usr/include/glm/detail/type_vec4.inl \ - /usr/include/glm/exponential.hpp \ - /usr/include/glm/ext/matrix_double2x2.hpp \ - /usr/include/glm/ext/matrix_double2x2_precision.hpp \ - /usr/include/glm/ext/matrix_double2x3.hpp \ - /usr/include/glm/ext/matrix_double2x3_precision.hpp \ - /usr/include/glm/ext/matrix_double2x4.hpp \ - /usr/include/glm/ext/matrix_double2x4_precision.hpp \ - /usr/include/glm/ext/matrix_double3x2.hpp \ - /usr/include/glm/ext/matrix_double3x2_precision.hpp \ - /usr/include/glm/ext/matrix_double3x3.hpp \ - /usr/include/glm/ext/matrix_double3x3_precision.hpp \ - /usr/include/glm/ext/matrix_double3x4.hpp \ - /usr/include/glm/ext/matrix_double3x4_precision.hpp \ - /usr/include/glm/ext/matrix_double4x2.hpp \ - /usr/include/glm/ext/matrix_double4x2_precision.hpp \ - /usr/include/glm/ext/matrix_double4x3.hpp \ - /usr/include/glm/ext/matrix_double4x3_precision.hpp \ - /usr/include/glm/ext/matrix_double4x4.hpp \ - /usr/include/glm/ext/matrix_double4x4_precision.hpp \ - /usr/include/glm/ext/matrix_float2x2.hpp \ - /usr/include/glm/ext/matrix_float2x2_precision.hpp \ - /usr/include/glm/ext/matrix_float2x3.hpp \ - /usr/include/glm/ext/matrix_float2x3_precision.hpp \ - /usr/include/glm/ext/matrix_float2x4.hpp \ - /usr/include/glm/ext/matrix_float2x4_precision.hpp \ - /usr/include/glm/ext/matrix_float3x2.hpp \ - /usr/include/glm/ext/matrix_float3x2_precision.hpp \ - /usr/include/glm/ext/matrix_float3x3.hpp \ - /usr/include/glm/ext/matrix_float3x3_precision.hpp \ - /usr/include/glm/ext/matrix_float3x4.hpp \ - /usr/include/glm/ext/matrix_float3x4_precision.hpp \ - /usr/include/glm/ext/matrix_float4x2.hpp \ - /usr/include/glm/ext/matrix_float4x2_precision.hpp \ - /usr/include/glm/ext/matrix_float4x3.hpp \ - /usr/include/glm/ext/matrix_float4x3_precision.hpp \ - /usr/include/glm/ext/matrix_float4x4.hpp \ - /usr/include/glm/ext/matrix_float4x4_precision.hpp \ - /usr/include/glm/ext/scalar_int_sized.hpp \ - /usr/include/glm/ext/scalar_uint_sized.hpp \ - /usr/include/glm/ext/vector_bool2.hpp \ - /usr/include/glm/ext/vector_bool2_precision.hpp \ - /usr/include/glm/ext/vector_bool3.hpp \ - /usr/include/glm/ext/vector_bool3_precision.hpp \ - /usr/include/glm/ext/vector_bool4.hpp \ - /usr/include/glm/ext/vector_bool4_precision.hpp \ - /usr/include/glm/ext/vector_double2.hpp \ - /usr/include/glm/ext/vector_double2_precision.hpp \ - /usr/include/glm/ext/vector_double3.hpp \ - /usr/include/glm/ext/vector_double3_precision.hpp \ - /usr/include/glm/ext/vector_double4.hpp \ - /usr/include/glm/ext/vector_double4_precision.hpp \ - /usr/include/glm/ext/vector_float2.hpp \ - /usr/include/glm/ext/vector_float2_precision.hpp \ - /usr/include/glm/ext/vector_float3.hpp \ - /usr/include/glm/ext/vector_float3_precision.hpp \ - /usr/include/glm/ext/vector_float4.hpp \ - /usr/include/glm/ext/vector_float4_precision.hpp \ - /usr/include/glm/ext/vector_int2.hpp \ - /usr/include/glm/ext/vector_int2_sized.hpp \ - /usr/include/glm/ext/vector_int3.hpp \ - /usr/include/glm/ext/vector_int3_sized.hpp \ - /usr/include/glm/ext/vector_int4.hpp \ - /usr/include/glm/ext/vector_int4_sized.hpp \ - /usr/include/glm/ext/vector_uint2.hpp \ - /usr/include/glm/ext/vector_uint2_sized.hpp \ - /usr/include/glm/ext/vector_uint3.hpp \ - /usr/include/glm/ext/vector_uint3_sized.hpp \ - /usr/include/glm/ext/vector_uint4.hpp \ - /usr/include/glm/ext/vector_uint4_sized.hpp \ - /usr/include/glm/fwd.hpp \ - /usr/include/glm/geometric.hpp \ - /usr/include/glm/glm.hpp \ - /usr/include/glm/integer.hpp \ - /usr/include/glm/mat2x2.hpp \ - /usr/include/glm/mat2x3.hpp \ - /usr/include/glm/mat2x4.hpp \ - /usr/include/glm/mat3x2.hpp \ - /usr/include/glm/mat3x3.hpp \ - /usr/include/glm/mat3x4.hpp \ - /usr/include/glm/mat4x2.hpp \ - /usr/include/glm/mat4x3.hpp \ - /usr/include/glm/mat4x4.hpp \ - /usr/include/glm/matrix.hpp \ - /usr/include/glm/packing.hpp \ - /usr/include/glm/simd/platform.h \ - /usr/include/glm/trigonometric.hpp \ - /usr/include/glm/vec2.hpp \ - /usr/include/glm/vec3.hpp \ - /usr/include/glm/vec4.hpp \ - /usr/include/glm/vector_relational.hpp \ /usr/include/gnu/stubs-64.h \ /usr/include/gnu/stubs.h \ /usr/include/libintl.h \ /usr/include/limits.h \ + /usr/include/linux/close_range.h \ /usr/include/linux/errno.h \ /usr/include/linux/limits.h \ /usr/include/linux/posix_types.h \ @@ -4410,7 +4186,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/linux/stddef.h \ /usr/include/linux/types.h \ /usr/include/locale.h \ - /usr/include/math.h \ /usr/include/pthread.h \ /usr/include/sched.h \ /usr/include/stdc-predef.h \ @@ -4422,8 +4197,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/sys/cdefs.h \ /usr/include/sys/select.h \ /usr/include/sys/single_threaded.h \ + /usr/include/sys/syscall.h \ /usr/include/sys/types.h \ + /usr/include/syscall.h \ /usr/include/time.h \ + /usr/include/unistd.h \ /usr/include/vk_video/vulkan_video_codec_av1std.h \ /usr/include/vk_video/vulkan_video_codec_av1std_decode.h \ /usr/include/vk_video/vulkan_video_codec_av1std_encode.h \ @@ -4441,7 +4219,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/include/vulkan/vulkan_core.h \ /usr/include/wchar.h \ /usr/include/wctype.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ @@ -4449,10 +4226,10 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: /home/Jor /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanPipeline.cpp \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/FileReader.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h \ /usr/include/GL/gl.h \ /usr/include/GL/glext.h \ /usr/include/GLFW/glfw3.h \ @@ -5423,10 +5200,13 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: /home/Jordan/Pr /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h -CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanVertexBuffer.cpp \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ +CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanTexture.cpp \ + /home/Jordan/Projects/CPP/LearningVulkan/lib/stb/stb_image.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanBuffers.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanTexture.hpp \ /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h \ /usr/include/GL/gl.h \ /usr/include/GL/glext.h \ /usr/include/GLFW/glfw3.h \ @@ -5447,6 +5227,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan /usr/include/bits/atomic_wide_counter.h \ /usr/include/bits/byteswap.h \ /usr/include/bits/cpu-set.h \ + /usr/include/bits/dl_find_object.h \ + /usr/include/bits/dlfcn.h \ /usr/include/bits/endian.h \ /usr/include/bits/endianness.h \ /usr/include/bits/errno.h \ @@ -5522,6 +5304,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan /usr/include/bits/wctype-wchar.h \ /usr/include/bits/wordsize.h \ /usr/include/bits/xopen_lim.h \ + /usr/include/c++/15.2.1/algorithm \ /usr/include/c++/15.2.1/array \ /usr/include/c++/15.2.1/backward/binders.h \ /usr/include/c++/15.2.1/bit \ @@ -5572,6 +5355,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan /usr/include/c++/15.2.1/bits/predefined_ops.h \ /usr/include/c++/15.2.1/bits/ptr_traits.h \ /usr/include/c++/15.2.1/bits/range_access.h \ + /usr/include/c++/15.2.1/bits/ranges_algo.h \ /usr/include/c++/15.2.1/bits/ranges_algobase.h \ /usr/include/c++/15.2.1/bits/ranges_base.h \ /usr/include/c++/15.2.1/bits/ranges_cmp.h \ @@ -5591,6 +5375,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h \ /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h \ /usr/include/c++/15.2.1/bits/stl_pair.h \ + /usr/include/c++/15.2.1/bits/stl_relops.h \ /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ /usr/include/c++/15.2.1/bits/stl_uninitialized.h \ /usr/include/c++/15.2.1/bits/stl_vector.h \ @@ -5643,10 +5428,13 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan /usr/include/c++/15.2.1/new \ /usr/include/c++/15.2.1/numbers \ /usr/include/c++/15.2.1/optional \ + /usr/include/c++/15.2.1/pstl/execution_defs.h \ + /usr/include/c++/15.2.1/pstl/glue_algorithm_defs.h \ /usr/include/c++/15.2.1/pstl/pstl_config.h \ /usr/include/c++/15.2.1/source_location \ /usr/include/c++/15.2.1/span \ /usr/include/c++/15.2.1/stdexcept \ + /usr/include/c++/15.2.1/stdlib.h \ /usr/include/c++/15.2.1/streambuf \ /usr/include/c++/15.2.1/string \ /usr/include/c++/15.2.1/string_view \ @@ -5667,7 +5455,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan /usr/include/c++/15.2.1/type_traits \ /usr/include/c++/15.2.1/typeinfo \ /usr/include/c++/15.2.1/unordered_map \ + /usr/include/c++/15.2.1/utility \ /usr/include/c++/15.2.1/vector \ + /usr/include/c++/15.2.1/version \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h \ @@ -5682,6 +5472,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/os_defines.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h \ /usr/include/ctype.h \ + /usr/include/dlfcn.h \ /usr/include/endian.h \ /usr/include/errno.h \ /usr/include/features-time64.h \ @@ -5859,7 +5650,14 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan /usr/include/vk_video/vulkan_video_codecs_common.h \ /usr/include/vulkan/vk_platform.h \ /usr/include/vulkan/vulkan.h \ + /usr/include/vulkan/vulkan.hpp \ /usr/include/vulkan/vulkan_core.h \ + /usr/include/vulkan/vulkan_enums.hpp \ + /usr/include/vulkan/vulkan_funcs.hpp \ + /usr/include/vulkan/vulkan_handles.hpp \ + /usr/include/vulkan/vulkan_hpp_macros.hpp \ + /usr/include/vulkan/vulkan_structs.hpp \ + /usr/include/vulkan/vulkan_to_string.hpp \ /usr/include/wchar.h \ /usr/include/wctype.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h \ @@ -6296,7 +6094,7 @@ LearningVulkan: /usr/lib/Scrt1.o \ CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_widgets.cpp.o \ CMakeFiles/LearningVulkan.dir/src/main.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o \ - CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o \ + CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o \ @@ -6305,7 +6103,7 @@ LearningVulkan: /usr/lib/Scrt1.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o \ - CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o \ + CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o \ CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o \ CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o @@ -6316,7 +6114,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o: -CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o: +CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o: CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_tables.cpp.o: @@ -6352,8 +6150,6 @@ CMakeFiles/LearningVulkan.dir/lib/imgui/backends/imgui_impl_glfw.cpp.o: /usr/lib/libgcc_s.so.1: -CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: - /usr/lib/libdl.a: /usr/lib/libXi.so: @@ -6362,15 +6158,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/stb_image_impl.cpp: -/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanVertexBuffer.cpp: - -/usr/include/c++/15.2.1/pstl/glue_algorithm_defs.h: - -/usr/include/c++/15.2.1/pstl/execution_defs.h: - -/usr/include/c++/15.2.1/bits/ranges_algo.h: - -/usr/include/c++/15.2.1/algorithm: +/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanTexture.cpp: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanSwapChain.cpp: @@ -6382,10 +6170,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanPipeline.cpp: -CMakeFiles/LearningVulkan.dir/src/main.cpp.o: - -/usr/include/c++/15.2.1/cstring: - /usr/include/c++/15.2.1/bits/stl_tree.h: /usr/include/c++/15.2.1/bits/stl_set.h: @@ -6400,6 +6184,12 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanDebugManager.cpp: +/usr/include/vulkan/vulkan_to_string.hpp: + +/usr/include/vulkan/vulkan_enums.hpp: + +/usr/include/vulkan/vulkan.hpp: + /usr/include/glm/gtc/matrix_transform.inl: /usr/include/glm/gtc/matrix_transform.hpp: @@ -6408,29 +6198,33 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /usr/include/glm/ext/scalar_constants.hpp: -/usr/include/glm/ext/matrix_transform.inl: - /usr/include/glm/ext/matrix_transform.hpp: +/usr/include/vulkan/vulkan_handles.hpp: + /usr/include/glm/ext/matrix_projection.inl: /usr/include/glm/ext/matrix_projection.hpp: /usr/include/glm/ext/matrix_clip_space.inl: +/usr/include/c++/15.2.1/version: + +/usr/include/c++/15.2.1/utility: + /usr/include/c++/15.2.1/sstream: +/usr/include/c++/15.2.1/pstl/glue_algorithm_defs.h: + /usr/include/c++/15.2.1/ostream: /usr/include/c++/15.2.1/istream: -/usr/include/c++/15.2.1/ios: +CMakeFiles/LearningVulkan.dir/src/main.cpp.o: -/usr/include/c++/15.2.1/bits/unique_ptr.h: +/usr/include/c++/15.2.1/cstring: -/usr/include/c++/15.2.1/bits/shared_ptr_base.h: - -/usr/include/c++/15.2.1/bits/shared_ptr.h: +/usr/include/c++/15.2.1/bits/ranges_algo.h: /usr/include/c++/15.2.1/bits/parse_numbers.h: @@ -6438,11 +6232,21 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /usr/include/c++/15.2.1/bits/chrono_io.h: -/usr/include/c++/15.2.1/bits/basic_ios.tcc: +/usr/include/c++/15.2.1/algorithm: -/usr/include/c++/15.2.1/bits/allocated_ptr.h: +/usr/include/bits/dl_find_object.h: -/usr/include/c++/15.2.1/bits/align.h: +/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h: + +/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h: + +/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.hpp: + +/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h: + +/home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.cpp: + +/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h: /home/Jordan/Projects/CPP/LearningVulkan/lib/stb/stb_image.h: @@ -6450,7 +6254,11 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanContext.cpp: -/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanCommandBuffers.cpp: +/usr/include/glm/ext/matrix_transform.inl: + +/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanBuffers.h: + +/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanBuffers.cpp: /home/Jordan/Projects/CPP/LearningVulkan/src/private/GlfwWindowManager.cpp: @@ -6462,6 +6270,10 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o: /usr/include/time.h: +/usr/include/syscall.h: + +/usr/include/sys/syscall.h: + /usr/include/sched.h: /usr/include/locale.h: @@ -6486,10 +6298,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o: /usr/include/glm/mat3x4.hpp: -/usr/lib/libvulkan.so: - -/usr/include/glm/mat2x3.hpp: - /usr/include/c++/15.2.1/ratio: /usr/include/glm/mat2x2.hpp: @@ -6534,8 +6342,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o: /usr/include/glm/ext/vector_double2_precision.hpp: -/usr/include/glm/ext/vector_double2.hpp: - /usr/include/glm/ext/vector_bool4_precision.hpp: /usr/include/glm/ext/vector_bool3_precision.hpp: @@ -6544,6 +6350,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o: /usr/include/glm/ext/vector_bool2.hpp: +/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanTexture.hpp: + /usr/include/glm/ext/scalar_int_sized.hpp: /usr/include/glm/ext/matrix_float4x3.hpp: @@ -6572,10 +6380,40 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o: /usr/include/glm/ext/matrix_double4x3_precision.hpp: +/usr/include/glm/ext/matrix_double4x2.hpp: + +/usr/include/glm/ext/matrix_double3x3_precision.hpp: + +/usr/include/glm/ext/matrix_double3x2_precision.hpp: + +/usr/include/glm/ext/matrix_double3x2.hpp: + +/usr/include/c++/15.2.1/set: + +/usr/include/glm/ext/matrix_double2x3_precision.hpp: + +/usr/include/glm/ext/matrix_double2x2_precision.hpp: + +/usr/include/glm/ext/matrix_double2x2.hpp: + +/usr/include/glm/mat3x3.hpp: + +/usr/include/glm/exponential.hpp: + +/usr/include/glm/detail/type_vec4.inl: + +/usr/include/glm/simd/platform.h: + +/usr/include/glm/detail/type_vec4.hpp: + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/avx512vpopcntdqintrin.h: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/avx512vp2intersectvlintrin.h: +/usr/include/glm/ext/matrix_double2x3.hpp: + +/usr/include/sys/ucontext.h: + CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o: /usr/include/stdc-predef.h: @@ -6608,20 +6446,12 @@ CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/avx10_2-512satcvtintrin.h: -/usr/include/c++/15.2.1/bits/ostream.h: - -/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/avx10_2-512minmaxintrin.h: - /usr/include/c++/15.2.1/bits/fstream.tcc: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/avx10_2-512mediaintrin.h: /usr/include/c++/15.2.1/tr1/bessel_function.tcc: -/usr/include/sys/ucontext.h: - -/usr/include/glm/ext/matrix_double2x3.hpp: - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/amxfp8intrin.h: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/amxfp16intrin.h: @@ -6630,6 +6460,8 @@ CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/avx10_2minmaxintrin.h: +/usr/include/c++/15.2.1/ios: + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/amxcomplexintrin.h: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/xsaveoptintrin.h: @@ -6672,6 +6504,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/bits/types/sig_atomic_t.h: +/usr/include/asm/unistd_64.h: + /usr/include/c++/15.2.1/tr1/poly_hermite.tcc: /usr/include/bits/types/timer_t.h: @@ -6684,6 +6518,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/c++/15.2.1/tr1/gamma.tcc: +/home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h: + /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanFramebuffers.cpp: /usr/include/c++/15.2.1/concepts: @@ -6692,8 +6528,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/c++/15.2.1/cerrno: -/usr/include/glm/ext/matrix_double4x2.hpp: - /usr/include/glm/ext/matrix_float4x3_precision.hpp: /usr/include/endian.h: @@ -6756,6 +6590,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/basic_file.h: +/usr/include/bits/dlfcn.h: + /usr/include/glm/detail/_vectorize.hpp: /usr/include/c++/15.2.1/bits/stl_algobase.h: @@ -6768,8 +6604,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/bits/types/siginfo_t.h: -/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h: - /usr/include/X11/extensions/randr.h: /usr/include/bits/types/__sigval_t.h: @@ -6794,6 +6628,10 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/c++/15.2.1/cwchar: +/usr/include/glm/ext/matrix_double3x4.hpp: + +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/adxintrin.h: + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/cpu_defines.h: /usr/include/c++/15.2.1/bits/uses_allocator.h: @@ -6850,24 +6688,16 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/c++/15.2.1/type_traits: -/home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h: - -/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h: - /usr/include/c++/15.2.1/debug/debug.h: -/usr/include/vk_video/vulkan_video_codec_h264std.h: +/usr/include/c++/15.2.1/bits/align.h: -/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/fmaintrin.h: +/usr/include/vk_video/vulkan_video_codec_h264std.h: /usr/include/bits/floatn.h: /usr/include/bits/types/cookie_io_functions_t.h: -/home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.cpp: - -/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h: - /usr/include/glm/detail/compute_vector_decl.hpp: /usr/include/bits/stdint-uintn.h: @@ -6882,8 +6712,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/bits/stdio_lim.h: -/usr/include/glm/ext/matrix_double2x2_precision.hpp: - /usr/include/sys/types.h: /usr/include/glm/ext/matrix_double4x3.hpp: @@ -6894,8 +6722,12 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/ctype.h: +/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp: + /usr/include/c++/15.2.1/map: +/usr/include/vulkan/vulkan_hpp_macros.hpp: + /usr/include/c++/15.2.1/new: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/libgcc.a: @@ -6906,7 +6738,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/avx10_2mediaintrin.h: -/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h: +/usr/include/c++/15.2.1/bits/shared_ptr_base.h: /usr/include/bits/stdio.h: @@ -6928,8 +6760,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/bits/confname.h: -/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h: - /usr/include/bits/xopen_lim.h: /usr/include/c++/15.2.1/ext/numeric_traits.h: @@ -7006,6 +6836,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/bits/byteswap.h: +/usr/include/vulkan/vulkan_structs.hpp: + /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.h: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/amxtileintrin.h: @@ -7028,6 +6860,10 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/c++/15.2.1/cassert: +/usr/include/glm/ext/matrix_double2x4.hpp: + +/usr/include/bits/math-vector.h: + /usr/include/bits/uio_lim.h: /usr/include/glm/ext/vector_uint4_sized.hpp: @@ -7044,6 +6880,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: /usr/include/X11/extensions/Xrender.h: +/usr/include/c++/15.2.1/bits/allocated_ptr.h: + /usr/include/vk_video/vulkan_video_codec_av1std.h: /usr/include/bits/sigstack.h: @@ -7092,6 +6930,12 @@ CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_widgets.cpp.o: /usr/include/bits/uintn-identity.h: +/usr/include/c++/15.2.1/iostream: + +/usr/include/glm/ext/matrix_double2x4_precision.hpp: + +/usr/include/features-time64.h: + /usr/include/bits/pthreadtypes-arch.h: /usr/include/gnu/stubs.h: @@ -7210,6 +7054,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/avx10_2copyintrin.h: +CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o: + /usr/include/c++/15.2.1/iomanip: /usr/include/bits/locale.h: @@ -7222,10 +7068,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/mwaitxintrin.h: -/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/adxintrin.h: - -/usr/include/glm/ext/matrix_double3x4.hpp: - /usr/include/bits/mathcalls.h: /usr/include/bits/types/stack_t.h: @@ -7258,6 +7100,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /usr/include/glm/detail/type_mat4x2.hpp: +/usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h: + /usr/include/glm/detail/type_mat4x2.inl: /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc: @@ -7298,18 +7142,16 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/fxsrintrin.h: -/usr/include/c++/15.2.1/iostream: - -/usr/include/features-time64.h: - -/usr/include/glm/ext/matrix_double2x4_precision.hpp: - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/hresetintrin.h: /usr/include/c++/15.2.1/bits/alloc_traits.h: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/ia32intrin.h: +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/fmaintrin.h: + +/usr/include/c++/15.2.1/bits/atomic_wait.h: + /usr/include/glm/mat4x4.hpp: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/immintrin.h: @@ -7336,8 +7178,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/movrsintrin.h: -/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h: - /usr/include/c++/15.2.1/bits/basic_ios.h: /usr/include/asm/bitsperlong.h: @@ -7358,20 +7198,16 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /usr/include/c++/15.2.1/bits/ostream.tcc: -/usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h: - /usr/include/glm/ext/matrix_double3x4_precision.hpp: +/usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h: + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/rtmintrin.h: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/serializeintrin.h: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/sgxintrin.h: -/usr/include/glm/ext/matrix_double2x2.hpp: - -/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h: - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/sha512intrin.h: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/amxbf16intrin.h: @@ -7380,14 +7216,14 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h: -/usr/include/glm/ext/matrix_double3x2.hpp: - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/tbmintrin.h: /usr/include/c++/15.2.1/bits/codecvt.h: /usr/include/glm/detail/type_half.inl: +/usr/include/vulkan/vulkan_funcs.hpp: + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/tmmintrin.h: /usr/include/X11/Xdefs.h: @@ -7448,18 +7284,12 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui_tables.cpp: -/usr/include/bits/math-vector.h: - -/usr/include/glm/ext/matrix_double2x4.hpp: - /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends/imgui_impl_glfw.cpp: /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imstb_textedit.h: /home/Jordan/Projects/CPP/LearningVulkan/src/public/GlfwWindowManager.h: -/home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h: - /usr/include/bits/struct_rwlock.h: /usr/include/bits/sched.h: @@ -7484,6 +7314,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /usr/include/c++/15.2.1/bits/stl_heap.h: +/usr/include/dlfcn.h: + /usr/include/glm/ext/vector_float4_precision.hpp: /usr/include/c++/15.2.1/exception: @@ -7506,10 +7338,18 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /usr/include/asm/types.h: +/usr/lib/libvulkan.so: + +/usr/include/glm/mat2x3.hpp: + +/usr/include/asm/unistd.h: + /usr/include/bits/errno.h: /usr/include/bits/setjmp.h: +/usr/include/bits/syscall.h: + /usr/include/bits/timex.h: /usr/include/c++/15.2.1/ctime: @@ -7524,12 +7364,18 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: /usr/include/bits/wctype-wchar.h: +/usr/include/c++/15.2.1/backward/auto_ptr.h: + /usr/include/c++/15.2.1/backward/binders.h: /usr/include/c++/15.2.1/ext/concurrence.h: /usr/include/c++/15.2.1/cctype: +/usr/include/c++/15.2.1/bits/atomic_base.h: + +/usr/include/c++/15.2.1/bits/basic_ios.tcc: + /usr/lib/libc.so: /usr/include/glm/mat2x4.hpp: @@ -7584,12 +7430,12 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: /usr/include/c++/15.2.1/bits/hashtable.h: -/usr/include/glm/ext/matrix_double3x3_precision.hpp: - /usr/include/c++/15.2.1/bits/hashtable_policy.h: /usr/include/c++/15.2.1/bits/locale_classes.tcc: +/usr/include/c++/15.2.1/bits/shared_ptr_atomic.h: + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/pmmintrin.h: /usr/include/c++/15.2.1/bits/locale_conv.h: @@ -7606,26 +7452,26 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: /usr/include/c++/15.2.1/bits/memory_resource.h: -/usr/include/c++/15.2.1/bits/algorithmfwd.h: - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h: +/usr/include/c++/15.2.1/bits/algorithmfwd.h: + /usr/include/c++/15.2.1/bits/memoryfwd.h: /usr/include/c++/15.2.1/bits/monostate.h: /usr/include/c++/15.2.1/bits/nested_exception.h: -/usr/include/glm/mat3x3.hpp: - -/usr/include/glm/exponential.hpp: - /usr/include/glm/mat4x2.hpp: /usr/include/bits/siginfo-consts.h: /usr/include/c++/15.2.1/bits/new_allocator.h: +/usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/avx10_2-512minmaxintrin.h: + +/usr/include/c++/15.2.1/bits/ostream.h: + /usr/include/c++/15.2.1/bits/range_access.h: /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h: @@ -7640,10 +7486,20 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: /usr/include/c++/15.2.1/bits/refwrap.h: +/usr/include/c++/15.2.1/bits/shared_ptr.h: + /usr/include/glm/ext/vector_int3.hpp: /usr/include/c++/15.2.1/bits/std_function.h: +/usr/include/glm/ext/vector_double2.hpp: + +/usr/include/c++/15.2.1/bits/std_mutex.h: + +/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanInstanceManager.cpp: + +/usr/include/glm/detail/_fixes.hpp: + /usr/include/glm/ext/vector_int2.hpp: /usr/include/c++/15.2.1/bits/stl_algo.h: @@ -7660,6 +7516,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: /usr/include/c++/15.2.1/bits/stl_function.h: +/usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h: + /usr/include/c++/15.2.1/bits/sstream.tcc: /usr/include/glm/ext/matrix_float3x3.hpp: @@ -7668,6 +7526,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: /usr/include/c++/15.2.1/bits/unicode-data.h: +/usr/include/c++/15.2.1/bits/unique_ptr.h: + /usr/include/vk_video/vulkan_video_codec_h264std_encode.h: /usr/include/c++/15.2.1/cstddef: @@ -7686,16 +7546,24 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: /usr/include/linux/types.h: +/usr/include/c++/15.2.1/bits/ranges_uninitialized.h: + /usr/include/c++/15.2.1/ext/string_conversions.h: /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h: /usr/include/c++/15.2.1/format: +/usr/include/c++/15.2.1/memory: + /usr/include/c++/15.2.1/charconv: /usr/include/c++/15.2.1/optional: +/usr/include/c++/15.2.1/pstl/execution_defs.h: + +/usr/include/c++/15.2.1/pstl/glue_memory_defs.h: + /usr/include/c++/15.2.1/source_location: /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/avx512vbmiintrin.h: @@ -7722,10 +7590,6 @@ CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o: /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h: -/home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanInstanceManager.cpp: - -/usr/include/glm/detail/_fixes.hpp: - /usr/include/X11/keysymdef.h: /usr/include/glm/detail/func_common.inl: @@ -7746,6 +7610,8 @@ CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o: /usr/include/glm/detail/func_trigonometric.inl: +/usr/include/c++/15.2.1/bits/stl_relops.h: + /usr/include/glm/detail/qualifier.hpp: /usr/include/linux/posix_types.h: @@ -7791,15 +7657,3 @@ CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o: /usr/include/glm/detail/type_vec2.inl: /usr/include/glm/detail/type_vec3.inl: - -/usr/include/glm/simd/platform.h: - -/usr/include/glm/detail/type_vec4.hpp: - -/usr/include/glm/detail/type_vec4.inl: - -/usr/include/c++/15.2.1/set: - -/usr/include/glm/ext/matrix_double2x3_precision.hpp: - -/usr/include/glm/ext/matrix_double3x2_precision.hpp: diff --git a/build/CMakeFiles/LearningVulkan.dir/flags.make b/build/CMakeFiles/LearningVulkan.dir/flags.make index e5a0b15..1f72f03 100644 --- a/build/CMakeFiles/LearningVulkan.dir/flags.make +++ b/build/CMakeFiles/LearningVulkan.dir/flags.make @@ -4,7 +4,7 @@ # compile CXX with /usr/bin/c++ CXX_DEFINES = -CXX_INCLUDES = -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public +CXX_INCLUDES = -I/home/Jordan/Projects/CPP/LearningVulkan/lib -I/home/Jordan/Projects/CPP/LearningVulkan/lib/stb -I/home/Jordan/Projects/CPP/LearningVulkan/lib/tinyobjloader -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui -I/home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends -I/home/Jordan/Projects/CPP/LearningVulkan/src -I/home/Jordan/Projects/CPP/LearningVulkan/src/utilities -I/home/Jordan/Projects/CPP/LearningVulkan/src/private -I/home/Jordan/Projects/CPP/LearningVulkan/src/public CXX_FLAGS = -std=c++20 -Wall -Wextra -O2 diff --git a/build/CMakeFiles/LearningVulkan.dir/link.d b/build/CMakeFiles/LearningVulkan.dir/link.d index feb1b0c..9bee5cd 100644 --- a/build/CMakeFiles/LearningVulkan.dir/link.d +++ b/build/CMakeFiles/LearningVulkan.dir/link.d @@ -4,7 +4,7 @@ LearningVulkan: \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/crtbeginS.o \ CMakeFiles/LearningVulkan.dir/src/main.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o \ - CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o \ + CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o \ @@ -13,7 +13,7 @@ LearningVulkan: \ CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o \ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o \ - CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o \ + CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o \ CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o \ CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o \ CMakeFiles/LearningVulkan.dir/lib/imgui/imgui.cpp.o \ @@ -74,7 +74,7 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o: -CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o: +CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o: CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: @@ -92,7 +92,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: -CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: +CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o: CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o: diff --git a/build/CMakeFiles/LearningVulkan.dir/link.txt b/build/CMakeFiles/LearningVulkan.dir/link.txt index 2a82490..35a2af1 100644 --- a/build/CMakeFiles/LearningVulkan.dir/link.txt +++ b/build/CMakeFiles/LearningVulkan.dir/link.txt @@ -1 +1 @@ -/usr/bin/c++ -Wl,--dependency-file=CMakeFiles/LearningVulkan.dir/link.d CMakeFiles/LearningVulkan.dir/src/main.cpp.o CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_demo.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_draw.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_tables.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_widgets.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/backends/imgui_impl_glfw.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/backends/imgui_impl_vulkan.cpp.o -o LearningVulkan -lglfw -lvulkan -ldl -lpthread -lX11 -lXxf86vm -lXrandr -lXi +/usr/bin/c++ -Wl,--dependency-file=CMakeFiles/LearningVulkan.dir/link.d CMakeFiles/LearningVulkan.dir/src/main.cpp.o CMakeFiles/LearningVulkan.dir/src/private/GlfwWindowManager.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanBuffers.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o CMakeFiles/LearningVulkan.dir/src/private/VulkanTexture.cpp.o CMakeFiles/LearningVulkan.dir/src/utilities/Logger.cpp.o CMakeFiles/LearningVulkan.dir/src/utilities/stb_image_impl.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_demo.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_draw.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_tables.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/imgui_widgets.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/backends/imgui_impl_glfw.cpp.o CMakeFiles/LearningVulkan.dir/lib/imgui/backends/imgui_impl_vulkan.cpp.o -o LearningVulkan -lglfw -lvulkan -ldl -lpthread -lX11 -lXxf86vm -lXrandr -lXi diff --git a/build/CMakeFiles/LearningVulkan.dir/src/main.cpp.o b/build/CMakeFiles/LearningVulkan.dir/src/main.cpp.o index 7697d189b1b26ada1d4df779f721f6635b3c92c1..4d46e613a124fe6d5219d67361d9375acecb4563 100644 GIT binary patch delta 49474 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 delta 51175 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 bkyMY1>D?ckOH$o;%2wEcT+AS)&LaO8GA5#r diff --git a/build/CMakeFiles/LearningVulkan.dir/src/main.cpp.o.d b/build/CMakeFiles/LearningVulkan.dir/src/main.cpp.o.d index 95be242..e0663c6 100644 --- a/build/CMakeFiles/LearningVulkan.dir/src/main.cpp.o.d +++ b/build/CMakeFiles/LearningVulkan.dir/src/main.cpp.o.d @@ -35,6 +35,63 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: \ /usr/include/vk_video/vulkan_video_codec_vp9std.h \ /usr/include/vk_video/vulkan_video_codec_vp9std_decode.h \ /usr/include/vk_video/vulkan_video_codec_vp9std.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h \ + /usr/include/c++/15.2.1/optional /usr/include/c++/15.2.1/bits/version.h \ + /usr/include/c++/15.2.1/type_traits /usr/include/c++/15.2.1/exception \ + /usr/include/c++/15.2.1/bits/exception.h \ + /usr/include/c++/15.2.1/bits/exception_ptr.h \ + /usr/include/c++/15.2.1/bits/exception_defines.h \ + /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ + /usr/include/c++/15.2.1/typeinfo \ + /usr/include/c++/15.2.1/bits/hash_bytes.h /usr/include/c++/15.2.1/new \ + /usr/include/c++/15.2.1/bits/move.h \ + /usr/include/c++/15.2.1/bits/nested_exception.h \ + /usr/include/c++/15.2.1/initializer_list \ + /usr/include/c++/15.2.1/bits/enable_special_members.h \ + /usr/include/c++/15.2.1/bits/functional_hash.h \ + /usr/include/c++/15.2.1/bits/stl_construct.h \ + /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h \ + /usr/include/c++/15.2.1/bits/iterator_concepts.h \ + /usr/include/c++/15.2.1/concepts \ + /usr/include/c++/15.2.1/bits/ptr_traits.h \ + /usr/include/c++/15.2.1/bits/ranges_cmp.h \ + /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/15.2.1/bits/concept_check.h \ + /usr/include/c++/15.2.1/debug/assertions.h \ + /usr/include/c++/15.2.1/bits/utility.h /usr/include/c++/15.2.1/compare \ + /usr/include/c++/15.2.1/bits/invoke.h /usr/include/c++/15.2.1/vector \ + /usr/include/c++/15.2.1/bits/requires_hosted.h \ + /usr/include/c++/15.2.1/bits/stl_algobase.h \ + /usr/include/c++/15.2.1/bits/functexcept.h \ + /usr/include/c++/15.2.1/bits/cpp_type_traits.h \ + /usr/include/c++/15.2.1/ext/type_traits.h \ + /usr/include/c++/15.2.1/ext/numeric_traits.h \ + /usr/include/c++/15.2.1/bits/stl_pair.h \ + /usr/include/c++/15.2.1/bits/stl_iterator.h \ + /usr/include/c++/15.2.1/debug/debug.h \ + /usr/include/c++/15.2.1/bits/predefined_ops.h \ + /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/bits/allocator.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/15.2.1/bits/new_allocator.h \ + /usr/include/c++/15.2.1/bits/memoryfwd.h \ + /usr/include/c++/15.2.1/bits/stl_uninitialized.h \ + /usr/include/c++/15.2.1/ext/alloc_traits.h \ + /usr/include/c++/15.2.1/bits/alloc_traits.h \ + /usr/include/c++/15.2.1/bits/stl_vector.h \ + /usr/include/c++/15.2.1/bits/ranges_base.h \ + /usr/include/c++/15.2.1/bits/max_size_type.h \ + /usr/include/c++/15.2.1/numbers \ + /usr/include/c++/15.2.1/bits/stl_bvector.h \ + /usr/include/c++/15.2.1/bits/refwrap.h \ + /usr/include/c++/15.2.1/bits/stl_function.h \ + /usr/include/c++/15.2.1/backward/binders.h \ + /usr/include/c++/15.2.1/bits/range_access.h \ + /usr/include/c++/15.2.1/bits/vector.tcc \ + /usr/include/c++/15.2.1/bits/memory_resource.h \ + /usr/include/c++/15.2.1/cstddef \ + /usr/include/c++/15.2.1/bits/uses_allocator.h \ + /usr/include/c++/15.2.1/bits/uses_allocator_args.h \ + /usr/include/c++/15.2.1/tuple /usr/include/c++/15.2.1/bits/ranges_util.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imconfig.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h \ @@ -46,36 +103,14 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends/imgui_impl_vulkan.h \ /usr/include/vulkan/vulkan.h /usr/include/vulkan/vulkan_core.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ - /usr/include/c++/15.2.1/string \ - /usr/include/c++/15.2.1/bits/requires_hosted.h \ - /usr/include/c++/15.2.1/bits/stringfwd.h \ - /usr/include/c++/15.2.1/bits/memoryfwd.h \ + /usr/include/c++/15.2.1/string /usr/include/c++/15.2.1/bits/stringfwd.h \ /usr/include/c++/15.2.1/bits/char_traits.h \ /usr/include/c++/15.2.1/bits/postypes.h /usr/include/c++/15.2.1/cwchar \ /usr/include/wchar.h /usr/include/bits/floatn.h \ /usr/include/bits/floatn-common.h /usr/include/bits/types/wint_t.h \ /usr/include/bits/types/mbstate_t.h \ /usr/include/bits/types/__mbstate_t.h /usr/include/bits/types/__FILE.h \ - /usr/include/bits/types/FILE.h /usr/include/c++/15.2.1/type_traits \ - /usr/include/c++/15.2.1/bits/version.h /usr/include/c++/15.2.1/compare \ - /usr/include/c++/15.2.1/concepts \ - /usr/include/c++/15.2.1/bits/stl_construct.h /usr/include/c++/15.2.1/new \ - /usr/include/c++/15.2.1/bits/exception.h \ - /usr/include/c++/15.2.1/bits/move.h \ - /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h \ - /usr/include/c++/15.2.1/bits/iterator_concepts.h \ - /usr/include/c++/15.2.1/bits/ptr_traits.h \ - /usr/include/c++/15.2.1/bits/ranges_cmp.h \ - /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/15.2.1/bits/concept_check.h \ - /usr/include/c++/15.2.1/debug/assertions.h \ - /usr/include/c++/15.2.1/bits/allocator.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h \ - /usr/include/c++/15.2.1/bits/new_allocator.h \ - /usr/include/c++/15.2.1/bits/functexcept.h \ - /usr/include/c++/15.2.1/bits/exception_defines.h \ - /usr/include/c++/15.2.1/bits/cpp_type_traits.h \ - /usr/include/c++/15.2.1/bits/localefwd.h \ + /usr/include/bits/types/FILE.h /usr/include/c++/15.2.1/bits/localefwd.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++locale.h \ /usr/include/c++/15.2.1/clocale /usr/include/locale.h \ /usr/include/bits/locale.h /usr/include/c++/15.2.1/iosfwd \ @@ -83,29 +118,8 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: \ /usr/include/bits/endian.h /usr/include/bits/endianness.h \ /usr/include/c++/15.2.1/bits/ostream_insert.h \ /usr/include/c++/15.2.1/bits/cxxabi_forced.h \ - /usr/include/c++/15.2.1/bits/stl_iterator.h \ - /usr/include/c++/15.2.1/ext/type_traits.h \ - /usr/include/c++/15.2.1/bits/stl_function.h \ - /usr/include/c++/15.2.1/backward/binders.h \ - /usr/include/c++/15.2.1/ext/numeric_traits.h \ - /usr/include/c++/15.2.1/bits/stl_algobase.h \ - /usr/include/c++/15.2.1/bits/stl_pair.h \ - /usr/include/c++/15.2.1/bits/utility.h \ - /usr/include/c++/15.2.1/debug/debug.h \ - /usr/include/c++/15.2.1/bits/predefined_ops.h \ - /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/bits/refwrap.h \ - /usr/include/c++/15.2.1/bits/invoke.h \ - /usr/include/c++/15.2.1/bits/range_access.h \ - /usr/include/c++/15.2.1/initializer_list \ /usr/include/c++/15.2.1/bits/basic_string.h \ - /usr/include/c++/15.2.1/ext/alloc_traits.h \ - /usr/include/c++/15.2.1/bits/alloc_traits.h \ /usr/include/c++/15.2.1/string_view \ - /usr/include/c++/15.2.1/bits/functional_hash.h \ - /usr/include/c++/15.2.1/bits/hash_bytes.h \ - /usr/include/c++/15.2.1/bits/ranges_base.h \ - /usr/include/c++/15.2.1/bits/max_size_type.h \ - /usr/include/c++/15.2.1/numbers \ /usr/include/c++/15.2.1/bits/string_view.tcc \ /usr/include/c++/15.2.1/ext/string_conversions.h \ /usr/include/c++/15.2.1/cstdlib /usr/include/stdlib.h \ @@ -135,11 +149,6 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: \ /usr/include/asm-generic/errno-base.h /usr/include/bits/types/error_t.h \ /usr/include/c++/15.2.1/bits/charconv.h \ /usr/include/c++/15.2.1/bits/basic_string.tcc \ - /usr/include/c++/15.2.1/bits/memory_resource.h \ - /usr/include/c++/15.2.1/cstddef \ - /usr/include/c++/15.2.1/bits/uses_allocator.h \ - /usr/include/c++/15.2.1/bits/uses_allocator_args.h \ - /usr/include/c++/15.2.1/tuple /usr/include/c++/15.2.1/bits/ranges_util.h \ /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/format \ /usr/include/c++/15.2.1/array /usr/include/c++/15.2.1/charconv \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/error_constants.h \ @@ -170,11 +179,6 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_base.h \ /usr/include/c++/15.2.1/bits/ios_base.h \ /usr/include/c++/15.2.1/system_error /usr/include/c++/15.2.1/stdexcept \ - /usr/include/c++/15.2.1/exception \ - /usr/include/c++/15.2.1/bits/exception_ptr.h \ - /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ - /usr/include/c++/15.2.1/typeinfo \ - /usr/include/c++/15.2.1/bits/nested_exception.h \ /usr/include/c++/15.2.1/streambuf \ /usr/include/c++/15.2.1/bits/streambuf.tcc \ /usr/include/c++/15.2.1/bits/streambuf_iterator.h \ @@ -186,10 +190,8 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/messages_members.h \ /usr/include/libintl.h /usr/include/c++/15.2.1/bits/codecvt.h \ /usr/include/c++/15.2.1/bits/locale_facets_nonio.tcc \ - /usr/include/c++/15.2.1/bits/locale_conv.h \ - /usr/include/c++/15.2.1/optional \ - /usr/include/c++/15.2.1/bits/enable_special_members.h \ - /usr/include/c++/15.2.1/span /usr/include/c++/15.2.1/bits/monostate.h \ + /usr/include/c++/15.2.1/bits/locale_conv.h /usr/include/c++/15.2.1/span \ + /usr/include/c++/15.2.1/bits/monostate.h \ /usr/include/c++/15.2.1/bits/formatfwd.h \ /usr/include/c++/15.2.1/bits/ranges_algobase.h \ /usr/include/c++/15.2.1/bits/unicode.h \ @@ -201,13 +203,48 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: \ /usr/include/c++/15.2.1/bits/unicode-data.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/GlfwWindowManager.h \ /usr/include/GLFW/glfw3native.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /usr/include/glm/glm.hpp /usr/include/glm/detail/_fixes.hpp \ - /usr/include/c++/15.2.1/cmath /usr/include/math.h \ - /usr/include/bits/math-vector.h /usr/include/bits/libm-simd-decl-stubs.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp \ + /usr/include/c++/15.2.1/memory \ + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h \ + /usr/include/c++/15.2.1/bits/align.h \ + /usr/include/c++/15.2.1/bits/unique_ptr.h \ + /usr/include/c++/15.2.1/bits/ostream.h /usr/include/c++/15.2.1/ios \ + /usr/include/c++/15.2.1/bits/basic_ios.h \ + /usr/include/c++/15.2.1/bits/basic_ios.tcc \ + /usr/include/c++/15.2.1/bits/shared_ptr.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_base.h \ + /usr/include/c++/15.2.1/bits/allocated_ptr.h \ + /usr/include/c++/15.2.1/ext/aligned_buffer.h \ + /usr/include/c++/15.2.1/ext/concurrence.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h \ + /usr/include/c++/15.2.1/bits/atomic_base.h \ + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h \ + /usr/include/c++/15.2.1/bits/atomic_wait.h \ + /usr/include/c++/15.2.1/climits \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt_posix.h \ + /usr/include/bits/getopt_core.h /usr/include/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/sys/syscall.h /usr/include/asm/unistd.h \ + /usr/include/asm/unistd_64.h /usr/include/bits/syscall.h \ + /usr/include/c++/15.2.1/bits/std_mutex.h \ + /usr/include/c++/15.2.1/backward/auto_ptr.h \ + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h \ + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h \ + /usr/include/c++/15.2.1/pstl/execution_defs.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h \ + /usr/include/glm/fwd.hpp /usr/include/glm/detail/qualifier.hpp \ + /usr/include/glm/detail/setup.hpp /usr/include/c++/15.2.1/cassert \ + /usr/include/glm/simd/platform.h /usr/include/glm/glm.hpp \ + /usr/include/glm/detail/_fixes.hpp /usr/include/c++/15.2.1/cmath \ + /usr/include/math.h /usr/include/bits/math-vector.h \ + /usr/include/bits/libm-simd-decl-stubs.h \ /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ /usr/include/bits/fp-fast.h /usr/include/bits/mathcalls-macros.h \ /usr/include/bits/mathcalls-helper-functions.h \ @@ -225,17 +262,8 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: \ /usr/include/c++/15.2.1/tr1/poly_hermite.tcc \ /usr/include/c++/15.2.1/tr1/poly_laguerre.tcc \ /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc \ - /usr/include/glm/detail/setup.hpp /usr/include/c++/15.2.1/cassert \ - /usr/include/glm/simd/platform.h /usr/include/c++/15.2.1/climits \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ - /usr/include/bits/uio_lim.h /usr/include/c++/15.2.1/cfloat \ - /usr/include/glm/fwd.hpp /usr/include/glm/detail/qualifier.hpp \ - /usr/include/glm/detail/setup.hpp /usr/include/glm/vec2.hpp \ - /usr/include/glm/ext/vector_bool2.hpp \ + /usr/include/glm/detail/setup.hpp /usr/include/c++/15.2.1/cfloat \ + /usr/include/glm/vec2.hpp /usr/include/glm/ext/vector_bool2.hpp \ /usr/include/glm/detail/type_vec2.hpp \ /usr/include/glm/detail/type_vec2.inl \ /usr/include/glm/detail/compute_vector_relational.hpp \ @@ -260,13 +288,8 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: \ /usr/include/c++/15.2.1/bits/unordered_map.h \ /usr/include/c++/15.2.1/bits/hashtable.h \ /usr/include/c++/15.2.1/bits/hashtable_policy.h \ - /usr/include/c++/15.2.1/ext/aligned_buffer.h \ /usr/include/c++/15.2.1/bits/node_handle.h \ - /usr/include/c++/15.2.1/bits/erase_if.h /usr/include/c++/15.2.1/vector \ - /usr/include/c++/15.2.1/bits/stl_uninitialized.h \ - /usr/include/c++/15.2.1/bits/stl_vector.h \ - /usr/include/c++/15.2.1/bits/stl_bvector.h \ - /usr/include/c++/15.2.1/bits/vector.tcc \ + /usr/include/c++/15.2.1/bits/erase_if.h \ /usr/include/glm/detail/_vectorize.hpp \ /usr/include/glm/ext/vector_bool3_precision.hpp \ /usr/include/glm/ext/vector_float3.hpp \ @@ -358,11 +381,4 @@ CMakeFiles/LearningVulkan.dir/src/main.cpp.o: \ /usr/include/glm/packing.hpp /usr/include/glm/detail/func_packing.inl \ /usr/include/glm/detail/type_half.hpp \ /usr/include/glm/detail/type_half.inl /usr/include/glm/integer.hpp \ - /usr/include/glm/detail/func_integer.inl \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h + /usr/include/glm/detail/func_integer.inl diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o deleted file mode 100644 index 527acaf133940304e53937f74a09f66e65785a41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 191072 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∓=c^(X5ZTXguSBM|DC#UT<@f_ z|HKxjJs}@uzv}4FKHvX(5rV$`N7cUH{`2KwaiqVw|Ji?j`E81^U-7ljeu0Wg{$)t_ z?N8b}%)eiL_5)i7WKFw0lMlVaGc79b`(L0x&^1K+KU3rTKM(Rz@mr|=^Y!bi5&r)u z#(sr7tc`TPS75&V@5k65-4Mo)*S}tmu)ps<(e-DPJnW1#*8R`^%g^q*y|1XeE>~vG zR;awyQ#)btx8oxr9~HmeMy>zKDCPeq_D$aOem};3o!XyZhIDK42A>vV|5ml%pp0T) zrX(hB_HS4Fe*fDOlYhVbUWxI4b&R~(H~;??mjPQRD9JTyg{2OBY-=y~a>rX%aD`NcLqVhh!*|+#FgM5_# zSE>I6$|&_m-hVTB^M9S%_v0VP%K}KaJj_YHKaZ%qAOC!nH#?@p?A!5!kdN~J>4^Bt z^WP?KdWY{DU4JUnzTO5gb3uM)FWgz6^1lBo`sx2X$Vd5K(A2m7kBIR9<{1CisC_JN zGb^uZ@WRs0jbBjIlpK?N2a6y7ld^i?P2&?Kh~Lv_E-&(c~>(&&1fT z>!WtL=I8(T82f9~e!j-fHYRV! zi(~AMO7(4jqa*C!ZT3x}Zr7{*t32FqPq&+WkMAh8pAVaor2OUmNAusx|1q`i_rE<; zR8TjemLSNt9o>$f7~TGQi~WG&&9|Ww1)PFcmuF6zXvAh!s*AqVp%9(q1Qj=zb{{>@;e%X zZabHU@_HLEbJp^2+popQ_pS)#t-hE7X={>fyC_C}MU1@Zv+ap0?`1Ps{XX)c7eUYi zdDs38&~4BBu;N+yOZ}H60kdoPnP%Usr)Txk{%W)D$*+#EKOw^Y^=iMs^M8%n$MSGa z3QHxdGjif~mCs?q!L=&y<0fzTLy+GF2cG-EdX@M6viO<&%WB`3-=gxpc)o^{FaHAM zqsnis#;;)8P+H3GfQa}>etg>^(Ro&w(;lo3OOoY)^RPAhR{o;iuY1D(w7eLCbQ`WO ZIE82yk?Vsf`Ar?6SBXhkUfJ{I{}0~1dcyz! diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o.d b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o.d deleted file mode 100644 index 4d3926e..0000000 --- a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o.d +++ /dev/null @@ -1,357 +0,0 @@ -CMakeFiles/LearningVulkan.dir/src/private/VulkanCommandBuffers.cpp.o: \ - /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanCommandBuffers.cpp \ - /usr/include/stdc-predef.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /usr/include/glm/glm.hpp /usr/include/glm/detail/_fixes.hpp \ - /usr/include/c++/15.2.1/cmath \ - /usr/include/c++/15.2.1/bits/requires_hosted.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/os_defines.h \ - /usr/include/features.h /usr/include/features-time64.h \ - /usr/include/bits/wordsize.h /usr/include/bits/timesize.h \ - /usr/include/sys/cdefs.h /usr/include/bits/long-double.h \ - /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/cpu_defines.h \ - /usr/include/c++/15.2.1/pstl/pstl_config.h \ - /usr/include/c++/15.2.1/bits/cpp_type_traits.h \ - /usr/include/c++/15.2.1/bits/version.h \ - /usr/include/c++/15.2.1/type_traits \ - /usr/include/c++/15.2.1/ext/type_traits.h /usr/include/math.h \ - /usr/include/bits/libc-header-start.h /usr/include/bits/math-vector.h \ - /usr/include/bits/libm-simd-decl-stubs.h /usr/include/bits/floatn.h \ - /usr/include/bits/floatn-common.h /usr/include/bits/flt-eval-method.h \ - /usr/include/bits/fp-logb.h /usr/include/bits/fp-fast.h \ - /usr/include/bits/mathcalls-macros.h \ - /usr/include/bits/mathcalls-helper-functions.h \ - /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ - /usr/include/bits/iscanonical.h /usr/include/c++/15.2.1/bits/std_abs.h \ - /usr/include/stdlib.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ - /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ - /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ - /usr/include/sys/types.h /usr/include/bits/types.h \ - /usr/include/bits/typesizes.h /usr/include/bits/time64.h \ - /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ - /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ - /usr/include/bits/stdint-intn.h /usr/include/endian.h \ - /usr/include/bits/endian.h /usr/include/bits/endianness.h \ - /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ - /usr/include/sys/select.h /usr/include/bits/select.h \ - /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ - /usr/include/bits/types/struct_timeval.h \ - /usr/include/bits/types/struct_timespec.h \ - /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ - /usr/include/bits/pthreadtypes-arch.h \ - /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ - /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ - /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ - /usr/include/c++/15.2.1/bits/specfun.h \ - /usr/include/c++/15.2.1/bits/stl_algobase.h \ - /usr/include/c++/15.2.1/bits/functexcept.h \ - /usr/include/c++/15.2.1/bits/exception_defines.h \ - /usr/include/c++/15.2.1/ext/numeric_traits.h \ - /usr/include/c++/15.2.1/bits/stl_pair.h \ - /usr/include/c++/15.2.1/bits/move.h \ - /usr/include/c++/15.2.1/bits/utility.h /usr/include/c++/15.2.1/compare \ - /usr/include/c++/15.2.1/concepts \ - /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h \ - /usr/include/c++/15.2.1/bits/iterator_concepts.h \ - /usr/include/c++/15.2.1/bits/ptr_traits.h \ - /usr/include/c++/15.2.1/bits/ranges_cmp.h \ - /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/15.2.1/bits/concept_check.h \ - /usr/include/c++/15.2.1/debug/assertions.h \ - /usr/include/c++/15.2.1/bits/stl_iterator.h /usr/include/c++/15.2.1/new \ - /usr/include/c++/15.2.1/bits/exception.h \ - /usr/include/c++/15.2.1/bits/stl_construct.h \ - /usr/include/c++/15.2.1/debug/debug.h \ - /usr/include/c++/15.2.1/bits/predefined_ops.h \ - /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/limits \ - /usr/include/c++/15.2.1/tr1/gamma.tcc \ - /usr/include/c++/15.2.1/tr1/special_function_util.h \ - /usr/include/c++/15.2.1/tr1/bessel_function.tcc \ - /usr/include/c++/15.2.1/tr1/beta_function.tcc \ - /usr/include/c++/15.2.1/tr1/ell_integral.tcc \ - /usr/include/c++/15.2.1/tr1/exp_integral.tcc \ - /usr/include/c++/15.2.1/tr1/hypergeometric.tcc \ - /usr/include/c++/15.2.1/tr1/legendre_function.tcc \ - /usr/include/c++/15.2.1/tr1/modified_bessel_func.tcc \ - /usr/include/c++/15.2.1/tr1/poly_hermite.tcc \ - /usr/include/c++/15.2.1/tr1/poly_laguerre.tcc \ - /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc \ - /usr/include/glm/detail/setup.hpp /usr/include/c++/15.2.1/cassert \ - /usr/include/assert.h /usr/include/c++/15.2.1/cstddef \ - /usr/include/glm/simd/platform.h /usr/include/c++/15.2.1/cstdint \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ - /usr/include/stdint.h /usr/include/bits/wchar.h \ - /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \ - /usr/include/c++/15.2.1/climits \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/pthread_stack_min-dynamic.h \ - /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ - /usr/include/bits/uio_lim.h /usr/include/c++/15.2.1/cfloat \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h \ - /usr/include/glm/fwd.hpp /usr/include/glm/detail/qualifier.hpp \ - /usr/include/glm/detail/setup.hpp /usr/include/glm/vec2.hpp \ - /usr/include/glm/ext/vector_bool2.hpp \ - /usr/include/glm/detail/type_vec2.hpp \ - /usr/include/glm/detail/type_vec2.inl \ - /usr/include/glm/detail/compute_vector_relational.hpp \ - /usr/include/glm/ext/vector_bool2_precision.hpp \ - /usr/include/glm/ext/vector_float2.hpp \ - /usr/include/glm/ext/vector_float2_precision.hpp \ - /usr/include/glm/ext/vector_double2.hpp \ - /usr/include/glm/ext/vector_double2_precision.hpp \ - /usr/include/glm/ext/vector_int2.hpp \ - /usr/include/glm/ext/vector_int2_sized.hpp \ - /usr/include/glm/ext/scalar_int_sized.hpp \ - /usr/include/glm/detail/setup.hpp /usr/include/glm/ext/vector_uint2.hpp \ - /usr/include/glm/ext/vector_uint2_sized.hpp \ - /usr/include/glm/ext/scalar_uint_sized.hpp /usr/include/glm/vec3.hpp \ - /usr/include/glm/ext/vector_bool3.hpp \ - /usr/include/glm/detail/type_vec3.hpp \ - /usr/include/glm/detail/type_vec3.inl \ - /usr/include/glm/detail/compute_vector_decl.hpp \ - /usr/include/c++/15.2.1/functional \ - /usr/include/c++/15.2.1/bits/stl_function.h \ - /usr/include/c++/15.2.1/backward/binders.h /usr/include/c++/15.2.1/tuple \ - /usr/include/c++/15.2.1/bits/uses_allocator.h \ - /usr/include/c++/15.2.1/bits/invoke.h \ - /usr/include/c++/15.2.1/bits/ranges_util.h \ - /usr/include/c++/15.2.1/bits/ranges_base.h \ - /usr/include/c++/15.2.1/initializer_list \ - /usr/include/c++/15.2.1/bits/max_size_type.h \ - /usr/include/c++/15.2.1/numbers \ - /usr/include/c++/15.2.1/bits/functional_hash.h \ - /usr/include/c++/15.2.1/bits/hash_bytes.h \ - /usr/include/c++/15.2.1/bits/refwrap.h \ - /usr/include/c++/15.2.1/bits/std_function.h \ - /usr/include/c++/15.2.1/typeinfo /usr/include/c++/15.2.1/unordered_map \ - /usr/include/c++/15.2.1/bits/unordered_map.h \ - /usr/include/c++/15.2.1/bits/hashtable.h \ - /usr/include/c++/15.2.1/bits/hashtable_policy.h \ - /usr/include/c++/15.2.1/ext/aligned_buffer.h \ - /usr/include/c++/15.2.1/ext/alloc_traits.h \ - /usr/include/c++/15.2.1/bits/alloc_traits.h \ - /usr/include/c++/15.2.1/bits/memoryfwd.h \ - /usr/include/c++/15.2.1/bits/allocator.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h \ - /usr/include/c++/15.2.1/bits/new_allocator.h \ - /usr/include/c++/15.2.1/bits/enable_special_members.h \ - /usr/include/c++/15.2.1/bits/node_handle.h \ - /usr/include/c++/15.2.1/bits/range_access.h \ - /usr/include/c++/15.2.1/bits/erase_if.h \ - /usr/include/c++/15.2.1/bits/memory_resource.h \ - /usr/include/c++/15.2.1/bits/uses_allocator_args.h \ - /usr/include/c++/15.2.1/vector \ - /usr/include/c++/15.2.1/bits/stl_uninitialized.h \ - /usr/include/c++/15.2.1/bits/stl_vector.h \ - /usr/include/c++/15.2.1/bits/stl_bvector.h \ - /usr/include/c++/15.2.1/bits/vector.tcc /usr/include/c++/15.2.1/array \ - /usr/include/glm/detail/_vectorize.hpp \ - /usr/include/glm/ext/vector_bool3_precision.hpp \ - /usr/include/glm/ext/vector_float3.hpp \ - /usr/include/glm/ext/vector_float3_precision.hpp \ - /usr/include/glm/ext/vector_double3.hpp \ - /usr/include/glm/ext/vector_double3_precision.hpp \ - /usr/include/glm/ext/vector_int3.hpp \ - /usr/include/glm/ext/vector_int3_sized.hpp \ - /usr/include/glm/ext/vector_uint3.hpp \ - /usr/include/glm/ext/vector_uint3_sized.hpp /usr/include/glm/vec4.hpp \ - /usr/include/glm/ext/vector_bool4.hpp \ - /usr/include/glm/detail/type_vec4.hpp \ - /usr/include/glm/detail/type_vec4.inl \ - /usr/include/glm/ext/vector_bool4_precision.hpp \ - /usr/include/glm/ext/vector_float4.hpp \ - /usr/include/glm/ext/vector_float4_precision.hpp \ - /usr/include/glm/ext/vector_double4.hpp \ - /usr/include/glm/ext/vector_double4_precision.hpp \ - /usr/include/glm/ext/vector_int4.hpp \ - /usr/include/glm/ext/vector_int4_sized.hpp \ - /usr/include/glm/ext/vector_uint4.hpp \ - /usr/include/glm/ext/vector_uint4_sized.hpp /usr/include/glm/mat2x2.hpp \ - /usr/include/glm/ext/matrix_double2x2.hpp \ - /usr/include/glm/detail/type_mat2x2.hpp \ - /usr/include/glm/detail/type_mat2x2.inl /usr/include/glm/matrix.hpp \ - /usr/include/glm/mat2x3.hpp /usr/include/glm/ext/matrix_double2x3.hpp \ - /usr/include/glm/detail/type_mat2x3.hpp \ - /usr/include/glm/detail/type_mat2x3.inl \ - /usr/include/glm/ext/matrix_double2x3_precision.hpp \ - /usr/include/glm/ext/matrix_float2x3.hpp \ - /usr/include/glm/ext/matrix_float2x3_precision.hpp \ - /usr/include/glm/mat2x4.hpp /usr/include/glm/ext/matrix_double2x4.hpp \ - /usr/include/glm/detail/type_mat2x4.hpp \ - /usr/include/glm/detail/type_mat2x4.inl \ - /usr/include/glm/ext/matrix_double2x4_precision.hpp \ - /usr/include/glm/ext/matrix_float2x4.hpp \ - /usr/include/glm/ext/matrix_float2x4_precision.hpp \ - /usr/include/glm/mat3x2.hpp /usr/include/glm/ext/matrix_double3x2.hpp \ - /usr/include/glm/detail/type_mat3x2.hpp \ - /usr/include/glm/detail/type_mat3x2.inl \ - /usr/include/glm/ext/matrix_double3x2_precision.hpp \ - /usr/include/glm/ext/matrix_float3x2.hpp \ - /usr/include/glm/ext/matrix_float3x2_precision.hpp \ - /usr/include/glm/mat3x3.hpp /usr/include/glm/ext/matrix_double3x3.hpp \ - /usr/include/glm/detail/type_mat3x3.hpp \ - /usr/include/glm/detail/type_mat3x3.inl /usr/include/glm/common.hpp \ - /usr/include/glm/detail/func_common.inl \ - /usr/include/glm/vector_relational.hpp \ - /usr/include/glm/detail/func_vector_relational.inl \ - /usr/include/glm/detail/compute_common.hpp \ - /usr/include/glm/detail/type_vec1.hpp \ - /usr/include/glm/detail/type_vec1.inl \ - /usr/include/glm/ext/matrix_double3x3_precision.hpp \ - /usr/include/glm/ext/matrix_float3x3.hpp \ - /usr/include/glm/ext/matrix_float3x3_precision.hpp \ - /usr/include/glm/mat3x4.hpp /usr/include/glm/ext/matrix_double3x4.hpp \ - /usr/include/glm/detail/type_mat3x4.hpp \ - /usr/include/glm/detail/type_mat3x4.inl \ - /usr/include/glm/ext/matrix_double3x4_precision.hpp \ - /usr/include/glm/ext/matrix_float3x4.hpp \ - /usr/include/glm/ext/matrix_float3x4_precision.hpp \ - /usr/include/glm/mat4x2.hpp /usr/include/glm/ext/matrix_double4x2.hpp \ - /usr/include/glm/detail/type_mat4x2.hpp \ - /usr/include/glm/detail/type_mat4x2.inl \ - /usr/include/glm/ext/matrix_double4x2_precision.hpp \ - /usr/include/glm/ext/matrix_float4x2.hpp \ - /usr/include/glm/ext/matrix_float4x2_precision.hpp \ - /usr/include/glm/mat4x3.hpp /usr/include/glm/ext/matrix_double4x3.hpp \ - /usr/include/glm/detail/type_mat4x3.hpp \ - /usr/include/glm/detail/type_mat4x3.inl \ - /usr/include/glm/ext/matrix_double4x3_precision.hpp \ - /usr/include/glm/ext/matrix_float4x3.hpp \ - /usr/include/glm/ext/matrix_float4x3_precision.hpp \ - /usr/include/glm/mat4x4.hpp /usr/include/glm/ext/matrix_double4x4.hpp \ - /usr/include/glm/detail/type_mat4x4.hpp \ - /usr/include/glm/detail/type_mat4x4.inl /usr/include/glm/geometric.hpp \ - /usr/include/glm/detail/func_geometric.inl \ - /usr/include/glm/exponential.hpp \ - /usr/include/glm/detail/func_exponential.inl \ - /usr/include/glm/ext/matrix_double4x4_precision.hpp \ - /usr/include/glm/ext/matrix_float4x4.hpp \ - /usr/include/glm/ext/matrix_float4x4_precision.hpp \ - /usr/include/glm/detail/func_matrix.inl \ - /usr/include/glm/ext/matrix_double2x2_precision.hpp \ - /usr/include/glm/ext/matrix_float2x2.hpp \ - /usr/include/glm/ext/matrix_float2x2_precision.hpp \ - /usr/include/glm/trigonometric.hpp \ - /usr/include/glm/detail/func_trigonometric.inl \ - /usr/include/glm/packing.hpp /usr/include/glm/detail/func_packing.inl \ - /usr/include/glm/detail/type_half.hpp \ - /usr/include/glm/detail/type_half.inl /usr/include/glm/integer.hpp \ - /usr/include/glm/detail/func_integer.inl \ - /usr/include/vulkan/vulkan_core.h /usr/include/vulkan/vk_platform.h \ - /usr/include/vk_video/vulkan_video_codec_h264std.h \ - /usr/include/vk_video/vulkan_video_codecs_common.h \ - /usr/include/vk_video/vulkan_video_codec_h264std_encode.h \ - /usr/include/vk_video/vulkan_video_codec_h264std.h \ - /usr/include/vk_video/vulkan_video_codec_h265std.h \ - /usr/include/vk_video/vulkan_video_codec_h265std_encode.h \ - /usr/include/vk_video/vulkan_video_codec_h265std.h \ - /usr/include/vk_video/vulkan_video_codec_h264std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_h265std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_av1std.h \ - /usr/include/vk_video/vulkan_video_codec_av1std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_av1std.h \ - /usr/include/vk_video/vulkan_video_codec_av1std_encode.h \ - /usr/include/vk_video/vulkan_video_codec_vp9std.h \ - /usr/include/vk_video/vulkan_video_codec_vp9std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_vp9std.h \ - /usr/include/GLFW/glfw3.h /usr/include/vulkan/vulkan.h \ - /usr/include/vulkan/vulkan_core.h /usr/include/GL/gl.h \ - /usr/include/GL/glext.h /usr/include/KHR/khrplatform.h \ - /usr/include/c++/15.2.1/optional /usr/include/c++/15.2.1/exception \ - /usr/include/c++/15.2.1/bits/exception_ptr.h \ - /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ - /usr/include/c++/15.2.1/bits/nested_exception.h \ - /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.h \ - /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imconfig.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ - /usr/include/string.h /usr/include/strings.h \ - /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends/imgui_impl_vulkan.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ - /usr/include/c++/15.2.1/string /usr/include/c++/15.2.1/bits/stringfwd.h \ - /usr/include/c++/15.2.1/bits/char_traits.h \ - /usr/include/c++/15.2.1/bits/postypes.h /usr/include/c++/15.2.1/cwchar \ - /usr/include/wchar.h /usr/include/bits/types/wint_t.h \ - /usr/include/bits/types/mbstate_t.h \ - /usr/include/bits/types/__mbstate_t.h /usr/include/bits/types/__FILE.h \ - /usr/include/bits/types/FILE.h /usr/include/c++/15.2.1/bits/localefwd.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++locale.h \ - /usr/include/c++/15.2.1/clocale /usr/include/locale.h \ - /usr/include/bits/locale.h /usr/include/c++/15.2.1/iosfwd \ - /usr/include/c++/15.2.1/cctype /usr/include/ctype.h \ - /usr/include/c++/15.2.1/bits/ostream_insert.h \ - /usr/include/c++/15.2.1/bits/cxxabi_forced.h \ - /usr/include/c++/15.2.1/bits/basic_string.h \ - /usr/include/c++/15.2.1/string_view \ - /usr/include/c++/15.2.1/bits/string_view.tcc \ - /usr/include/c++/15.2.1/ext/string_conversions.h \ - /usr/include/c++/15.2.1/cstdlib /usr/include/c++/15.2.1/cstdio \ - /usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \ - /usr/include/bits/types/__fpos64_t.h \ - /usr/include/bits/types/struct_FILE.h \ - /usr/include/bits/types/cookie_io_functions_t.h \ - /usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \ - /usr/include/c++/15.2.1/cerrno /usr/include/errno.h \ - /usr/include/bits/errno.h /usr/include/linux/errno.h \ - /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ - /usr/include/asm-generic/errno-base.h /usr/include/bits/types/error_t.h \ - /usr/include/c++/15.2.1/bits/charconv.h \ - /usr/include/c++/15.2.1/bits/basic_string.tcc \ - /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/format \ - /usr/include/c++/15.2.1/charconv \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/error_constants.h \ - /usr/include/c++/15.2.1/locale \ - /usr/include/c++/15.2.1/bits/locale_classes.h \ - /usr/include/c++/15.2.1/ext/atomicity.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \ - /usr/include/linux/sched/types.h /usr/include/linux/types.h \ - /usr/include/asm/types.h /usr/include/asm-generic/types.h \ - /usr/include/asm-generic/int-ll64.h /usr/include/asm/bitsperlong.h \ - /usr/include/asm-generic/bitsperlong.h /usr/include/linux/posix_types.h \ - /usr/include/linux/stddef.h /usr/include/asm/posix_types.h \ - /usr/include/asm/posix_types_64.h /usr/include/asm-generic/posix_types.h \ - /usr/include/bits/types/struct_sched_param.h /usr/include/bits/cpu-set.h \ - /usr/include/time.h /usr/include/bits/time.h /usr/include/bits/timex.h \ - /usr/include/bits/types/struct_tm.h \ - /usr/include/bits/types/struct_itimerspec.h /usr/include/bits/setjmp.h \ - /usr/include/bits/types/struct___jmp_buf_tag.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ - /usr/include/sys/single_threaded.h \ - /usr/include/c++/15.2.1/bits/locale_classes.tcc \ - /usr/include/c++/15.2.1/bits/locale_facets.h \ - /usr/include/c++/15.2.1/cwctype /usr/include/wctype.h \ - /usr/include/bits/wctype-wchar.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_base.h \ - /usr/include/c++/15.2.1/bits/ios_base.h \ - /usr/include/c++/15.2.1/system_error /usr/include/c++/15.2.1/stdexcept \ - /usr/include/c++/15.2.1/streambuf \ - /usr/include/c++/15.2.1/bits/streambuf.tcc \ - /usr/include/c++/15.2.1/bits/streambuf_iterator.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_inline.h \ - /usr/include/c++/15.2.1/bits/locale_facets.tcc \ - /usr/include/c++/15.2.1/bits/locale_facets_nonio.h \ - /usr/include/c++/15.2.1/ctime \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/messages_members.h \ - /usr/include/libintl.h /usr/include/c++/15.2.1/bits/codecvt.h \ - /usr/include/c++/15.2.1/bits/locale_facets_nonio.tcc \ - /usr/include/c++/15.2.1/bits/locale_conv.h /usr/include/c++/15.2.1/span \ - /usr/include/c++/15.2.1/bits/monostate.h \ - /usr/include/c++/15.2.1/bits/formatfwd.h \ - /usr/include/c++/15.2.1/bits/ranges_algobase.h \ - /usr/include/c++/15.2.1/bits/unicode.h \ - /usr/include/c++/15.2.1/bits/stl_algo.h \ - /usr/include/c++/15.2.1/bits/algorithmfwd.h \ - /usr/include/c++/15.2.1/bits/stl_heap.h \ - /usr/include/c++/15.2.1/bits/uniform_int_dist.h \ - /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ - /usr/include/c++/15.2.1/bits/unicode-data.h diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o index ef6af46dfbcdbfaf150b3e6471651a74b3496065..0c568fb999381a2e46b4478649d6fb40aae7cb0b 100644 GIT binary patch literal 224144 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 z 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 CHk`Wv diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o.d b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o.d index da31f55..8ef4dc7 100644 --- a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o.d +++ b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o.d @@ -1,13 +1,8 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: \ /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanContext.cpp \ /usr/include/stdc-predef.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /usr/include/glm/glm.hpp /usr/include/glm/detail/_fixes.hpp \ - /usr/include/c++/15.2.1/cmath \ - /usr/include/c++/15.2.1/bits/requires_hosted.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp \ + /usr/include/c++/15.2.1/cstdint \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/os_defines.h \ /usr/include/features.h /usr/include/features-time64.h \ @@ -16,60 +11,251 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: \ /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/cpu_defines.h \ /usr/include/c++/15.2.1/pstl/pstl_config.h \ - /usr/include/c++/15.2.1/bits/cpp_type_traits.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/libc-header-start.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdint-least.h /usr/include/c++/15.2.1/memory \ + /usr/include/c++/15.2.1/bits/memoryfwd.h \ + /usr/include/c++/15.2.1/bits/allocator.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/15.2.1/bits/new_allocator.h /usr/include/c++/15.2.1/new \ + /usr/include/c++/15.2.1/bits/exception.h \ /usr/include/c++/15.2.1/bits/version.h \ - /usr/include/c++/15.2.1/type_traits \ - /usr/include/c++/15.2.1/ext/type_traits.h /usr/include/math.h \ - /usr/include/bits/libc-header-start.h /usr/include/bits/math-vector.h \ - /usr/include/bits/libm-simd-decl-stubs.h /usr/include/bits/floatn.h \ - /usr/include/bits/floatn-common.h /usr/include/bits/flt-eval-method.h \ - /usr/include/bits/fp-logb.h /usr/include/bits/fp-fast.h \ - /usr/include/bits/mathcalls-macros.h \ - /usr/include/bits/mathcalls-helper-functions.h \ - /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ - /usr/include/bits/iscanonical.h /usr/include/c++/15.2.1/bits/std_abs.h \ - /usr/include/stdlib.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ - /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ - /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ - /usr/include/sys/types.h /usr/include/bits/types.h \ - /usr/include/bits/typesizes.h /usr/include/bits/time64.h \ - /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ - /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ - /usr/include/bits/stdint-intn.h /usr/include/endian.h \ - /usr/include/bits/endian.h /usr/include/bits/endianness.h \ - /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ - /usr/include/sys/select.h /usr/include/bits/select.h \ - /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ - /usr/include/bits/types/struct_timeval.h \ - /usr/include/bits/types/struct_timespec.h \ - /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ - /usr/include/bits/pthreadtypes-arch.h \ - /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ - /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ - /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ - /usr/include/c++/15.2.1/bits/specfun.h \ - /usr/include/c++/15.2.1/bits/stl_algobase.h \ /usr/include/c++/15.2.1/bits/functexcept.h \ /usr/include/c++/15.2.1/bits/exception_defines.h \ - /usr/include/c++/15.2.1/ext/numeric_traits.h \ - /usr/include/c++/15.2.1/bits/stl_pair.h \ - /usr/include/c++/15.2.1/bits/move.h \ - /usr/include/c++/15.2.1/bits/utility.h /usr/include/c++/15.2.1/compare \ - /usr/include/c++/15.2.1/concepts \ + /usr/include/c++/15.2.1/bits/move.h /usr/include/c++/15.2.1/type_traits \ + /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ + /usr/include/c++/15.2.1/bits/stl_construct.h \ /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h \ /usr/include/c++/15.2.1/bits/iterator_concepts.h \ + /usr/include/c++/15.2.1/concepts \ /usr/include/c++/15.2.1/bits/ptr_traits.h \ /usr/include/c++/15.2.1/bits/ranges_cmp.h \ /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h \ /usr/include/c++/15.2.1/bits/concept_check.h \ /usr/include/c++/15.2.1/debug/assertions.h \ - /usr/include/c++/15.2.1/bits/stl_iterator.h /usr/include/c++/15.2.1/new \ - /usr/include/c++/15.2.1/bits/exception.h \ - /usr/include/c++/15.2.1/bits/stl_construct.h \ + /usr/include/c++/15.2.1/bits/stl_pair.h \ + /usr/include/c++/15.2.1/bits/utility.h /usr/include/c++/15.2.1/compare \ + /usr/include/c++/15.2.1/ext/numeric_traits.h \ + /usr/include/c++/15.2.1/bits/cpp_type_traits.h \ + /usr/include/c++/15.2.1/ext/type_traits.h \ + /usr/include/c++/15.2.1/bits/stl_uninitialized.h \ + /usr/include/c++/15.2.1/bits/stl_algobase.h \ + /usr/include/c++/15.2.1/bits/stl_iterator.h \ /usr/include/c++/15.2.1/debug/debug.h \ /usr/include/c++/15.2.1/bits/predefined_ops.h \ - /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/limits \ + /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/ext/alloc_traits.h \ + /usr/include/c++/15.2.1/bits/alloc_traits.h \ + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h \ + /usr/include/c++/15.2.1/bits/align.h \ + /usr/include/c++/15.2.1/bits/uses_allocator.h \ + /usr/include/c++/15.2.1/bits/unique_ptr.h /usr/include/c++/15.2.1/tuple \ + /usr/include/c++/15.2.1/bits/invoke.h \ + /usr/include/c++/15.2.1/bits/ranges_util.h \ + /usr/include/c++/15.2.1/bits/ranges_base.h \ + /usr/include/c++/15.2.1/initializer_list \ + /usr/include/c++/15.2.1/bits/max_size_type.h \ + /usr/include/c++/15.2.1/numbers \ + /usr/include/c++/15.2.1/bits/stl_function.h \ + /usr/include/c++/15.2.1/backward/binders.h \ + /usr/include/c++/15.2.1/bits/functional_hash.h \ + /usr/include/c++/15.2.1/bits/hash_bytes.h \ + /usr/include/c++/15.2.1/bits/ostream.h \ + /usr/include/c++/15.2.1/bits/requires_hosted.h \ + /usr/include/c++/15.2.1/ios /usr/include/c++/15.2.1/iosfwd \ + /usr/include/c++/15.2.1/bits/stringfwd.h \ + /usr/include/c++/15.2.1/bits/postypes.h /usr/include/c++/15.2.1/cwchar \ + /usr/include/wchar.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ + /usr/include/bits/types/wint_t.h /usr/include/bits/types/mbstate_t.h \ + /usr/include/bits/types/__mbstate_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/__locale_t.h /usr/include/c++/15.2.1/exception \ + /usr/include/c++/15.2.1/bits/exception_ptr.h \ + /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ + /usr/include/c++/15.2.1/typeinfo \ + /usr/include/c++/15.2.1/bits/nested_exception.h \ + /usr/include/c++/15.2.1/bits/char_traits.h \ + /usr/include/c++/15.2.1/bits/localefwd.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++locale.h \ + /usr/include/c++/15.2.1/clocale /usr/include/locale.h \ + /usr/include/bits/locale.h /usr/include/c++/15.2.1/cctype \ + /usr/include/ctype.h /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h /usr/include/c++/15.2.1/bits/ios_base.h \ + /usr/include/c++/15.2.1/ext/atomicity.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/struct_timespec.h /usr/include/bits/sched.h \ + /usr/include/linux/sched/types.h /usr/include/linux/types.h \ + /usr/include/asm/types.h /usr/include/asm-generic/types.h \ + /usr/include/asm-generic/int-ll64.h /usr/include/asm/bitsperlong.h \ + /usr/include/asm-generic/bitsperlong.h /usr/include/linux/posix_types.h \ + /usr/include/linux/stddef.h /usr/include/asm/posix_types.h \ + /usr/include/asm/posix_types_64.h /usr/include/asm-generic/posix_types.h \ + /usr/include/bits/types/struct_sched_param.h /usr/include/bits/cpu-set.h \ + /usr/include/time.h /usr/include/bits/time.h /usr/include/bits/timex.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/struct_tm.h \ + /usr/include/bits/types/clockid_t.h /usr/include/bits/types/timer_t.h \ + /usr/include/bits/types/struct_itimerspec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/bits/setjmp.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct___jmp_buf_tag.h \ + /usr/include/bits/pthread_stack_min-dynamic.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ + /usr/include/sys/single_threaded.h \ + /usr/include/c++/15.2.1/bits/locale_classes.h \ + /usr/include/c++/15.2.1/string \ + /usr/include/c++/15.2.1/bits/ostream_insert.h \ + /usr/include/c++/15.2.1/bits/cxxabi_forced.h \ + /usr/include/c++/15.2.1/bits/refwrap.h \ + /usr/include/c++/15.2.1/bits/range_access.h \ + /usr/include/c++/15.2.1/bits/basic_string.h \ + /usr/include/c++/15.2.1/string_view \ + /usr/include/c++/15.2.1/bits/string_view.tcc \ + /usr/include/c++/15.2.1/ext/string_conversions.h \ + /usr/include/c++/15.2.1/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/c++/15.2.1/bits/std_abs.h /usr/include/c++/15.2.1/cstdio \ + /usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \ + /usr/include/bits/types/__fpos64_t.h \ + /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/types/cookie_io_functions_t.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \ + /usr/include/c++/15.2.1/cerrno /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h /usr/include/bits/types/error_t.h \ + /usr/include/c++/15.2.1/bits/charconv.h \ + /usr/include/c++/15.2.1/bits/basic_string.tcc \ + /usr/include/c++/15.2.1/bits/memory_resource.h \ + /usr/include/c++/15.2.1/cstddef \ + /usr/include/c++/15.2.1/bits/uses_allocator_args.h \ + /usr/include/c++/15.2.1/bits/locale_classes.tcc \ + /usr/include/c++/15.2.1/system_error \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/error_constants.h \ + /usr/include/c++/15.2.1/stdexcept /usr/include/c++/15.2.1/streambuf \ + /usr/include/c++/15.2.1/bits/streambuf.tcc \ + /usr/include/c++/15.2.1/bits/basic_ios.h \ + /usr/include/c++/15.2.1/bits/locale_facets.h \ + /usr/include/c++/15.2.1/cwctype /usr/include/wctype.h \ + /usr/include/bits/wctype-wchar.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_base.h \ + /usr/include/c++/15.2.1/bits/streambuf_iterator.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_inline.h \ + /usr/include/c++/15.2.1/bits/locale_facets.tcc \ + /usr/include/c++/15.2.1/bits/basic_ios.tcc \ + /usr/include/c++/15.2.1/bits/shared_ptr.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_base.h \ + /usr/include/c++/15.2.1/bits/allocated_ptr.h \ + /usr/include/c++/15.2.1/ext/aligned_buffer.h \ + /usr/include/c++/15.2.1/ext/concurrence.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h \ + /usr/include/c++/15.2.1/bits/atomic_base.h \ + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h \ + /usr/include/c++/15.2.1/bits/atomic_wait.h \ + /usr/include/c++/15.2.1/climits \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt_posix.h \ + /usr/include/bits/getopt_core.h /usr/include/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/sys/syscall.h /usr/include/asm/unistd.h \ + /usr/include/asm/unistd_64.h /usr/include/bits/syscall.h \ + /usr/include/c++/15.2.1/bits/std_mutex.h \ + /usr/include/c++/15.2.1/backward/auto_ptr.h \ + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h \ + /usr/include/c++/15.2.1/bits/ranges_algobase.h \ + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h \ + /usr/include/c++/15.2.1/pstl/execution_defs.h \ + /usr/include/c++/15.2.1/vector /usr/include/c++/15.2.1/bits/stl_vector.h \ + /usr/include/c++/15.2.1/bits/stl_bvector.h \ + /usr/include/c++/15.2.1/bits/vector.tcc \ + /usr/include/vulkan/vulkan_core.h /usr/include/vulkan/vk_platform.h \ + /usr/include/vk_video/vulkan_video_codec_h264std.h \ + /usr/include/vk_video/vulkan_video_codecs_common.h \ + /usr/include/vk_video/vulkan_video_codec_h264std_encode.h \ + /usr/include/vk_video/vulkan_video_codec_h264std.h \ + /usr/include/vk_video/vulkan_video_codec_h265std.h \ + /usr/include/vk_video/vulkan_video_codec_h265std_encode.h \ + /usr/include/vk_video/vulkan_video_codec_h265std.h \ + /usr/include/vk_video/vulkan_video_codec_h264std_decode.h \ + /usr/include/vk_video/vulkan_video_codec_h265std_decode.h \ + /usr/include/vk_video/vulkan_video_codec_av1std.h \ + /usr/include/vk_video/vulkan_video_codec_av1std_decode.h \ + /usr/include/vk_video/vulkan_video_codec_av1std.h \ + /usr/include/vk_video/vulkan_video_codec_av1std_encode.h \ + /usr/include/vk_video/vulkan_video_codec_vp9std.h \ + /usr/include/vk_video/vulkan_video_codec_vp9std_decode.h \ + /usr/include/vk_video/vulkan_video_codec_vp9std.h \ + /usr/include/GLFW/glfw3.h /usr/include/vulkan/vulkan.h \ + /usr/include/vulkan/vulkan_core.h /usr/include/GL/gl.h \ + /usr/include/GL/glext.h /usr/include/KHR/khrplatform.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanTexture.hpp \ + /usr/include/vulkan/vulkan.hpp /usr/include/vulkan/vulkan_hpp_macros.hpp \ + /usr/include/c++/15.2.1/version /usr/include/c++/15.2.1/algorithm \ + /usr/include/c++/15.2.1/bits/stl_algo.h \ + /usr/include/c++/15.2.1/bits/algorithmfwd.h \ + /usr/include/c++/15.2.1/bits/stl_heap.h \ + /usr/include/c++/15.2.1/bits/uniform_int_dist.h \ + /usr/include/c++/15.2.1/bits/ranges_algo.h \ + /usr/include/c++/15.2.1/pstl/glue_algorithm_defs.h \ + /usr/include/c++/15.2.1/array /usr/include/c++/15.2.1/cassert \ + /usr/include/assert.h /usr/include/string.h /usr/include/strings.h \ + /usr/include/c++/15.2.1/utility \ + /usr/include/c++/15.2.1/bits/stl_relops.h /usr/include/c++/15.2.1/span \ + /usr/include/dlfcn.h /usr/include/bits/dlfcn.h \ + /usr/include/bits/dl_find_object.h /usr/include/vulkan/vulkan_enums.hpp \ + /usr/include/vulkan/vulkan_to_string.hpp /usr/include/c++/15.2.1/format \ + /usr/include/c++/15.2.1/charconv /usr/include/c++/15.2.1/limits \ + /usr/include/c++/15.2.1/locale \ + /usr/include/c++/15.2.1/bits/locale_facets_nonio.h \ + /usr/include/c++/15.2.1/ctime \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/15.2.1/bits/codecvt.h \ + /usr/include/c++/15.2.1/bits/locale_facets_nonio.tcc \ + /usr/include/c++/15.2.1/bits/locale_conv.h \ + /usr/include/c++/15.2.1/optional \ + /usr/include/c++/15.2.1/bits/enable_special_members.h \ + /usr/include/c++/15.2.1/bits/monostate.h \ + /usr/include/c++/15.2.1/bits/formatfwd.h \ + /usr/include/c++/15.2.1/bits/unicode.h \ + /usr/include/c++/15.2.1/bits/unicode-data.h \ + /usr/include/vulkan/vulkan_handles.hpp \ + /usr/include/vulkan/vulkan_structs.hpp /usr/include/c++/15.2.1/cstring \ + /usr/include/vulkan/vulkan_funcs.hpp \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanBuffers.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Primitives.h \ + /usr/include/glm/fwd.hpp /usr/include/glm/detail/qualifier.hpp \ + /usr/include/glm/detail/setup.hpp /usr/include/glm/simd/platform.h \ + /usr/include/glm/glm.hpp /usr/include/glm/detail/_fixes.hpp \ + /usr/include/c++/15.2.1/cmath /usr/include/math.h \ + /usr/include/bits/math-vector.h /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h /usr/include/bits/mathcalls-macros.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ + /usr/include/bits/iscanonical.h /usr/include/c++/15.2.1/bits/specfun.h \ /usr/include/c++/15.2.1/tr1/gamma.tcc \ /usr/include/c++/15.2.1/tr1/special_function_util.h \ /usr/include/c++/15.2.1/tr1/bessel_function.tcc \ @@ -82,24 +268,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: \ /usr/include/c++/15.2.1/tr1/poly_hermite.tcc \ /usr/include/c++/15.2.1/tr1/poly_laguerre.tcc \ /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc \ - /usr/include/glm/detail/setup.hpp /usr/include/c++/15.2.1/cassert \ - /usr/include/assert.h /usr/include/c++/15.2.1/cstddef \ - /usr/include/glm/simd/platform.h /usr/include/c++/15.2.1/cstdint \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ - /usr/include/stdint.h /usr/include/bits/wchar.h \ - /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \ - /usr/include/c++/15.2.1/climits \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/pthread_stack_min-dynamic.h \ - /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ - /usr/include/bits/uio_lim.h /usr/include/c++/15.2.1/cfloat \ + /usr/include/glm/detail/setup.hpp /usr/include/c++/15.2.1/cfloat \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h \ - /usr/include/glm/fwd.hpp /usr/include/glm/detail/qualifier.hpp \ - /usr/include/glm/detail/setup.hpp /usr/include/glm/vec2.hpp \ - /usr/include/glm/ext/vector_bool2.hpp \ + /usr/include/glm/vec2.hpp /usr/include/glm/ext/vector_bool2.hpp \ /usr/include/glm/detail/type_vec2.hpp \ /usr/include/glm/detail/type_vec2.inl \ /usr/include/glm/detail/compute_vector_relational.hpp \ @@ -119,41 +290,13 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: \ /usr/include/glm/detail/type_vec3.inl \ /usr/include/glm/detail/compute_vector_decl.hpp \ /usr/include/c++/15.2.1/functional \ - /usr/include/c++/15.2.1/bits/stl_function.h \ - /usr/include/c++/15.2.1/backward/binders.h /usr/include/c++/15.2.1/tuple \ - /usr/include/c++/15.2.1/bits/uses_allocator.h \ - /usr/include/c++/15.2.1/bits/invoke.h \ - /usr/include/c++/15.2.1/bits/ranges_util.h \ - /usr/include/c++/15.2.1/bits/ranges_base.h \ - /usr/include/c++/15.2.1/initializer_list \ - /usr/include/c++/15.2.1/bits/max_size_type.h \ - /usr/include/c++/15.2.1/numbers \ - /usr/include/c++/15.2.1/bits/functional_hash.h \ - /usr/include/c++/15.2.1/bits/hash_bytes.h \ - /usr/include/c++/15.2.1/bits/refwrap.h \ /usr/include/c++/15.2.1/bits/std_function.h \ - /usr/include/c++/15.2.1/typeinfo /usr/include/c++/15.2.1/unordered_map \ + /usr/include/c++/15.2.1/unordered_map \ /usr/include/c++/15.2.1/bits/unordered_map.h \ /usr/include/c++/15.2.1/bits/hashtable.h \ /usr/include/c++/15.2.1/bits/hashtable_policy.h \ - /usr/include/c++/15.2.1/ext/aligned_buffer.h \ - /usr/include/c++/15.2.1/ext/alloc_traits.h \ - /usr/include/c++/15.2.1/bits/alloc_traits.h \ - /usr/include/c++/15.2.1/bits/memoryfwd.h \ - /usr/include/c++/15.2.1/bits/allocator.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h \ - /usr/include/c++/15.2.1/bits/new_allocator.h \ - /usr/include/c++/15.2.1/bits/enable_special_members.h \ /usr/include/c++/15.2.1/bits/node_handle.h \ - /usr/include/c++/15.2.1/bits/range_access.h \ /usr/include/c++/15.2.1/bits/erase_if.h \ - /usr/include/c++/15.2.1/bits/memory_resource.h \ - /usr/include/c++/15.2.1/bits/uses_allocator_args.h \ - /usr/include/c++/15.2.1/vector \ - /usr/include/c++/15.2.1/bits/stl_uninitialized.h \ - /usr/include/c++/15.2.1/bits/stl_vector.h \ - /usr/include/c++/15.2.1/bits/stl_bvector.h \ - /usr/include/c++/15.2.1/bits/vector.tcc /usr/include/c++/15.2.1/array \ /usr/include/glm/detail/_vectorize.hpp \ /usr/include/glm/ext/vector_bool3_precision.hpp \ /usr/include/glm/ext/vector_float3.hpp \ @@ -246,126 +389,28 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: \ /usr/include/glm/detail/type_half.hpp \ /usr/include/glm/detail/type_half.inl /usr/include/glm/integer.hpp \ /usr/include/glm/detail/func_integer.inl \ - /usr/include/vulkan/vulkan_core.h /usr/include/vulkan/vk_platform.h \ - /usr/include/vk_video/vulkan_video_codec_h264std.h \ - /usr/include/vk_video/vulkan_video_codecs_common.h \ - /usr/include/vk_video/vulkan_video_codec_h264std_encode.h \ - /usr/include/vk_video/vulkan_video_codec_h264std.h \ - /usr/include/vk_video/vulkan_video_codec_h265std.h \ - /usr/include/vk_video/vulkan_video_codec_h265std_encode.h \ - /usr/include/vk_video/vulkan_video_codec_h265std.h \ - /usr/include/vk_video/vulkan_video_codec_h264std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_h265std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_av1std.h \ - /usr/include/vk_video/vulkan_video_codec_av1std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_av1std.h \ - /usr/include/vk_video/vulkan_video_codec_av1std_encode.h \ - /usr/include/vk_video/vulkan_video_codec_vp9std.h \ - /usr/include/vk_video/vulkan_video_codec_vp9std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_vp9std.h \ - /usr/include/GLFW/glfw3.h /usr/include/vulkan/vulkan.h \ - /usr/include/vulkan/vulkan_core.h /usr/include/GL/gl.h \ - /usr/include/GL/glext.h /usr/include/KHR/khrplatform.h \ - /usr/include/c++/15.2.1/optional /usr/include/c++/15.2.1/exception \ - /usr/include/c++/15.2.1/bits/exception_ptr.h \ - /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ - /usr/include/c++/15.2.1/bits/nested_exception.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.hpp \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ - /usr/include/c++/15.2.1/string /usr/include/c++/15.2.1/bits/stringfwd.h \ - /usr/include/c++/15.2.1/bits/char_traits.h \ - /usr/include/c++/15.2.1/bits/postypes.h /usr/include/c++/15.2.1/cwchar \ - /usr/include/wchar.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ - /usr/include/bits/types/wint_t.h /usr/include/bits/types/mbstate_t.h \ - /usr/include/bits/types/__mbstate_t.h /usr/include/bits/types/__FILE.h \ - /usr/include/bits/types/FILE.h /usr/include/c++/15.2.1/bits/localefwd.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++locale.h \ - /usr/include/c++/15.2.1/clocale /usr/include/locale.h \ - /usr/include/bits/locale.h /usr/include/c++/15.2.1/iosfwd \ - /usr/include/c++/15.2.1/cctype /usr/include/ctype.h \ - /usr/include/c++/15.2.1/bits/ostream_insert.h \ - /usr/include/c++/15.2.1/bits/cxxabi_forced.h \ - /usr/include/c++/15.2.1/bits/basic_string.h \ - /usr/include/c++/15.2.1/string_view \ - /usr/include/c++/15.2.1/bits/string_view.tcc \ - /usr/include/c++/15.2.1/ext/string_conversions.h \ - /usr/include/c++/15.2.1/cstdlib /usr/include/c++/15.2.1/cstdio \ - /usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \ - /usr/include/bits/types/__fpos64_t.h \ - /usr/include/bits/types/struct_FILE.h \ - /usr/include/bits/types/cookie_io_functions_t.h \ - /usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \ - /usr/include/c++/15.2.1/cerrno /usr/include/errno.h \ - /usr/include/bits/errno.h /usr/include/linux/errno.h \ - /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ - /usr/include/asm-generic/errno-base.h /usr/include/bits/types/error_t.h \ - /usr/include/c++/15.2.1/bits/charconv.h \ - /usr/include/c++/15.2.1/bits/basic_string.tcc \ - /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/format \ - /usr/include/c++/15.2.1/charconv \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/error_constants.h \ - /usr/include/c++/15.2.1/locale \ - /usr/include/c++/15.2.1/bits/locale_classes.h \ - /usr/include/c++/15.2.1/ext/atomicity.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \ - /usr/include/linux/sched/types.h /usr/include/linux/types.h \ - /usr/include/asm/types.h /usr/include/asm-generic/types.h \ - /usr/include/asm-generic/int-ll64.h /usr/include/asm/bitsperlong.h \ - /usr/include/asm-generic/bitsperlong.h /usr/include/linux/posix_types.h \ - /usr/include/linux/stddef.h /usr/include/asm/posix_types.h \ - /usr/include/asm/posix_types_64.h /usr/include/asm-generic/posix_types.h \ - /usr/include/bits/types/struct_sched_param.h /usr/include/bits/cpu-set.h \ - /usr/include/time.h /usr/include/bits/time.h /usr/include/bits/timex.h \ - /usr/include/bits/types/struct_tm.h \ - /usr/include/bits/types/struct_itimerspec.h /usr/include/bits/setjmp.h \ - /usr/include/bits/types/struct___jmp_buf_tag.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ - /usr/include/sys/single_threaded.h \ - /usr/include/c++/15.2.1/bits/locale_classes.tcc \ - /usr/include/c++/15.2.1/bits/locale_facets.h \ - /usr/include/c++/15.2.1/cwctype /usr/include/wctype.h \ - /usr/include/bits/wctype-wchar.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_base.h \ - /usr/include/c++/15.2.1/bits/ios_base.h \ - /usr/include/c++/15.2.1/system_error /usr/include/c++/15.2.1/stdexcept \ - /usr/include/c++/15.2.1/streambuf \ - /usr/include/c++/15.2.1/bits/streambuf.tcc \ - /usr/include/c++/15.2.1/bits/streambuf_iterator.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_inline.h \ - /usr/include/c++/15.2.1/bits/locale_facets.tcc \ - /usr/include/c++/15.2.1/bits/locale_facets_nonio.h \ - /usr/include/c++/15.2.1/ctime \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/messages_members.h \ - /usr/include/libintl.h /usr/include/c++/15.2.1/bits/codecvt.h \ - /usr/include/c++/15.2.1/bits/locale_facets_nonio.tcc \ - /usr/include/c++/15.2.1/bits/locale_conv.h /usr/include/c++/15.2.1/span \ - /usr/include/c++/15.2.1/bits/monostate.h \ - /usr/include/c++/15.2.1/bits/formatfwd.h \ - /usr/include/c++/15.2.1/bits/ranges_algobase.h \ - /usr/include/c++/15.2.1/bits/unicode.h \ - /usr/include/c++/15.2.1/bits/stl_algo.h \ - /usr/include/c++/15.2.1/bits/algorithmfwd.h \ - /usr/include/c++/15.2.1/bits/stl_heap.h \ - /usr/include/c++/15.2.1/bits/uniform_int_dist.h \ - /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ - /usr/include/c++/15.2.1/bits/unicode-data.h \ - /home/Jordan/Projects/CPP/LearningVulkan/lib/stb/stb_image.h \ - /usr/include/c++/15.2.1/stdlib.h \ + /usr/include/c++/15.2.1/chrono /usr/include/c++/15.2.1/bits/chrono.h \ + /usr/include/c++/15.2.1/ratio \ + /usr/include/c++/15.2.1/bits/parse_numbers.h \ + /usr/include/c++/15.2.1/sstream /usr/include/c++/15.2.1/istream \ + /usr/include/c++/15.2.1/ostream /usr/include/c++/15.2.1/bits/ostream.tcc \ + /usr/include/c++/15.2.1/bits/istream.tcc \ + /usr/include/c++/15.2.1/bits/sstream.tcc \ + /usr/include/c++/15.2.1/bits/chrono_io.h /usr/include/c++/15.2.1/iomanip \ + /usr/include/c++/15.2.1/bits/quoted_string.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends/imgui_impl_glfw.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imgui.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/imconfig.h \ - /usr/include/string.h /usr/include/strings.h \ /home/Jordan/Projects/CPP/LearningVulkan/lib/imgui/backends/imgui_impl_vulkan.h \ + /home/Jordan/Projects/CPP/LearningVulkan/lib/stb/stb_image.h \ + /usr/include/c++/15.2.1/stdlib.h \ /usr/include/glm/ext/matrix_clip_space.hpp \ /usr/include/glm/ext/scalar_constants.hpp \ /usr/include/glm/ext/scalar_constants.inl \ @@ -376,21 +421,6 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanContext.cpp.o: \ /usr/include/glm/gtc/matrix_transform.hpp \ /usr/include/glm/ext/matrix_projection.hpp \ /usr/include/glm/ext/matrix_projection.inl \ - /usr/include/glm/gtc/matrix_transform.inl /usr/include/c++/15.2.1/chrono \ - /usr/include/c++/15.2.1/bits/chrono.h /usr/include/c++/15.2.1/ratio \ - /usr/include/c++/15.2.1/bits/parse_numbers.h \ - /usr/include/c++/15.2.1/sstream /usr/include/c++/15.2.1/istream \ - /usr/include/c++/15.2.1/ios /usr/include/c++/15.2.1/bits/basic_ios.h \ - /usr/include/c++/15.2.1/bits/basic_ios.tcc \ - /usr/include/c++/15.2.1/ostream /usr/include/c++/15.2.1/bits/ostream.h \ - /usr/include/c++/15.2.1/bits/ostream.tcc \ - /usr/include/c++/15.2.1/bits/istream.tcc \ - /usr/include/c++/15.2.1/bits/sstream.tcc \ - /usr/include/c++/15.2.1/bits/shared_ptr.h \ - /usr/include/c++/15.2.1/bits/shared_ptr_base.h \ - /usr/include/c++/15.2.1/bits/allocated_ptr.h \ - /usr/include/c++/15.2.1/bits/unique_ptr.h \ - /usr/include/c++/15.2.1/ext/concurrence.h \ - /usr/include/c++/15.2.1/bits/align.h \ - /usr/include/c++/15.2.1/bits/chrono_io.h /usr/include/c++/15.2.1/iomanip \ - /usr/include/c++/15.2.1/bits/quoted_string.h + /usr/include/glm/gtc/matrix_transform.inl \ + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ + /usr/include/c++/15.2.1/source_location diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDebugManager.cpp.o index fe09910c47a0fb6fb022de6b51c3fb767a5e1d33..faef1694d04fa0aa00330faf561abc1f63cd54e3 100644 GIT binary patch delta 30 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 delta 17429 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 Y)?<$pBb^uU{ScoV)}KMV$zd1#FN-MhtN;K2 diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o.d b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o.d index 22144c8..ba5916c 100644 --- a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o.d +++ b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o.d @@ -101,205 +101,72 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: \ /usr/include/c++/15.2.1/bits/erase_if.h /usr/include/c++/15.2.1/cstdint \ /usr/include/c++/15.2.1/set /usr/include/c++/15.2.1/bits/stl_set.h \ /usr/include/c++/15.2.1/bits/stl_multiset.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /usr/include/glm/glm.hpp /usr/include/glm/detail/_fixes.hpp \ - /usr/include/c++/15.2.1/cmath /usr/include/math.h \ - /usr/include/bits/math-vector.h /usr/include/bits/libm-simd-decl-stubs.h \ - /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \ - /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ - /usr/include/bits/fp-fast.h /usr/include/bits/mathcalls-macros.h \ - /usr/include/bits/mathcalls-helper-functions.h \ - /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ - /usr/include/bits/iscanonical.h /usr/include/c++/15.2.1/bits/std_abs.h \ - /usr/include/stdlib.h /usr/include/bits/waitflags.h \ - /usr/include/bits/waitstatus.h /usr/include/bits/types/locale_t.h \ - /usr/include/bits/types/__locale_t.h /usr/include/sys/types.h \ - /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ - /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ - /usr/include/endian.h /usr/include/bits/endian.h \ - /usr/include/bits/endianness.h /usr/include/bits/byteswap.h \ - /usr/include/bits/uintn-identity.h /usr/include/sys/select.h \ - /usr/include/bits/select.h /usr/include/bits/types/sigset_t.h \ - /usr/include/bits/types/__sigset_t.h \ - /usr/include/bits/types/struct_timeval.h \ - /usr/include/bits/types/struct_timespec.h \ - /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ - /usr/include/bits/pthreadtypes-arch.h \ - /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ - /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ - /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ - /usr/include/c++/15.2.1/bits/specfun.h /usr/include/c++/15.2.1/limits \ - /usr/include/c++/15.2.1/tr1/gamma.tcc \ - /usr/include/c++/15.2.1/tr1/special_function_util.h \ - /usr/include/c++/15.2.1/tr1/bessel_function.tcc \ - /usr/include/c++/15.2.1/tr1/beta_function.tcc \ - /usr/include/c++/15.2.1/tr1/ell_integral.tcc \ - /usr/include/c++/15.2.1/tr1/exp_integral.tcc \ - /usr/include/c++/15.2.1/tr1/hypergeometric.tcc \ - /usr/include/c++/15.2.1/tr1/legendre_function.tcc \ - /usr/include/c++/15.2.1/tr1/modified_bessel_func.tcc \ - /usr/include/c++/15.2.1/tr1/poly_hermite.tcc \ - /usr/include/c++/15.2.1/tr1/poly_laguerre.tcc \ - /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc \ - /usr/include/glm/detail/setup.hpp /usr/include/c++/15.2.1/cassert \ - /usr/include/assert.h /usr/include/glm/simd/platform.h \ - /usr/include/c++/15.2.1/climits \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/pthread_stack_min-dynamic.h \ - /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ - /usr/include/bits/uio_lim.h /usr/include/c++/15.2.1/cfloat \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h \ - /usr/include/glm/fwd.hpp /usr/include/glm/detail/qualifier.hpp \ - /usr/include/glm/detail/setup.hpp /usr/include/glm/vec2.hpp \ - /usr/include/glm/ext/vector_bool2.hpp \ - /usr/include/glm/detail/type_vec2.hpp \ - /usr/include/glm/detail/type_vec2.inl \ - /usr/include/glm/detail/compute_vector_relational.hpp \ - /usr/include/glm/ext/vector_bool2_precision.hpp \ - /usr/include/glm/ext/vector_float2.hpp \ - /usr/include/glm/ext/vector_float2_precision.hpp \ - /usr/include/glm/ext/vector_double2.hpp \ - /usr/include/glm/ext/vector_double2_precision.hpp \ - /usr/include/glm/ext/vector_int2.hpp \ - /usr/include/glm/ext/vector_int2_sized.hpp \ - /usr/include/glm/ext/scalar_int_sized.hpp \ - /usr/include/glm/detail/setup.hpp /usr/include/glm/ext/vector_uint2.hpp \ - /usr/include/glm/ext/vector_uint2_sized.hpp \ - /usr/include/glm/ext/scalar_uint_sized.hpp /usr/include/glm/vec3.hpp \ - /usr/include/glm/ext/vector_bool3.hpp \ - /usr/include/glm/detail/type_vec3.hpp \ - /usr/include/glm/detail/type_vec3.inl \ - /usr/include/glm/detail/compute_vector_decl.hpp \ - /usr/include/c++/15.2.1/functional \ - /usr/include/c++/15.2.1/bits/std_function.h \ - /usr/include/c++/15.2.1/unordered_map \ - /usr/include/c++/15.2.1/bits/unordered_map.h \ - /usr/include/c++/15.2.1/bits/hashtable.h \ - /usr/include/c++/15.2.1/bits/hashtable_policy.h \ - /usr/include/c++/15.2.1/array /usr/include/glm/detail/_vectorize.hpp \ - /usr/include/glm/ext/vector_bool3_precision.hpp \ - /usr/include/glm/ext/vector_float3.hpp \ - /usr/include/glm/ext/vector_float3_precision.hpp \ - /usr/include/glm/ext/vector_double3.hpp \ - /usr/include/glm/ext/vector_double3_precision.hpp \ - /usr/include/glm/ext/vector_int3.hpp \ - /usr/include/glm/ext/vector_int3_sized.hpp \ - /usr/include/glm/ext/vector_uint3.hpp \ - /usr/include/glm/ext/vector_uint3_sized.hpp /usr/include/glm/vec4.hpp \ - /usr/include/glm/ext/vector_bool4.hpp \ - /usr/include/glm/detail/type_vec4.hpp \ - /usr/include/glm/detail/type_vec4.inl \ - /usr/include/glm/ext/vector_bool4_precision.hpp \ - /usr/include/glm/ext/vector_float4.hpp \ - /usr/include/glm/ext/vector_float4_precision.hpp \ - /usr/include/glm/ext/vector_double4.hpp \ - /usr/include/glm/ext/vector_double4_precision.hpp \ - /usr/include/glm/ext/vector_int4.hpp \ - /usr/include/glm/ext/vector_int4_sized.hpp \ - /usr/include/glm/ext/vector_uint4.hpp \ - /usr/include/glm/ext/vector_uint4_sized.hpp /usr/include/glm/mat2x2.hpp \ - /usr/include/glm/ext/matrix_double2x2.hpp \ - /usr/include/glm/detail/type_mat2x2.hpp \ - /usr/include/glm/detail/type_mat2x2.inl /usr/include/glm/matrix.hpp \ - /usr/include/glm/mat2x3.hpp /usr/include/glm/ext/matrix_double2x3.hpp \ - /usr/include/glm/detail/type_mat2x3.hpp \ - /usr/include/glm/detail/type_mat2x3.inl \ - /usr/include/glm/ext/matrix_double2x3_precision.hpp \ - /usr/include/glm/ext/matrix_float2x3.hpp \ - /usr/include/glm/ext/matrix_float2x3_precision.hpp \ - /usr/include/glm/mat2x4.hpp /usr/include/glm/ext/matrix_double2x4.hpp \ - /usr/include/glm/detail/type_mat2x4.hpp \ - /usr/include/glm/detail/type_mat2x4.inl \ - /usr/include/glm/ext/matrix_double2x4_precision.hpp \ - /usr/include/glm/ext/matrix_float2x4.hpp \ - /usr/include/glm/ext/matrix_float2x4_precision.hpp \ - /usr/include/glm/mat3x2.hpp /usr/include/glm/ext/matrix_double3x2.hpp \ - /usr/include/glm/detail/type_mat3x2.hpp \ - /usr/include/glm/detail/type_mat3x2.inl \ - /usr/include/glm/ext/matrix_double3x2_precision.hpp \ - /usr/include/glm/ext/matrix_float3x2.hpp \ - /usr/include/glm/ext/matrix_float3x2_precision.hpp \ - /usr/include/glm/mat3x3.hpp /usr/include/glm/ext/matrix_double3x3.hpp \ - /usr/include/glm/detail/type_mat3x3.hpp \ - /usr/include/glm/detail/type_mat3x3.inl /usr/include/glm/common.hpp \ - /usr/include/glm/detail/func_common.inl \ - /usr/include/glm/vector_relational.hpp \ - /usr/include/glm/detail/func_vector_relational.inl \ - /usr/include/glm/detail/compute_common.hpp \ - /usr/include/glm/detail/type_vec1.hpp \ - /usr/include/glm/detail/type_vec1.inl \ - /usr/include/glm/ext/matrix_double3x3_precision.hpp \ - /usr/include/glm/ext/matrix_float3x3.hpp \ - /usr/include/glm/ext/matrix_float3x3_precision.hpp \ - /usr/include/glm/mat3x4.hpp /usr/include/glm/ext/matrix_double3x4.hpp \ - /usr/include/glm/detail/type_mat3x4.hpp \ - /usr/include/glm/detail/type_mat3x4.inl \ - /usr/include/glm/ext/matrix_double3x4_precision.hpp \ - /usr/include/glm/ext/matrix_float3x4.hpp \ - /usr/include/glm/ext/matrix_float3x4_precision.hpp \ - /usr/include/glm/mat4x2.hpp /usr/include/glm/ext/matrix_double4x2.hpp \ - /usr/include/glm/detail/type_mat4x2.hpp \ - /usr/include/glm/detail/type_mat4x2.inl \ - /usr/include/glm/ext/matrix_double4x2_precision.hpp \ - /usr/include/glm/ext/matrix_float4x2.hpp \ - /usr/include/glm/ext/matrix_float4x2_precision.hpp \ - /usr/include/glm/mat4x3.hpp /usr/include/glm/ext/matrix_double4x3.hpp \ - /usr/include/glm/detail/type_mat4x3.hpp \ - /usr/include/glm/detail/type_mat4x3.inl \ - /usr/include/glm/ext/matrix_double4x3_precision.hpp \ - /usr/include/glm/ext/matrix_float4x3.hpp \ - /usr/include/glm/ext/matrix_float4x3_precision.hpp \ - /usr/include/glm/mat4x4.hpp /usr/include/glm/ext/matrix_double4x4.hpp \ - /usr/include/glm/detail/type_mat4x4.hpp \ - /usr/include/glm/detail/type_mat4x4.inl /usr/include/glm/geometric.hpp \ - /usr/include/glm/detail/func_geometric.inl \ - /usr/include/glm/exponential.hpp \ - /usr/include/glm/detail/func_exponential.inl \ - /usr/include/glm/ext/matrix_double4x4_precision.hpp \ - /usr/include/glm/ext/matrix_float4x4.hpp \ - /usr/include/glm/ext/matrix_float4x4_precision.hpp \ - /usr/include/glm/detail/func_matrix.inl \ - /usr/include/glm/ext/matrix_double2x2_precision.hpp \ - /usr/include/glm/ext/matrix_float2x2.hpp \ - /usr/include/glm/ext/matrix_float2x2_precision.hpp \ - /usr/include/glm/trigonometric.hpp \ - /usr/include/glm/detail/func_trigonometric.inl \ - /usr/include/glm/packing.hpp /usr/include/glm/detail/func_packing.inl \ - /usr/include/glm/detail/type_half.hpp \ - /usr/include/glm/detail/type_half.inl /usr/include/glm/integer.hpp \ - /usr/include/glm/detail/func_integer.inl \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ - /usr/include/c++/15.2.1/string /usr/include/c++/15.2.1/bits/stringfwd.h \ - /usr/include/c++/15.2.1/bits/char_traits.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp \ + /usr/include/c++/15.2.1/memory \ + /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h \ + /usr/include/c++/15.2.1/bits/align.h \ + /usr/include/c++/15.2.1/bits/unique_ptr.h \ + /usr/include/c++/15.2.1/bits/ostream.h /usr/include/c++/15.2.1/ios \ + /usr/include/c++/15.2.1/iosfwd /usr/include/c++/15.2.1/bits/stringfwd.h \ /usr/include/c++/15.2.1/bits/postypes.h /usr/include/c++/15.2.1/cwchar \ - /usr/include/wchar.h \ + /usr/include/wchar.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ /usr/include/bits/types/wint_t.h /usr/include/bits/types/mbstate_t.h \ /usr/include/bits/types/__mbstate_t.h /usr/include/bits/types/__FILE.h \ - /usr/include/bits/types/FILE.h /usr/include/c++/15.2.1/bits/localefwd.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/__locale_t.h \ + /usr/include/c++/15.2.1/bits/char_traits.h \ + /usr/include/c++/15.2.1/bits/localefwd.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++locale.h \ /usr/include/c++/15.2.1/clocale /usr/include/locale.h \ - /usr/include/bits/locale.h /usr/include/c++/15.2.1/iosfwd \ - /usr/include/c++/15.2.1/cctype /usr/include/ctype.h \ + /usr/include/bits/locale.h /usr/include/c++/15.2.1/cctype \ + /usr/include/ctype.h /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h /usr/include/c++/15.2.1/bits/ios_base.h \ + /usr/include/c++/15.2.1/ext/atomicity.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/struct_timespec.h /usr/include/bits/sched.h \ + /usr/include/linux/sched/types.h /usr/include/linux/types.h \ + /usr/include/asm/types.h /usr/include/asm-generic/types.h \ + /usr/include/asm-generic/int-ll64.h /usr/include/asm/bitsperlong.h \ + /usr/include/asm-generic/bitsperlong.h /usr/include/linux/posix_types.h \ + /usr/include/linux/stddef.h /usr/include/asm/posix_types.h \ + /usr/include/asm/posix_types_64.h /usr/include/asm-generic/posix_types.h \ + /usr/include/bits/types/struct_sched_param.h /usr/include/bits/cpu-set.h \ + /usr/include/time.h /usr/include/bits/time.h /usr/include/bits/timex.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/struct_tm.h \ + /usr/include/bits/types/clockid_t.h /usr/include/bits/types/timer_t.h \ + /usr/include/bits/types/struct_itimerspec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/bits/setjmp.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct___jmp_buf_tag.h \ + /usr/include/bits/pthread_stack_min-dynamic.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ + /usr/include/sys/single_threaded.h \ + /usr/include/c++/15.2.1/bits/locale_classes.h \ + /usr/include/c++/15.2.1/string \ /usr/include/c++/15.2.1/bits/ostream_insert.h \ /usr/include/c++/15.2.1/bits/cxxabi_forced.h \ /usr/include/c++/15.2.1/bits/basic_string.h \ /usr/include/c++/15.2.1/string_view \ /usr/include/c++/15.2.1/bits/string_view.tcc \ /usr/include/c++/15.2.1/ext/string_conversions.h \ - /usr/include/c++/15.2.1/cstdlib /usr/include/c++/15.2.1/cstdio \ + /usr/include/c++/15.2.1/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/c++/15.2.1/bits/std_abs.h /usr/include/c++/15.2.1/cstdio \ /usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \ /usr/include/bits/types/__fpos64_t.h \ /usr/include/bits/types/struct_FILE.h \ @@ -311,40 +178,51 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: \ /usr/include/asm-generic/errno-base.h /usr/include/bits/types/error_t.h \ /usr/include/c++/15.2.1/bits/charconv.h \ /usr/include/c++/15.2.1/bits/basic_string.tcc \ - /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/format \ - /usr/include/c++/15.2.1/charconv \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/error_constants.h \ - /usr/include/c++/15.2.1/locale \ - /usr/include/c++/15.2.1/bits/locale_classes.h \ - /usr/include/c++/15.2.1/ext/atomicity.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \ - /usr/include/linux/sched/types.h /usr/include/linux/types.h \ - /usr/include/asm/types.h /usr/include/asm-generic/types.h \ - /usr/include/asm-generic/int-ll64.h /usr/include/asm/bitsperlong.h \ - /usr/include/asm-generic/bitsperlong.h /usr/include/linux/posix_types.h \ - /usr/include/linux/stddef.h /usr/include/asm/posix_types.h \ - /usr/include/asm/posix_types_64.h /usr/include/asm-generic/posix_types.h \ - /usr/include/bits/types/struct_sched_param.h /usr/include/bits/cpu-set.h \ - /usr/include/time.h /usr/include/bits/time.h /usr/include/bits/timex.h \ - /usr/include/bits/types/struct_tm.h \ - /usr/include/bits/types/struct_itimerspec.h /usr/include/bits/setjmp.h \ - /usr/include/bits/types/struct___jmp_buf_tag.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ - /usr/include/sys/single_threaded.h \ /usr/include/c++/15.2.1/bits/locale_classes.tcc \ + /usr/include/c++/15.2.1/system_error \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/error_constants.h \ + /usr/include/c++/15.2.1/stdexcept /usr/include/c++/15.2.1/streambuf \ + /usr/include/c++/15.2.1/bits/streambuf.tcc \ + /usr/include/c++/15.2.1/bits/basic_ios.h \ /usr/include/c++/15.2.1/bits/locale_facets.h \ /usr/include/c++/15.2.1/cwctype /usr/include/wctype.h \ /usr/include/bits/wctype-wchar.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_base.h \ - /usr/include/c++/15.2.1/bits/ios_base.h \ - /usr/include/c++/15.2.1/system_error /usr/include/c++/15.2.1/stdexcept \ - /usr/include/c++/15.2.1/streambuf \ - /usr/include/c++/15.2.1/bits/streambuf.tcc \ /usr/include/c++/15.2.1/bits/streambuf_iterator.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_inline.h \ /usr/include/c++/15.2.1/bits/locale_facets.tcc \ + /usr/include/c++/15.2.1/bits/basic_ios.tcc \ + /usr/include/c++/15.2.1/bits/shared_ptr.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_base.h \ + /usr/include/c++/15.2.1/bits/allocated_ptr.h \ + /usr/include/c++/15.2.1/ext/concurrence.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h \ + /usr/include/c++/15.2.1/bits/atomic_base.h \ + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h \ + /usr/include/c++/15.2.1/bits/atomic_wait.h \ + /usr/include/c++/15.2.1/climits \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt_posix.h \ + /usr/include/bits/getopt_core.h /usr/include/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/sys/syscall.h /usr/include/asm/unistd.h \ + /usr/include/asm/unistd_64.h /usr/include/bits/syscall.h \ + /usr/include/c++/15.2.1/bits/std_mutex.h \ + /usr/include/c++/15.2.1/backward/auto_ptr.h \ + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h \ + /usr/include/c++/15.2.1/bits/ranges_algobase.h \ + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h \ + /usr/include/c++/15.2.1/pstl/execution_defs.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ + /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/format \ + /usr/include/c++/15.2.1/array /usr/include/c++/15.2.1/charconv \ + /usr/include/c++/15.2.1/limits /usr/include/c++/15.2.1/locale \ /usr/include/c++/15.2.1/bits/locale_facets_nonio.h \ /usr/include/c++/15.2.1/ctime \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h \ @@ -354,11 +232,9 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanDeviceManager.cpp.o: \ /usr/include/c++/15.2.1/bits/locale_conv.h /usr/include/c++/15.2.1/span \ /usr/include/c++/15.2.1/bits/monostate.h \ /usr/include/c++/15.2.1/bits/formatfwd.h \ - /usr/include/c++/15.2.1/bits/ranges_algobase.h \ /usr/include/c++/15.2.1/bits/unicode.h \ /usr/include/c++/15.2.1/bits/stl_algo.h \ /usr/include/c++/15.2.1/bits/algorithmfwd.h \ /usr/include/c++/15.2.1/bits/stl_heap.h \ /usr/include/c++/15.2.1/bits/uniform_int_dist.h \ - /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ /usr/include/c++/15.2.1/bits/unicode-data.h diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanFramebuffers.cpp.o index 461bf7df2f045ed0fea91239816123249fe1cfb5..da9a6d1e1a980f286c20e1333559729ac2a21b5b 100644 GIT binary patch delta 34681 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

8gU zwlRCfw)+MZFf4E5E4UgGXCG7LX|uPvp6Zw-ZF*ab(bMEaEQgYTpkLu=xvG3m7*CJI|U!aO{t723g)j%@Vha+bM@( zITj9m%V>>70mE`EUKjA!R2f>khxJvQ9?81U+7$v`Jjdw>wybLu`h>(yFQ3yt1od@P zphCZzGXdxu5ZL4QyFi!ESqM~is#E84b?42g4bl9PK_5{8D5W~-RX*$bG4UIyaTX&_PSZX zODTupDWdiX0k5C}hUG)53u4bHUqO`&Zx*%xsbOBaBdCty6$17N_z`kOguu%M{3!Jg zg})JS0Zm}|-$MD%8fLfbqJ<0>3b;!gE|A!?BC2J07mBvm`UrRgoe6FG?jSf74~~O6 zRv_R?R?fC;Di;Zfh+iIUP62P%8MRgj~kf>1-&z$a${OjC6i1Dpb(aHjWtQ zTNbVs<$CLk(!LWqP^Z3XG*4LBOv>$qhY#=2uQ=tUf3IUBn|>`m3HWfjL~MI98cw2{ zvmG&o=ZSsoJJ9Xn%og(1LjIkQ?-uery#cc28-(2c8j#K6kFCGS;*;wnzRMcX+0nkx zqt7<1K|0<07xLcX8Q!--bEA-N7xFtrgqDLn#gcbd-j)r|6&2Ab3w5-Yik@yGr`o+Wk$Y0x1dmmWQB%ej47p_kZ1q)VR`a%oT-v2Dl( z*8PS2D1_EKWSbWwfu>a`u>v-lV41ZK8tg$Gt5pDE=(LFAxp*>1G^53SSb{ zq+M%8HQ9{ZTBSb@3cmar=69iA^1H{v7Iq!`U2dYyAxL*kTJ>@byO}9TN1YS(fM>#Gt_t09foYR2X!_b+wU&z+uOH=Ds zXr{gu>gWi*75WeN1&PNOw?Z9JNqrMAQ*6+<2ZB849>{tZ->QatppFi84+K__71z

y02c1VO~>>1MtGnasq~{KRHI;D#O;Nxc1PQZ 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 LH`2PzjvoIHbdIWT delta 35347 zcmaid3tUu1`~RK=yagUWQBYB^)u7a%vgA!oN^8lb$m-2ZQ!DJIWrbzGq(v^}Mq4Q1 zV-_iyX(nc6Y8MjByj1uS-Rxp%Wx6S97cW`F|NG3$S>~+be?Fhxne%*~+dMP#%$&1F zJYIRmuBXo^OG%nk;B;7JglLR#^fnR=1MO?^nL8rhdjsmR_}qvO)5qa+lWLDgJprGa z)%7IQlU4gx)VHbj-KeLk_B7P@sP?_6r>pjTsP9+pJk&GrdC=kTIv!HQhf)8ZYR^KQ zui9SJ1*%<$x=6K)QJ1LpW2hg;XO6n|p?*TOOHn_m+E1Z=TD8kW4efK$n1@ff0_LM8 z)n0)5S$r0%>*r8EuiBNUUr_Bus28ht73vpNdkN~7RC_7vmsNWO>R0hu$-S#q#8s$Y z!)G-@L7+~+luxM>UUMU2KD>+Y`~`$A0E~^Rc}Q70Y01X z`4As3gPZZ$f)BU1;q#Gde~kJQ)viaqU9}rfe~M2dKA$Pt=cvC>?JrS(rP@1Ce~r&K z_)PCdrN26yQd z(e6@jnwgsCiU!B=Kg>r5vtf7YMlhXlr~Wm?^iKW5?fcS99qMAXBzN7vVeX7i&BB^6 z@MU~t7G8(OsPv!r_b~eu2;tJpp!I?HtfEbZJ9RS)WM%wm7EOhpSC)qFnqnT><}STB zz0r($(#0#p?ay;f=bjwri_*(FFz^hwxpzGK*mD7bus|}UFwUX4lECqqomd>9@Em&;`T@I<%T}^@*s%QInKV3t|5X8 z{lE7*R}z9FxZM8tTs-wRkLZms-rLJ%#&9h#)NEUL&1P^t)fH{VjOfh$SkFjNZEtSZ za$A~p!>wpA_hu5>JSD7l4*P1L|8Cz(*H~P5P)}m_z<390E}M&m$Dm=TnZS*)+}J$Q zHHmw@l`l}(GW%|(J|m`q88hDHHd9}6@lr8USGsng7M(7b1xd5yAg(bzo^-j{c4@Kj zAuD66St7;)1a`*bU*qD5?(wa0C2^gx&nzB~2HRtT8;mlj#e$Kq*?YJDI@b_4q?u_0 zcZVfXa3P#mAciv z{$CJKyzbP)o{USA8fG8SGY+H2cg*7pxcxas(TNUb5$C}4 zqenM}n8n|M4XFD+G1nS%+V6kK>@(6a)ZzOoeOuAqWCF5W!DOb;_s%d=wZykb`8b#ezs*rU3m zmZHap_{t0^l>z3N73`&L9?fvOeLq-6_rG`2Je$$g?H|UzSXL4Qb5Ju+dU3ITLHT`M zw!AsGYxg^c4}UEpqU>CUuVcjCG{^DCh|Pl>wOyIAAZ{Gm-^G6xgNtKlJ8@AyU|kq4 z>d!^;IehLhqwL)BqWtA4y}ovy<8b^Q9QWf$;zd?(uE_0*U_@ZH3#NY zDu9BK=Gw5Y z_x!MH=Z>SBoMuTsbabSzwrE%6&~UTZ+Y#$x+t5g}xEXWJ8?Em?MvjO5c{9@nxp@OdaNVw8JcRv!%6l znFX^V9BF3pQPJz)v9r62el@a7TFjEi5uhpNM65AKcF8ugxI6FYur~H8|HvqGywNQA z6NBh39qEeqr0(({^A|OAW zydLx^&F#x`rFeXZmfLq7RN^aI^^;L(O~LqjN|^y};G_cvcBA<6Xy`54Xn1^kSyK`# z36V#fm?lI@XR&{?*gvoE&x?uND#%+!t8vj|5BdnLx4CkJ2B8a2GJZD; zhjfJ>ttsDE=T809ld;V#{Id%<*z8sQ0i8V3^iXyhP9ZejfLS;NksIwFdXXpf_q=p> z(FvsFOJcy```2UqFQh|mR@Lf>hj)sFK93ZM&z2(F;}Hk`z8fSAcwN5hiL;$EBxO2b_q z|IGM;nMs&fHJCOY9NF9+xb8b9*TDN8*Km*TS2q?f(qL%$-JWz6fWSvqY?32g)6H(hg2jx1r*2H; z;>E1MCk?xO@?f~RJ#f~Nx|-mU|5mKOE^`A zDEb+5J==HCTo*Q_Ux6`YSOMa*hEpHLXI^I> zqDjHC3&(&nuXbAL#B*f!CUFGw9kv}<9GRO(wQ%MM%PMLza3pveqK-h|ggF0TRb%J9 zEZmdvp;CpVHu|=xyl(xOiQUC6?I<|mM1nvL z$=b37l$L@M$f;Dm`mx0Fix+ncUxA&vJng^n-Lr~5kcsYB@LpDc1ecb#Kk#$;#Kk?l zgOGyVzI|^a?vBj2c@77z5Za5;`L5#f)1=KLkA6*BpoxhnNw# z_h?ip?^48@Gh6YwGWU6WjoH30Geub3sU0_FrGAxd{1wP6H>$eb9?x!wZA9!WA-fWG zj=xT|FCo9k-0b$%jg_0z1xTA}C;9}N(Wv61W^vtd%!`aYX7T#+N2`+0pN~sE%Q&>n zYgGDCEVOtCi>=KF+>BVX;^ikA`+J9ndi4&XYHgIK*e@qadG<|oiZ{=aGohC)vFNDu zrnj-AkgJd_+_V2GK-+w5d3#VU#?EdQ*LUE7;5mtG?=4J&kV2LQ5&r<(`0X?l9b8ATd2YFi{MAF+b(eE z@A64YdOI&GD_{Nj@NQ4Q7n~q)R+4TQ_rwPtJW>ALl7x%narAi!#@u3~#bK8dnwuRv z#X#)bfw3N&dD8^msFKP@?-=C0BzWmW5(^Zz|D?SNkE#1t)#GhYNQM(0PRw*+>SPg~l<+l%wNKOfsRCYFl) zCZ4C*$3Vfki*JC;;)i)}@@>XBK`@DZRGb7tGp*R`vwgeV*fA#sycj(>IKh0uwsVfO zv=r@{xn-nRuAZUMX7SZH3i7Z{m%|(F2sB_U1XnB5P>V^ zFa&-ex@`NCKQV;wU|MtOtgCWZD{TjIEuNH3$ zZe>mLu~#t7S`SF#hWJ}J3NX=p{2-ztAG3(5X+Hz<@vnn8^6(jdy?6#9QVCDYz*<5APlHLaI=vnJe(%j$N0dEzj)8XaaNw|K$|4awAJMkm&bXJWc&W~ zn3wPIWb85v$8~_)FoaX1hqGX^*toCbquY;WVKuI@GV0CZE6|nflArU=$}0K?lkH#T z^5N|EBi5mQpoAiMc*Ajuk7LPv95airLz2Vxly^HK`;{O2c7}M|6U%m;!I~)MEUm{yLk^`y@`}51{Ql2));4RPF}(E z9Bpk#+c_4j&poUK4Cdq4W0&RSfwLFyYN?2h8#|N7_aPQoU=h|9PmH9Kc6Q7Wv8Q_- znKx#R3ogdnpbiK2^sD{1A!wXz;R;Ug9^;V5_e<+|dvGTd%^t_k=#;rR+%<>=U{#Kb zx@D0!I(!U`4s80JC+5kgU2pMcaGdwJ>Ef(wJLdA^HQVvncPua#Aq*z0z=Xphc?3+< zVwu(OA_^2^Wwb6y-qs865RsdTJ9+=ZMqmz>ai+P}k?EZi?h2HE9i8Mmv}k^mS14{A z{jQFDoGDBfTYkQg?K>cD z;*LoO2vIBs+~Xr>`1k=r?%5=ZqY8pO+Ib_$CDw!Sd$zX@P0*TW&0y4kBCJ%NgB&K`cK= zi00oE3i($W9=+%+;rrdls$$f#eaF+c;ejPHwhkUgGCDv|E}k!nfCbJ(l+3l=FP+oX zYl^K9ciVx_VGe6zlw*z|_Ju%aj)my6hxbPOBp{|fhubnB_AgwDXBeVa%!P4E2^2IT z{@7@Wo#W`J>GupN*L#6CHRIG>*)V2!**; z-YCs!A6SM%8)oI4_F_o|4nis1Z$D?0d@2!mj;*xX%{Xor|H!$<*v8NE3s>^+BZ5wk z7tb`XXz-YZ#|z<;tD7SiFGpGUand-8(S=-|JVJ=m1M7$nE<82dOcKkSj}WX2L%un1 zJ|9?-96NY7@Grk_a|RC_;KOCn@o2Lo4)EJz?s38z&!gP>6eeTq1N%6^j{@0x9>J4f zx^xn)9OZ84&2{k(^jl!UAZNoU>=xoUE^fukW2m<=q&$s!dhsy%VYVB3hdyJjdd}O1 zjgosh_Bt;c%elpY_B;m)k=gFMPmrO!tn%g@Zqi#`sks9Z$ftlZ`mk$o23x#)coT=dk?Awx+VJ=nz|3 zOzay%?9U2(0d!V%JH3`RbTO_kZ}=$T&AD%EC|;K`)VRZGq^^5?xH0kab!jEW)DFg8 zs`MKv-3r2-MV;q_UD3HLEF1NuoeRRkE{!0=Z^U^=o)NagP~f$wGXXl^(YUWA z7yQOq5e*SxSBBAV^Ncw1mKhQ8E@0t!(8{F}A4oeKof{(PlXAmVUe+a?4woCfjjPLN zcZmxNb6m?cxt=kuG{!2@I8~2V_06iDr0QE$oy#?KtuVUMhzg@!!qsd^6#nVkDq)U0 zXkvxYJz(Wj2T}uE1XGbWEYA0UIlnww0=0rRvqHenZu3RJ~T!>s9@Zs%uoe zLDh9!)5>SjflZ3ES=HNA{jsX+xkg7CPV%%4o*EeEdl$mfM#cWQs=rkA4po1n>Yb|I zrRpD5{WI5i47T?qGxahcj#`EA^tMWvqn!c4uHG<5EW#R6a6rK!-WU;rv{Q8P+qfnY zsp$N}l3rp3eWFehZT_vp;kbpr#KUQBh|)^{xz=T{P8Re>g4b5#EJ1(Nx(wC>1^uqz zwbeLJ&`r%vzSl#!NCD9_`*|a-r)eZHRV$f_A&p)KLl|O1brnwLmWaUmQZ8uIQ^n=npD-Ez<{R;4A?=piyMAP|@2_COP90 zW}d|Glwg=mUUGK#Mr+ZNoC}q~h7iHUg6E*;@$w?VwfG>tpOqJ2y z%g=NAikB26$GwX2{{;Oyb%ocxRO@*`zdlH}=0Lrm|2Ifi3Bj=k^kn(QlE6|F#|hA* z@#wp#OH6tfDDUeyS@s-39~;zpj%r;-Rd79Fw1CG2;a62_zJSv!1w1|oU!z*@f}ZT; z7u00wpz5!Lm~ogUzi9M~OLiQx7##7cl|*$fVy77(t4vW%&cW*F>zEW|R%al`6M}y0 zN%Z#x{qB?K{9rNGakZmXIW|VsXVEoFVDwy3B@D&^jk%JrRzK+r$eYA?@|55r`Fr zk}=|a9c4lOm5P3qpwA7`KgEpaauD=roEf?pPO5`JqqnSv%IbPqO_9|@qDp@nzjyU@ z%$ExAeYeu(KwtYh76j>s6#X8W{W2E!`vQJ02=`RucP>_5UvW&A(3@BiTow!ZB6)%D zQp^i3G5GzqFFJ3PE{a|#=u0fJBL_pl{W}mA5C5k4MSu#URGXF zB|L^VBKkV`4PaUL?uW}!$<>kSSahJQazvHz-#C_8D;e<}=q{U^CD+%oYL-=)lTYViH%0aJkLkTJXPdmh z_fKj*-GSk&a`3BxT(H!`Rg}sB^mTkJ>G*zGwW46CucJOl=NAXKJPUf2qjS*k5as9x zpeH-{)nr+$-6gIk>uIpaj$1j&bE=snfX{=#f7F6mB3=EuenH<6q<^AT&{e(I zz|J7Or;5aDpeH*H1nHJTpMyTRuVYsbxIihw%LP#MbCCYMYHbnpy+L}oT5<iMFu$lsnr2_VTEZ{$bFaj>huY!IgNVlBnn8aQj z3(~Jrt(ye>c#v-KR}1=yARRMCl#i2G&);e4QY0+V4hWz*NY7BM{>d!xFHNjA;tZL< zH;N;}+EvEKPGd0r?-OI-`40}d_1>wsIR<$yyD(jRpU2;WGx$4=zXVkf&y(Nh)5WhF zQ)t=i#)@?}ykWeNK#iXmXLozh@!;K;-Jd%-FZc5MCr``0WyX{#x%WHhl49pDimErJ zgijoI-LUyc5>MsERK<#WfG zYM*6C|IzrDb)v%0jBef!HN0HIzi)%yA4erFtZxH8RzP0R=z3uJO$IK^zY-sdf3&3c z7Qky7@TDfOY+c0X#!ZHIl2Xo5?Tk-?%2?kkUW@)7FfKoZ(5(~v{t)^orAJLjG0IOv zUa>ipS^D7%BO;*;faSeSfSSL+B-G)v*a;NwbU6+DGGva<7odbIXaZmw|D_RW^q|bI z&|ZLcg6@X3GjKQOQVpwHh^FPte>8Q^Q4_0s5-Mos4(P0;MCdebps4RbAHejKuRtHG z5$1r9ut?LWCcTKqja1D}v1AkuKccWBH`2}^9r;%j?(ZUs+F^8$x)Dvw!E-2?opQq; z8~q|lXFn6_H2x_BfQ@nF--BuuH8ZomfY)lw%V^-&A+U9R z5Yw3^{E4*i2PCWsa6psRUHGdFx;4>QT_rwN1kP6zjRSX+MjxT*%)d&~FBNIQnwbpf z-LY=o^-{kinC{{XHhZP<%yQ1T9?Ht%)>^!KqBY zMo=YvGF3ADd8Xg3(Ql=Crhmfp5{;fq%}oD?=}R^G?KJQQ&%hRHfK6tXajvnPqIQGpRZy%!zg-)X3L3_+o*6&T=EPkz z4KPjJjo{p_k_#(;nJQU~-L$lRz;qO@mQy`oLk;*pyN%;ULN(|X@6XJL!n{i;>Sw6Z z;XJ#84C`CKPR+roGz~BoSkz!=cVh`vGPB+r>k!1IDyTkGmp(r$sF~q$;ItgwsClxA z24XGSls^YnF0A}DngEzqB4rt?tDaaV|T(!BDz*7fBO6Rk*zMEAjn5%JA&9GYM!giGg-$Xk@;R4o-!pf^D zYHx^b>n2Cq9u^8;VsmX;D7;0RXBAWl*r*W4EmZZP%tzP;iZs<63Lk3U3NN97`$8PO zS#2mRT}~4i)<+;xJ8M*sKU6wGZNpN!CKR5b!8n96d=KncQ|mpI%cbXufe_cejgp>o ztnQ&~hV@jm!EA-cQ9i@^_aR{jcAGpwh5X5}Jn?*xq49tjxdCcFu%&@ZVwjI?R!^VN;BrcY$*39) zUQD~$!dO_ab#boN#kVORVzvdmNrN{~^#LSnzNU}GcgL>P?wshOD{&^&KJn+walLj!pT#Ascp_2_<@0J<$sXRD5JHG}*tHXb7v zb(M`?!(w`l*s40rTzS;QuzqIPuRNDp6XCLLte;l*%nUzB*$nG5Ww#B^XIRf2vF#v+ z!qN{>HDHQtgvSCF+Cpo5?f343_l11*0frpdc-T^*@-wIgFg=e5;GB95ujS)xO%Hp%7MXh~@d(uE3-l6g zOeat_VDcP6WF~6#iImUuSxon8^vP7s^p#9sq|tAsolO6Z=^He9E=3&$J@P2%KWOyZ zX&BRoGQCBk-$~OzPsl?ctdO@;Cj{;k@(IIwXRout^$hECtWbj=qGpEmtaCk-a*>fA zcnq+<7XOf_Sc_|D0$@4!x@r;5BR`AjK9y@Q28>~Sj`h(xJb{{6s~CVwH2Oq2Fk%2E zYV^r+V8j4;HTtb`V8j3{(&)KzV8j4y(CD|zfe{1ngGRrTqW*%r`kd!~)5}E;z%anJ zZ6cp$N8$j8KaHCUrhqQt*J@AWt6 z*K71!D4XdXrq9smw^2URXED7(qfen~rmtlBTN?ci+R60qn0|rw@Gy^}{t4;LyBa)$ zhB2%!@DlBb-h(uaVSRSSt3$IK&q{{%6?26KKScF_>Alb3Q!dW|6c&4cnpsRwan{QV z9N{%Iuo+?^P3y@BhYZkd&fqmYQCKUsEr#`R>#PE##*JZp+~#TVyIICnjGG?UNiwct z+`iEGF>e3DNil9mG&;r&^n_eEWK9q2Cuw#P!^dJP|3yd!Ybyi8$Mo-*{;M|iAEc-j ztQfsh*OI|eb+?4%?I*OG9h}!8W*eAg+OR%Em4LCJ-fF>tyg~ETdcA~wok`7X`(X_} zvtqWhd&LlEWW-FS(tWAUE=FU;1gHI3`O9h*a@@C9__4mf8-_ji2x~=Qaz#ZAg!IGH zF75F2Vnq{B{h2`(3!!lJE+rbybBzs@Z9ui>cf{;fZ3rHwe9)sl1*bIx8!3~|2kQ-I zWJ04x@27@EjV!BHoQ#w)smv=U~FU#Q9hlWryq<;VN&)mX8DMw;e?*XuR? zV>S3qs&vBZa;gWH@tIh7##(B|mGg54J%y*@Mgt8D16WI=!kky&2Eor)cy7@h)pn}E zmF))Bscs_KI&MK3*4=+egFmOl@DS-fogs!IrL!5b}3FR|f0d6a#J)?!Nkglfc zP}r}2Vq@i>(N2b6)TIB^U_4=n2yrd8ORI7`!eUsry-e7{=$~(pB za6Q9%zvpW3Yt$Sn{b9FOX*_ah7vh@r^D*}uj~p1*kNQ>Wr$vTeAwR?VSbwJA*WjBdKNMcA!PBTZ z6#iO+AEBLqX?!f!y!CPe`}74xb%4=)&8MyjxIkf_9;IOne}Sge;fpkQ98F_bcX^x* zt_+3qHFz4;hr-J>cpNo{!ZiwJ&nwsA(e}HBaVG^jInOk{qNp?AidXaWNp1wPSr?`UfsuQwe3q6dsxe%a=9&3qeo9hl`a$IYjI6vG}joa;LKE6%Q}1 z{gM6Jp$Vkw8=ywF&O6NiwMM^H?TAeON~629$AYyQJ+sq9T%oY1{INWJRy*@B{X2ZP ze5WbW(^rE2y6*K3jjqpw41J$~3+Rm;r&yD{QhuSfy7{C=uh!`8wH-w_d|adJ<2_K@LtfPM zjE&*xh{6HU4W!2kvY_id&eiC;;bm>mcW87y5;0wrezvb~NRuo8blt$&+D4^2#DD*W zix^SVR^%pXblvdB8lCO(zq1$RoH$k^73l`L>YEsFi$7JP>yF-_(RITgX!H%Odb}<5 z8lZ1*U$sI1L!&QiRn*d3?RdPb^sVkpeJ9lThY333&jR|^d1)I0x3yv5&NlcT*Z8Mt zhM&~=c|lqseTyc?U^ATF%Ng(8tTBC|@od-V`jfu{nlZiiziIsXerRf&u+HCA(!F9r z=>q3z0(x&QQgohxI{$SVeUsJ!pQcAQ{FKJOieF^0qOwvG(0`bI-6qh=|Aof?h-UbE zx+WHf_MbGdFT~H#bRgE*D`A$}5>zE-#bAi9r{pf!p?lHXj?OL-OxZ`*Fr_QiS(NoO z8Y;q4!Yy zLqq8At4(r52>ll6H9geT8Dl&~zOK%55_ns(;(vzroTPy2yQ1r}#V^UY&1l9|)OL-z zLcXOnBo22^6&k&nJBz}z1ZUkigyTgtEgNgY7*uJP{D6&jX=$AET-%BGeC_m6KuzGH z0g*U3mMgkcp4bh_^~`gjcA6-lY=&pUmSy`k{SZR=-EiZzo~lEYY}1YyJ837wYc(Yc z)X=jF-%}Ldgw;~N?&8jD8m?@?Xs2!J-%%yQdJMnP;3ZTaD&0-n!^_3}Uc&d9Ct*>z zKw(dC(-9wH`$i4MKrs9RIIUnLc4k>i+8-)ir0>U66AB;Fw%?u9#IQcfBeh+)ni3NL z>sw#8wpYGJ*$nGbXmA(Zwfs;xSA%f`4OKo!+xM2xPKNbe?x+Ui$F?4T^(nMCuGRK3 z8pg1m1HaMWRWyxZ{m$hKwPW!bc$6v`{sK)a<`-!j+9s+GRsMhma*`)oU(sBCkK{X6(dw0tK4St217}j_2i5iTTym|rF6S!?3q-=)u zd|jucIcl>gpJ6>}e`qjXTL6q#Kg3%_-}Q2CHKKNF5ssibBr4k48(FDHqg(Gh@mkqV zO}#^sS&2+$DShx0NCi#10w&5SyAK@EXSMu?YgX>c2aMcR(Z_jilpd-xX*cJqeb8ld zVYV%IMJ0tiR_afgNHye63K1J)OIp*CMAE8+v~AkHq9v^#sU9#rkLOWQGqr5>6E%a5 zY!#O*vekrSD5=nb^ow?DvYY%2>)C3ZEnC%uN*~qWa%y7uCr!Ea8l=otiG4$CXV|h; zHp4$_(#;x-=T4#0x7xB*btwElEnEFaI~mr;)n&_8QD*|yv(-Rbwi?E;9JkmEq^SOY^=vg&gICcohV^V^J*|`3Y8u0O)c7B>aA9~HRRXrM z)hGR(s}18`%1?nv1z;=C+tj&>N3nvcL*Xn|g(Bgdfbo*uu9# zcDP7Zem70PYO8mgr3|scVw#p3;zy|st_+3$w!!tGuvfV$l{bgN-`e1TXNTC%3KNct zuocsUQ20I@>}Qz!jXzByO0yIe{ob>#25?wH05mJYOEuR6)HD#{ziRM}ns2{S;vfa9 zwdeR;g9DTu3g;`|IOuyRAFz4}l2#6KmKg`cFD5p7eKdD|rD^9vVjo5Eu7kg=fh+1Y z2)Ud8wm%oP-bD4xwT!Ya7hKKEH6RV!)l0M+-Jv1e#{1j&Imtp&Eucyee%v{;R=zsEJ{H{{EoB%fu_*LfW!@AvAH}_#C9{bnIXVQ#zbJ zFc973|C)dc!~3Zk^n~Bhw4|TaqHrzkWcaWK&t@?cuJ%&Yd4La~X-Rj`cF+AZjJHi) zxxQ`grD>tk@#@A)x>m`sF8zlF@1^=s>Fcx&aX&RPyhd~FB@M=V`R4=HgStyQ{9|0t zN7Q~NKXd8be^%QU4^s`px`$oV%I6UOPEDaUvbAlqf)X!)w7&6uuV5*i&9JWgU2Rug zM)?fuY4mdqUPaXm{{c5tw;cO57&)3@{VB(v+N{7UI)lZm?>E?aE=3N;?`)F>J6*;) zDghx%pU5p#$FH#M0FUj5&a2cph_#kbGt|*P{9X|M@j)(3e~boRsOU7Lqcd{d_zRsm z?J-xY`JW@L75a9Bt;!p=`kNCBJ92 zAvwM-Kg(%4jT7V_jUMQ;q?qo*XwlZu$Ro2Z$5%Z5r2`&uHG$D~!}FxJ_54kV_>n*1 zgyzO&T93C=HpBYu(j%(JJd}S^KEEPx06~k2)H=7Fs##3;&RSNid=c#g9OcuD{y;_} z!XKZF@V}tZ|JGu19}UY!eCJcmRj9%!|7uhQHQ_2k{QFv(eKlUua0*I-A6l%Uo|uY1 z5l~9mEcYb;lYjmrSm8<&9k|LFPra^2;P#axa2~gt z|Ayd?c%5OjF1A zf9gl!MVKK63!L57l@&N|Zx?aa0Q><15&Y=KozaOsp|%w4YSIPkR<<0A?a9-!m4VIZ zNxL7%Y-km3u!NsDt#I@l<;pXsWy`VH=AV|W%wpr2+;+zrEH+L8ZL>xDly8eq%a&uY zy?k1>GK+2bY1taUhG>TWx=K~g6_WiucBv@-O+ z(;KqbzC0~knZ@?)Y1tYqwq2)Xi!M{X?Kv%5j>Y!NY1zsww!NoiYXBRMQkgwWa|Ly` zoth)5$#ZSIWs3T&joKiolkL3G^Q2xoHAhk>FSKbWQ`7}EYJ;RE&$CgZ%Z1*_c505K z?zU6QBsIC*rlCRcK4YUsKjZAsQQf#WF!5}@43vM3uk}WYHxB+wBW)*xvS);!Rd$aW z>{ce*e2B4LQnGI6;D$X=ITg+h{en)ye*4q;FmQxAYX$W&_vs|40S2@vBv=GtOX_a>+$&pPb0FE4m1C@bE zm7&VcV7>d>$}rh(LjE;9-NbG?!{L)mB-&_xHXoslv@dwT4-UG1*gz5j`o11 z>6>pr2#KEU2$6#d#$E%JmtOs_V*Nfq-0+ScIVbuYJ9;tJi^JpXwcl@hP*AH z0gIq(4*zvl6ukqJD0dOOi|#`67C~-!h};2|TYn0jZ=C|}Zzi=7vB?B7*h zPM~LT8MjXfu2;9p9I+|12ZGKyaTHsHa4h~p`eaQ5X1RlMtH4swjpl(RVnsJ7)%tRv z3O<#6eR5y!rhYF%Zhbcz^CDE&DwZ6{DaLCWEoGMYcxq&p=x-&av)oJlmau~fG-e4{ zCVeMath*a_@IG1!mX5C^$ljhI2jIXG48ZyXihT)UGnJV2H{Dn)k8)pv=7v5rk68-T zzn4EQ4G8}pq&;Bi=t`2Bd#IVP6q-jQ(U_&I`3K3rT(StUhiU0ji1qI)Y4OS-A=Z~- zUxrxHu9L-PQSQqSYv+<;acUyH3~Na)YGkpkN^Fv5%}f23K`gPKq$NtRsms{Oel%|x z#8P%kYr0q=?SYtcdVh*t4wgBJMUPN1?jS|{CSM_fTg3EArJ?C z$;F)@4R{5{hh)&0S0FZN&&kGpwDc8dzT-dC$Sk#r<*?Kuf>=uZR)A&wFdDN0%RXs1 z%|jitTK$o}V7zJacI2PqE1dDp4kIY`Rq(FQq%o-D#_pAtqcw-;($ZJquh;pu$ZvywYAnqsTL(xCp;>uQZ< z0p(W1>J2&4YO=JjvKkg<=1?Px6{zQ5YJ`R6=cwN*XkPGN8nX&4lMbG2yponOOU`&| zWR|UmB+EXn%ZsSrYhc-RD~)*#EUSN)EQ>XkDq6}c$M2#>X304sS<+Op=jF15`mF|w zdj^eJ4VD76PV~vJl$L^}g|ceSi(Fpgpg{;GYXA_6@LX#s4HP z;~m-qmW~Vgwg9EOitbvD?p_+R7GfRxNwKXmxI(Okmac_n_kL<*mWKY4MV~JlsNXv7 z!hRaF4r8>qiRPh>Tc0Xf^+mdo_AqPlZxp*8EX&ouf7bonM7it1viLWe$1Fq8D=xL- zTW;H%X%ARBjyxi1;i@Zdqbu$sH0EuH9amyQw61KUrEf!X+TYa3ENKI!<}^+7$JFl~ zuIo5 z4y|W9D7OY$BG00E%o0CTvZQE7t#4=#v+O&IV&6y4hNRFK)Nvy+C99t4chb`L!8-PA zYGl^sXH)D3u(~gmtZpq{yC`=9Siei7dCXEaO0wwN=8v?8S<=!ewiYaN`0vc4=mYaJ z<<^2F`aGHk7Uzibs1bG6dc~@*OP=6r4F(@-euK@9XM$5|X6>T5Gvxe8ri3bIpB|C@ zC0kes+w=^I-RSI}+8#KcSx1E6cc>Q#+)6EO)#{wxlP_yS-5g~#g%UP8``j|T4Xvw{ z)=8FD_<8{C(9S)g%!GDswK5aq;Nx}g9+hplvsLwOK^uNVUn#rW+PmEw(Yp<8nBAq! zcBh2R&ZLAkj2_2szu9?KN*gxEDx1MMKvf?&yZ1HEI`ueq_>UaNo~o-CE56WyO!&23mMQ&#KRu-b5v)#MM+*?uXf?(A}9wTJ9% za*pB)?d(>?7cHh)>S(Z?s?YJG~bLM!L2Qt8Qi0 zZB1^f+6=2*Q%}7D(=L_+ESJn=6KtpIOPSKDFBx9=9h4R8HsInm%#5|0xv&j0hfiUK z9{`1#S=xq~0%ayiCV<6ln8{JUVFqIa6a2&`)XWLXjOwLTEmmgY9W?G$XP?QI84FkS z0%ayR0brutDa>>_`_%Jsy)xr4s7IBvci*eq;u{L3DAS#iudofiluIPv*htCuW*dA3 zqa`1@$N7!cZ^JW%1&a824=LR3oKrhJeTozg?=JbW+Tfd+FZqUq3BKe<6rZ|#S0Tii zu0Zllq8mTPPU35WExM5AeeCStV}2WWd?7UgPhPHYwUGwRBo#_C9mLF;yaa4w9RwL< zW2+icYrgk{R4hKBGpE)v6SASD*v-6anF(RrbqX{5HxWb498hMg8D@E#rp)w`Cpg@K zM@AfBUj9)o%u~p9T=1b!WOBp+JmiFMh#QU^r6)~9rEenGI832z1&YnlnR;w=_8u4y zzEef-xa!srwuQpcOQ3$+o#(_Al(AxmW2<_2&~=Y^fpu9Nl$ L4WMz)IeY&<0_8X6 diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o index 0f199884c24a751fe83962b03ec0b75cfcbd9abb..678f1bf970319e12806508f224de659081a70b3e 100644 GIT binary patch delta 40578 zcmaJ~30zcF`@VM+#bq2&5k@5ev9vva-^GvNDr@+GpQqUy>W9d`el9 zy;f4%Vy0rKm9}7znWj1<=_fW?98uG+Q&!u?8oODRX&LPTYSF5=X-_yfc!^QK7_nRl@B97qRMqDuSfoy zD*ulB4^{qC&bKDsMv0imb~6h;tAAv{2=iDvv=+UYhj=I|$&uBTJQ}BtH_ALTM-vqOk zjSMc1ogNIt1%owlwSxw|9ucuP&05|jVo91+>Ww&%W%-3lV*2d0V+t^*2n(WB#5jR^mL|7KeEq%x>YvV)RKk)=>Iwk}McJCLLopt@C zSKWL?;Hr^Vj=cKjf9FlUb3)#28xCyr}NmcvKQhod*PVm z^uW9d-)j&U=6em&zQTv2l#8wGBHK5t`qH$cIT@d1`5t?3=BydXah9(zojtu)nKf%h zgq7+m>>_IMRiF=|I&A06Yx2!|5zy_v9>XjvXWmg?;h+|%2)s?avUu14)a_&6ycr!B z8kU@p-RD4dMxAf&SRVt^l5+zWPD@5x#I~0LQ?fHEd~>()QPk`IG>J4bJEPJ!Cp9Mc z^V8=?28zaT{l*1%mUW#OU^hcY6uq0ha9naa*DxU)UgFqiVLa*9Lx+3=7)AVn2=tecnS<@T~WL2g@bXNT{Iy%SDAr9cxJIFzQVU* zBs=3P-<*O@u(ny(CD3O#H^7`B!5*7q`t%R@F3nCxr4Rb%{Dn5Uym)Y2cAu}Nr3L05 zw|#|?(NHb=C)@rjxO`LR9s!P#eZ^(l-;9|14Fp*@TS*e?JI&?_M~{?yusQ%{e!Qq*x|{K z3eI|Vp#6Gq)3b-|$Aiy4H+I0sYAAF?M{|!Cz9`2;cG1TD^YeGxcIV)@ zm0z@D4y4epRX`wpFm*mjn8YMn9r%R;b#nJr>$?4@}>V@r}uB4Mr`}gIO;n z+r5Ifzm(bc2+Mr>M^jVajnF8_*y)>dSsS#PT@k?Op4*qp8SnV!{ubQxQl_02^sRo| zJ{z!s^yb?=;D%>HI?n{}n&kF80TOsvrq{F$X091Ab2$9T z20K}w?2PK1qW#&v%l;HY@JtxaUdY4u!U^2+w<35pf#LX@Z_at#*W7cDVFAOuo|Yy@ z+)cp6l=>~Z=og+?m{S;$YEH2=9-uKIpzNY)$rCSmujTnX5`Bf0LGRigGyiGLZcvLi zum)HG?)8zy$wM#`gzIm8bM8hUm4tW_st$oD{GUhT9q0th59w-JH#;r1yy9IRa% z*L%_LavYdz7>RWclV7Z1PyN=^RI@mkTAJ*+v1Raq>Mr)O;P`DRslSL;hEyPv_g3Hh zCyrrcU>Icb-s*d>FRB|To{rUKTcD`2#uwaK+Hd$O$c!wW5N};kJopU6z-tWF(yy}Z zU$cvT6s^L&kQ!Rq;<7Ik%NxY*ZJYI8%jCYS9?V$Rz2(ISESURxjGYv`d)@gn58yB~ znrpWGim6j{q~<@!#V9L313}j8;}}n_VHrDob7Dn3CMQP)itn>)4q?t``ChZK7PL&R z`H7{Au~y|2)up|kh81zYSbPITGk6(xbm5tyMJ)k~T1}gJwCih^!j4t*HEfFEKBDMQ zuxVY)kR^>wwh}(SY=l0Y-n_-{F z{6x`lBZ{+=ZM6fHp~JJWBTX5R@u6?d;b3B!Kc*4O1V+8j_uvXy!X(@mtlQq*%i9g_ zC%nm~20QQQHB)Rs)8ctpP2oDG@|F?m54qDYDR&Ikn^JQ%tiIPewPrK7`rHQiiA1R; zN>@Cms6n>h(Lm95(Qv|_uqwwsrhQyZ9?aYkC_cYq0P`(wM8;9yoJHt0o_%p6iXX6R zdSfN@y=E_HEtG2ZLf-dU?8OT@50b5qhHnSQ=s<4ymdRpOsCi9?F#^NU*mrx&x{AHG zW?d~B7;`wzH}`R@Zh^OX)kT`gk;c_5WNcw;v2}9yM>a*t9U5C%WX*h4|L5Sz_gZ0c z8KPd$x@H^t*)WuG%vbmvdMC#|nw?Sao3kOf?0tVrvGm=&KE)mvELqZb)I58UNO09zBw8kv0-|vuVfe2f1BtT(G;xP z=nww3AttzPV<%rLR6~rvKv50$k>J^{bbIu>j=?)N27-U>j6GAYd?&j^u6bgA=4G{J z0^$hH-q^|RAN+OWxpoBpc5Pd<^+-~nXlr)SU%`KNbqn^|ct-S#T;HN^WVeEUGdMf; zij4f3$4R=gdF3Iw)eVUWq!M--)ev6sO>@hF@c2{=#`87Lkg!A#C>3>3wP zLzNYaqZ$cqt=Y6@h<#sntL`{n?xC+1+GltwJaim+%mK7Ir$m`qgONwleGBc2>;S#K z(C+5P>4!B2>mDa9#pfauDP@s;p1q9n7TH&L4z-|li|i!3J?&X!ce8s_El_&_Wfa?2 zdv>&>hl=fsnJfl6mf|0>d)hN7>mhp(lmC6l?(aDiLF*o}``YJH^+WcB_89U%Z1=MZ zX#{7l(0#}}-?yUG4@0Iiefh9G(w;zl7TY5|J6h3y7u#3barFLT*d0u@i|wo1EXFRu z=?5C|h&|YzOj(cGU1-@O_KjUew&<|5#qbWxTU>$s;tq>jjDp-a@;+)`ZI@9VGEZF_ zdhJn!d_Em})V?HUI?jeTeS*=&DIK3hG&*Qs=-JVh9tzsm+6nYS5HU@m0gu_|u$jl~ zyX;7+dJG_HyacsaKslUkrh+B*MV^NCv}K7s#7?KiC2$OLkE7*QQU2rh9d~Uq4GO9 zr^!#)om+Q`V@;xum>z8%Q0!MKza4GObQ9Bj^TC-u18rMl zsNa*Ir#d+t9Z}jhgQm-#v^!GjQoEHsO+>foNz{1~z4#>Bc7}@k0hP~Id7;YZtGtMF zn(&l;x&5eu9#i=eLA757qfd!q@-lSifn|0pRBM)+)B(}0d0{d{84y;rt zb}q43+gp^`3IY9G0<&8cv`s+gKMiQ7f<6$?3_yOqLE%hSVdC1>Wcuc5JJ$Y0NWS|t zrVqCT9evsk*!z{4gDU?{2o*kKcg1yimu@Yr!%mAhx(PO?>Qwz&$Bb3e&Ei6AqeBuf_rrUH)hVmap zqjs@}(r5^D>SB*lrnJOwWUsJeXEq4A=~j})RsN5_<7{4j&D2tKS{Hk<%UoN9FL&Wl z3eR=nd?{^NU1r)-Tts)JFw2D}3H(+w7EwM+;J2TGpDXY?Pr-3N1ZkGSXQ~|8AVK`! zNkEkb3%rXf94sgb=WW1Dmnl5K1W~?1;k-qJ68j&mh@l}=7Oqn`ufb*-ukc(GMEO>Q zPjTUQDtwj;zZ*FGqc2^=y-H!Z3%_6CWiEWS!Yf?(e1YHZLM^LU;kXhp+8<&;LCifx z;R%61cnbcEz++G8nimA##oq1GSR?R93{?4FuL$0~%(O}1WJ01`u5iqEN7|}z+{1CC z_Z5yBJJLrp6@kl9NBT_QOC1;=d@b-UcAbkksPF?W{3n6Gf$xr*DOTXIwpfo0B3{WSxa4~ZyxfqK z#XbUej|lkhrwDfq1_-?R6hjvZ{J<%AmcV~H1s^W(E_SLb&>Y6;g_U+E`)b;=(vIzR zmyi?<>aen)6_)udJ7(ru2qcNe7?Rg}|HlHqHl(CY{2}n`Lbx7fy;`%Ku_2sqMsUgm zo@ntcY?*qi{3_s42==cR?dY_-no*uBaDJ{L(>W@Cit1mqV@EtE=y942oiSH5gI5du zrjYy^Rq9QnSJ|;?{jf15S-By4v?}EQPxSE3beZ)2b*E6X=ZMT-!crDL9FQqaCaS|{YPdGh-~J= z&`GlRah6QulXi$l0x17?FyvK|iMSE!Ao z7PyE%?@uAYkNsr&Q3Y}x+Gd5tkCIeUrN@9LS&wPdTC4C%fiDT+d(=9bM|;+y>+hA> zBQkqgW;ssbC9;{%qEboLn^F*epH!ncsw?ALLiodKbdC}DJ0V210{<|Cw~dy?&bTwY z!iotwPFH~r0iI~_b6=Tyt9&u=B|g7{2{S=I$=_H^yR3SWfqV+y}r z;9rLD57cyeU*P*gcsJD&XD4t#zlU%g&`97jldOXw;(TT3FAz!A410{;PoL~54E*IjTUdTTc#vh$3i^T43X-D-k%{{ zb-WcpqhCQZ-ICc|Lx@)6$QmfP=<57e5d6Y|Oc^TQB=Cq3t{waVTsHrhO;caBx3#3mH|%p~ z_PzD)$rG%;*_ZTB<-Y?5iNERM?|I_y`Qq;Y{yV6@_$%=YQ5IT*(zq;&q9nxn3q`5N zw6H0Z(xfDd((7;7{qv-}Fxy`!^dHC?{Y5bSh0b|G=R9HlJRyIckUvjIo+o^rCv?vf zTIWl7p?iKBjeXPZ*+U+PI0gtq1BB23VQ#=cdh$&>$unpG?R?X|ncmI!B+{gJ?G99x z?`gB?skiJkE$H8s_6>Adg?$;ly2(zZD=TsL_s4rZsjt0bkG5%Bg`K!*%vSsRxR%@* zG;p6i#9xlm3Goo2sp$eW+L_)$#rv>~ms3@wCzjsYhpUOVsTPo*mnyBXumui~SfiZc ztL@>?xQ(+4Dy@d_dmyy%y~3>&-a^$(uQurK9JF^o=y3+!GXe)lGPq38UX#9z?05t^ zeZSq_5g|W8)oK+~!d7c=tYfM&=)+XS^j8KQsTL`A`ZYB&eZ-)jFz6$c@(t)M20ckF zS**R9#xrd;-Vk1sk(mCRib2~e$=lfzYpNOE1HepM&+RCt#47I z6^7bMss)bekspEK+WkAb!hUm8^>;Se{%4`4{9CFGgs11I_y>40X`F+K#DP3V<)ATi za()$AEsp5tAMEz_<8+YAy?;aurI6HdcBSYafsX|qA*@p3&$ub@JQV=;^Qohjyg+!7 z6)vMv(BAb1okLk{=nxF~?=WyRRz>t{sQO3T+h0SOKS6XY$D+nPZcSU(oscFJUWtD*frgWf>-Oq<4^ zH|XtD!t@41`vV7E<)(i&=n85CompXMA2n$MZ&Wxp7wKTta>>8rZILFsRM#Pye<6H_m_T5z50?W%_ z_@W(b*bH#846uQ5Gr$LBfW3cn1-McMIF@lU!1rW;3xH!ihkP_nA!s_}y_E*OmG&^c z3OK?-|Hs-rs0!KKa|2Ssyu?lu?LL@A{5S5 zaV0>IlT;|y3g?qOSa>Mc$Sag4ky?!mqdbYk|Eb($(<2he(a0F8lt_U_#!=Skb2CMw?EeOyFK~skv9$nU3bScT#Z%&PDF061UWg zl*Mb;UhbrwaH3~KuO;g-=pz5ZfHjT2DI$@vY@w9Dpekbg#lSH@VA9?q7AO%aErlI= zs}Vj5R1a}wc2YSE;92KMxB4yu)4Qma>H7_OrJ=ox;v3*T8)MIYU)FVOgBox4J~;pv zFu;DP_dob^BHGiQHZ#U0?_l}Ch;J?5hMJ~$_-oyoM>jb|8VgsUl^ zX>-#Wu9hy=-a;jysXI>7@G?R)pR(;ehPE>0b7&9ak;f7IK0cqzHqL$uDCIcFaX3M- zPta&SS(ykye*ui^4$a0rK~C(jf{G#UX!v&xdKZ;5ZEg-n40;3AvNv&BQm0N!{>HZ? zc2myZP}>6s+Uck45sAC)0V)7(e?s}!VkqvWQXGlCv5RPZBg%*VM%}ox?58uR59Dq(t-L022}8meNN@0MxfAEC^N+i5p7 zGQAf?O;0qmzoZnz?daC0jL^QK@u0n58`^2Irb~H5u0?gd>x}`ulFA{Eq5D~*-OpjQ zlW}QQP4WMrv3LO6Ps?^1i?Qt(xp#8#NSv*v0?0c$GicEJsFdjnNa`xSY0&$r8nnHE zimybcRf;u#$s)`heV)Uzdngm9K{WXUDwJb1z#Pg4?w@Peo~G){Ss|4$JZpuPJI?SYiY6EDu=Y44wH;1f~i#G%chOphm4^!YieCKApEEc^T`qlSB^ z1h~Htnz{ilQ8naj9#y&N@do_>H8O3EmO?4yv1 z-L!n5tQW;{KF^xb7Nc7}H_+l zPHc6yxJdQSK~eV$k3vpN&!G}nbqs=Kj$W^n(NHJ=^AwZW_ctT4BzB)46bJk z8WW6Zv*r7lEx!pJ)5-R}=@@W1Z4v)kj{g#)RWQ7PJH}}Xqk6cyWi?T4pMkHT`0uc+ zo68NK;c=4H_VVZ&jFINO#zirSDP!(wV zC*pgPc#E|WN8WtIpvOfos_y`Q>FrVLyAAwON^B2&BID+T*ljeL@uiHL7h>~hHsd=O zcU~#3XS{)N^FnMJ9b~+>*VV^M)#)VH;Q`9=y6RSAoNazW1x%ZB^SCj)1fPHcQOWrB8$+K1(+P3QH(Tq+M5-GNg9wps`ax&z{j z6%)P1^iKwzZ;ViMA3HU>?*-X?qIu2k+ornD=jy&6RQCb*o82ehM3QxzM&&-ZF?+EW ztp`L6Y|iY(OX(ovy`x~x><7!)i&3bQNsA|YswFYKm^Qb8<;FDwrWa^hi*e#zYv8y= z2izV=@x74Mk{2h^{`p43bu=c`0?K5XFWz*s_c!SIl+X0920cO1yk;Ds5~hzB^iI{M zOmCqo(DF)4pVu+Ik{Vg9&QLp_aU{+@q?C?`d@o(v(bLaso+)i0n>V4Q9dQvi7<--f zT{Q++?H4MC8ntJ9pMn2MwZI)Gb0gIvCWDFZ1lnw%L&h41SIe0;8_28HGOp=-Dqz}d zpfrR2j7pi_4N2X+j~nzrs%CnnK`%F^alLqc;1~e+7#;l^W%A>NYPzPgXSld_q*a~K zGUDQJPdgYz;wsis6$BmK^sTyfWEwZtLDSECb34g#b2}vlYQI552j67STWCCJS`>r! zzP1B|kYs}vvzmD&Tt; zj&Ne_os4o<9%`x~+F zFgO-fxy!&;QYLW671dd>LQAZWMU>Cq?xPZ>w;S|WgWgV6Oq(}mpET%$ z)X21XN9AjS-bE>KF1nq%wa319(Ril+XZTK6G>`U$RLu162Aylr_ft93X2lj5^bD$X z(`5!diQ@e(?MeroO7Q7O~KDC#ypThUza-^HE9hyf_hqQqZu zhj0LSyF!7HrE1QpDI@F+piIz0p@R1G#2M27%GV0h)g0CjnmB*~RHEs0WiJ^pCrMXn z`WiLI&Xug98#T@E=W#k;W{OVfrlR?cDw9Pt916uurvuW>@q(hcIsT+_ z(APX<(3hLbzJWj24E_e!3W?2`^XIs@|B*M)xE3&H-+Kmb?hnTd+*||9Ys0;8rE9Z- zMq|;R`4YQF;>_Gg=BfRGgEVVdZR{InSbsHxFKETqWfz)u)=8Xv<2?~G&DDRup}?)5 zz}iS>8N0$~IM(&JSK(X%GoZG{HgVLDA7S9?#DTwy*VObi*}Ml#GxiVjCd2boj|c94 z^DL3uMqeOii+hr|O~Uxr$t zfty2X9Ua7d&%Cb;+B6r}0XC4hDI4(7O}yH`O>^_jP0NsPM~RoBsTP@gmqE{>Xx@q5 zaO_>h=Xqi?KQyE^n|qgm|JDqiB{nnvkxr0B;yReIo)GlRUdG;KR{eeh-w9P+_0}{N4=&ETIK_-g2BJ53V5Qp9CCo@MNc6^25Y!g-8MGVnJH`CU|fjwiO)41@m8qzycR z_9WpYG&7R7NiRik^!#y%R)0yC7+1e7`P_+flGrD>7P%1v+Pk+jG*%F`mhs1Q=6 zL`dWwdITcE{Xk0Vri!7W2c-L3zfQ@~ zJxn=#dAOMP6$ASS72wEmg|LLBki=3$rJ&{GyG8?FN!4tmj&iyq`;fe6BHK&7&h+$i z+~MXQ#NZ?y=R=D2b;n7w{KA&>v64!FJ5I$1wldYKm|hG-SBHQ3gcC=I=QK=TfMNnZ zoPIL2KckehJh5HPrRjZRXZ_ovo6hod>8f^2v0>`lEo}XSMGt|;rPd2)=}WDKvv8@! z59~U$GPb?r7M;=C)5Xz}Ul{xr%IVFu=jV4_%zcjvfcsCdGvU6esfDqRZJ|=+y>2*VxrQq)gCVP5M`3S3|4(Umw(^&QKp_Y-=A<30vQ3 z&^hMzMOAL+1I+D<8bQ;!XJZ`PX5cF+1($6Ot9^~_3s;>?o15QJgI-O=Oq(6O+}N}# zsGMnY)%?n!@w}PoMMjO<89P-m#bZZuT>cC)cBF%p0~%kyFHS_ZiwaoSTql%H zX>-}Fa?rf_IcUe`M_%l74mu_lQ6q^(n=+Z+heJJ@&Nb-ml+U!e^4@IF8>ob7bBk14 zn=)Pn+WSAlc%|6jC^7|?+UCyoyRypjeiEgmh-Tq;I3oB3V!3?Bb8(znz*Hs{3dSpF z1+J}x^tociwlk<4W(3k*uGTEKT&~t!9IR|4pv;MVGoC9~Yc5U?vsyELv0SaWcvqO! zn(_W(wH7fSRgTgDbJC8IVlLf-#nSC<0taVJzaRSTh(XWeppfJuUIJRa3$f!mJXl#tRV;5#@0I3d7Bzy#avqcFx((Np z@^}fKnCc2fevwx%=f$ZQCFVptlPXzlhg;<<8u&`e2kz&$>UFPuXRPpe#e>zv5}x5$!mC(~e;81!H5xQ-&as-f%a-d{yHjvY z;aJ)~GS+U3#xrg9ZL(wO<|`7%A{*may35`4a)ZXLIye1_EYUek zn|*l5pz(;CX>*A_%dte4GHtG#nGU*|X>;WpW6*eAa{y>_<(qHN8z_@$bNzoy(LDN! zDW7R`h5ONeSox5h*>SsT-58TxkNL*TrSaEY%fo$xwxAu zQ*ips#S=(qWJ#$t^m&}fO2Yos^L zmPjoSKS!p&i95y&hvG98ovylIoP*BM^iV}laL@&yMO_1mo@~-6XVacqyOZ!gN{LJ} zMW|XkXi)T}27NJkhaf!udcIzsUQlA(!>uWkY5wt9O;E(`Ll{ z)e=rjM^ZUxPb-^lx(?TF5md|4d=0GYr+bP!VCtwa6kU2S+q`2&RF4D_*)R zU|dWm^XYYvN`d=Z7{(uTRKJ>O{+^un?KkcywCXs(;u!mVo!x&>u|ruOj&<{JaY zb9(-U2dinT15xJ0XFKhwB+JteRjFd*{6oT8O24ASQf;V_Y5o$drk^n8_l=ZtG3X8k zJ)6~#IE$e1pu3vJBh_*yjN7y&6{k|Bb@O~Jg38&tsUD}+c^O+R)26oh#i|I z#yB5qLpe1*R%W6A~VD>9os+G8{zG%Ta^{-UhCR=@sa+qFY&^H+L5-I?V?-7X?{)ba33lE3z$I6A06%h`nYE6Ho zXg!VC)o}6-SK1kB_L!$4!zokKhn02$v^Yuae9#f>8;{ob%Lc=#L?g$kULsW*@lfK8 zLZ(q0mA`CdSwq<(k~EqUP$6|xAq6C>=<%B7pAF_TN@j{K*0lUpE1VrU=yFY;t+aC; zbgicQD|(`Xjvt{yyFk%X9CVJRFIMz)2VJ1)%N0G#L6>U!Dn&1F(AApeUm54LSZ1o; z-pf^JEz}~j)In!zT8FmWLFa2){-~H`t#Z&Mn$A+b%N%r-rsXe&S=MF;-Kgo_O1r{A zr(B^TPgV2|2R&ZX>5AU%po=vux=Pc(DD6cuGPUnDGHtGzlQtcNFLfBi^m5#aa6?$^@;K`fSR_QG7Ot zJY^#iWlk*2_-%CXGCcR-qW+dc6v~{02vundQA_*>$0-8D; z*D35|wpjK>aUQMEXpva@1zJpdfQo<~QRdQ3b5uSW^=DI0D0--auGRDkMF$*o{8dU@ zzsxYoLFZ_Cz0w}*pbIqpx}tL(bg8B*6+O{GS8MuxMNe_i-m6t;`e%WrJLpVJf2p)* zIp}=Qq7xRV8MeTrQJzKzN2rF?V|1}8LRH#9y>hVBK{smpn4*_E=#(+azpebQGHH|} zXvO8YiNQVBMv0WUM7*>|i#(=8HoHV(2tVU1t>}~f3YSPcrD>4^%E}IxNH5CMB7Ky| zZkI?3JpvIi(B!XF;x|!E5h}O_=j!~cGkQ^aSJB)&9c=pWsNKc?4a%C=UwUDF4^>}- z%ZXU>;sVJ7>34ZjmO%fh%c`EW(2c^s9ZGFHcw~CDtf%8 z`Nw@ZnYVvNQn99&tF}*;QcAlVbOigJDAsLzB-LsKeIj+fLm~b~rGTgZ0WANlJDJww z=M>_(Sf_-CnMx@CK?k)+gQ9rN;3R5^`~*ewtsAzYPmrc_8Hw95j;i6>F^viZDd{7` zzfpjv^y*=K<~YogpYaUGyGT`>{rD*#xS!9F^gy_TjU#b}m$jKbf}*D7FS5!g{Z!@F zZg2GH5o%<*!qC>cI2(V3QpST`YS7;p+BoB3dZR)AZH%&6RLrzF%Hkl(i7R#^l{5VW ziaK(Bca0O%-KiF|_&%bhucd?h{gB=_sXMUVzQ*L-M>#jaoOvxiLA4W`i>3mm&1VFQ zjAq1Z_e`7D;u{SbZ!LiyU_OA*nDLAED_r6i(d}N8lZPOCQaNIcIFlCy8l8vB`oiDr>nc z!=rsDM~G_y5uE2`i+;)V^tE3QQACI*u7aT%d2qA?j{F}q6ZuC{r;2H*Gx!#zLnl!3 zn$`4E`K_K8BltE>6g`sb!BDsr!V4yNUa{A1%Dm0|*lAE(ZFSgN<7J&PV;eaBhg3 z756h$vhnUzk1V>Eu@te?JhJcf^zfT6_x3f6Zl=+9BBVoxR;oeA(QME&C#vU29C3ex z-fZB^=}X&61Lq)CDxJtkSzuY7WV};ziZ*bTe@md2b*{u`im@?3ft(F+Dd;gf%fJU2 z@tMH3z?NPLztzK`aG2N2okY>?Ari)y(K3!Wz(fMe%7hH6l(ylXb z9=!TjfR7nCdmEwTJNwwD?BeTWQT&ZJaF!pfGSA)ET7Cn}!z%%>2XS^-1(Nt08w*s{}#m1(h;PAgWY#nzlwEcGc_ zyH$>ervMcZ^Fq^n#ARBH??W{&R;R@(Pb-$XOgVk$v|>}VSjlO{%Cy+_(~8wC^F-=5 z<}L1{9j6mdIRTcFnw>&pCytx1{FD;Wz_Xo0qD-QdPP9& zY^QRWL@S+Woi_RDX-%d+7!bO=z{Gb-?JPV1#kiyb(v zSn6_R?c39eP0?cComQ+&i+z7uu{wyMQSIes%_((-oHR~!ibQ8S(Xth2!_IKR32nH- zw3PC_T7W|WIQ|2I&5oxO{Z!x7ICff%_Ih3A2#|P`|AV}F9|=k$)U(jw$J)(mP~EeR zT2?;msO3;)FEo^3i|-USYY$JxM5vZo%T}k;h#u#Tne6AxAgJy+(P@=VH1&BoYt}ks zr%2R(-hq}q@2F&!gNwBN`ot*$l@5WJmdd+1P}kDDQqMUwr4%Q%n@c_EG1Jv=GNr1k zDPHpX*SrM(`gJ&Wo&TR>?qdoH5Xmtk-E%dofV zI~YJpl}chO8B5zo->>mjj*rmly?L?uxnEJz!?sP@{`!Dzcc~ zKb%^R3AAkk%#Wga7Q}xr*$Bb0VFd4>c^e_PnASt0?erMwtONe%<3`WGm<38BUG)#w zZ4zDjis!DFiW=#)PW3HQlWE&4o;5LLwWkJjH_dz1bDn)0z5c4_BF{LRj=$;|c=-V( zIZ7&swz~%*=<%-Glz&T#MOvvXKt^d1P^9 zx1S;OAK*q(xF+TQ%)luI|0)wrdc$_e!R#qb zTBbtKuRn1A&w!k}N#Dm!CHCWSb=|6D+VHyP%)EEOhqJ%AUN*8mMP&OAgt5OBcbQny z-RdWj0V2g2b>`o%WLbBs$Mq7T)_Zao<@q5OE~c{IWlXE2xEQXpQFhn)F6GA^)BZE1 zV$8{y604Q0JEjID+bG6j-d>1>3u){hGNfE1q{1*EWns}|Nq0zpo+TCIPllAVPRY7M zit8<9`^sjzg>QF-i)nM1nC6FxsUvQ4aZGMMfj-jDYL6I#w|F5J&QIK*vhL;(EDGc2 zzs>k*I7j;V)hGP)xwjcV3F zJypqOt8iy7T&u*XJBL@apf^fAXY|X>Ymx{%qda;yy(VQ*!^Jpd*Sm2$UH z#s*K1q*s-gyH9p2u^&;XuRJ~SAQsN~P<6X%l{6}5$fGD@^opdHO#UT=aFyJAv6Nd2 zH?MfkNaCLk2`4vkn3UUte+i6LDsL3z!o_n)#iQ@;@hY+es_uCHR({;AlQBa2>2Pv- zB;Jo(ec@U%pkxQgmb7rgE?nrdl-OMe9aZe}H_U|#z2O9F<5927czC>x;W48bvvoN# z(qCnZ-0~mDg)^J`kF-~&%_8SpdF~eB|F^{=?tyUND(R)47n(-55$=Py1`=QDT zgg-SZyjkmdX?A0TG&>n`;li)8rP-6Ml2r+_wau8_e3LZ0u(dRMs2Q_kTS&8qWX6rn zX79u|%)&K7;C5-YlQKI2a^a#Ks#p}v_5_MSsQ6~9OS}98>Mcp80*|ttQ>ol+5XZ>=x^?9Sv1dU#^G$08_X@c zO3B_W=f)38%ssf`=17x${c>&`fLypp4|Grs+D6J_MSd5N-iA9Y?A?8?5#Rxig#T0i zx~B)#ZSb_bDXiI8Y1W(@rOF*gGh%xW z)^5Oe@xsOS0ZrWwYuA7dXKng9r^LqAzEIZOvBgn6Tl=^fYrRvXwWyP^ZHKk1@SW^% zu}z_=J76sbbhy~k2b>ZcTl+{^bH}!s>e<@PW~?0=D6K7)UCMpB1J*9VhR3nF=fhPr z^?lD-{-+e}b~c69gTDT8(BVR#K1e#-!KRUTSKETzJx&iR^X~azQQA(J=YPEy&iv2} zX+E?V!hA&-^8@{|a_;D7(R!Ho&ufMrOZDu17U*!^dk>c0>)??SS8gkEcjYeY8ot{H z)6`usp9MOc`M6A1N5TBIFy`BI3tu@z5A%Imf(~bXl`>xelbkRPc41|@Us-dHgA;#9 zv6d&#FZ|KCs6|kx?7SAO|G;xrUVG5tJWm`VE0)f>NZf8ak-OXN>1NCyIxf_#mEwZq z`X`!kv-~3ICRIucHy?y?(-SZJgsTPaG*qGe&Hx>*7Q2=CiqO_(S79E#s;s%&55HLR zA%+_N`@wL|;%F-9>wTcZIa{oL#@lSNJz?rHNtt)gqZw4s=5K4p{ElI=sYdB_9wB}b z#{4_YM8BD)euSnfZ^nFFwlu#=_XJgbh_it9J;Jv|LsxDg{NrkQg4m}u)Wx_{7&wFOs7Yx=t> zm}a|SZE%9D`>DfZ>K@NoN$VBuUa;!;E<92<54}<4=`j{!;aaBbYU$Lx-rNs0_Y8|m z3?D@lrG1RS`l+JbQRLE8(AR$iI-K{-W2ENW7lcaZdi#|s6Fn`M&(BaHm zW2JfXe#>`Z%n$Aves~>9MLbCREjs=t&V3*j&P{{*3T|lmpvsTYamC82yW@6H{U_+S z_nL9qkS3kBY)u!ujE-x@Y400k-OTg4Lt*N6v>7*8c|XO>vp+@CEr&S2eA2=#PU}Cz40@^= zYq>W`Yd8lG2{$o6gSE8~XZ!Ba6QH!uF?RPWT3s$FU3}l2rh>lyOYKbB4$;$mSxJ#%7kBaXeh%`c#On9qv>-4gUrm-z~1J{KG(HvcYhE zBQ$*w_^~iP4r(8+mWrhMz34_SZZ3vvXZ#BN7wE=F(Bay7X_y+G2;)6NnRmDIP+I>b zyf1CWJ5CMYJuldd_XAXgaBa{#S2n5H z10L8pWvnUl?l#z~qR628Uh(v3Lpln|`wA~^HGJtwxc<>*T#r?*%>l-59=KiqsBOAB zKb7jgM(-YM#{6<+J{N7uiDwZ%OLUv}_72~0I5UR%K9QiqHJp_v!^suK`OLWTYb-eb zX~r6!+Ue=*0T2DJo^J}O~E=_J`@!}8Y`FB?b@p5RlZ7DU964~BdjLv zQ&!!5*`TcAcbLT8%EUghWloXHlHRA_hBj{b`NuRPH<709_nehDuNk^xlr$qAZ}v#q z+>F>>CH84o8P%a?y6Fu z%jeT?;1ee{!>^hz{Y260pLu#D{#S{)_qEMREK;nLdG|t03^!La>9@$?7TVun+>cMB zlGFI3+Kp?nR5;xfYd0>jQDNM43*%;sa-)|G9qkU~ru)eYz=-WE%dcy;_H19 v&HL7KPRv9?8L0u+gPiz1nWt$Rs5ZH;NGh6+ed`(2cGg`gsB`E7+>`%*O#S)k delta 40207 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 AtN;K2 diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o.d b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o.d index ba9843d..077cad4 100644 --- a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o.d +++ b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o.d @@ -1,7 +1,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: \ /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanInstanceManager.cpp \ /usr/include/stdc-predef.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanInstanceManager.hpp \ /usr/include/c++/15.2.1/vector \ /usr/include/c++/15.2.1/bits/requires_hosted.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h \ @@ -89,213 +89,76 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: \ /usr/include/vk_video/vulkan_video_codec_vp9std.h /usr/include/GL/gl.h \ /usr/include/GL/glext.h /usr/include/KHR/khrplatform.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDebugManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanCommandBuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /usr/include/glm/glm.hpp /usr/include/glm/detail/_fixes.hpp \ - /usr/include/c++/15.2.1/cmath /usr/include/math.h \ - /usr/include/bits/math-vector.h /usr/include/bits/libm-simd-decl-stubs.h \ - /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \ - /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ - /usr/include/bits/fp-fast.h /usr/include/bits/mathcalls-macros.h \ - /usr/include/bits/mathcalls-helper-functions.h \ - /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ - /usr/include/bits/iscanonical.h /usr/include/c++/15.2.1/bits/std_abs.h \ - /usr/include/stdlib.h /usr/include/bits/waitflags.h \ - /usr/include/bits/waitstatus.h /usr/include/bits/types/locale_t.h \ - /usr/include/bits/types/__locale_t.h /usr/include/sys/types.h \ - /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ - /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ - /usr/include/endian.h /usr/include/bits/endian.h \ - /usr/include/bits/endianness.h /usr/include/bits/byteswap.h \ - /usr/include/bits/uintn-identity.h /usr/include/sys/select.h \ - /usr/include/bits/select.h /usr/include/bits/types/sigset_t.h \ - /usr/include/bits/types/__sigset_t.h \ - /usr/include/bits/types/struct_timeval.h \ - /usr/include/bits/types/struct_timespec.h \ - /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ - /usr/include/bits/pthreadtypes-arch.h \ - /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ - /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ - /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ - /usr/include/c++/15.2.1/bits/specfun.h /usr/include/c++/15.2.1/limits \ - /usr/include/c++/15.2.1/tr1/gamma.tcc \ - /usr/include/c++/15.2.1/tr1/special_function_util.h \ - /usr/include/c++/15.2.1/tr1/bessel_function.tcc \ - /usr/include/c++/15.2.1/tr1/beta_function.tcc \ - /usr/include/c++/15.2.1/tr1/ell_integral.tcc \ - /usr/include/c++/15.2.1/tr1/exp_integral.tcc \ - /usr/include/c++/15.2.1/tr1/hypergeometric.tcc \ - /usr/include/c++/15.2.1/tr1/legendre_function.tcc \ - /usr/include/c++/15.2.1/tr1/modified_bessel_func.tcc \ - /usr/include/c++/15.2.1/tr1/poly_hermite.tcc \ - /usr/include/c++/15.2.1/tr1/poly_laguerre.tcc \ - /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc \ - /usr/include/glm/detail/setup.hpp /usr/include/c++/15.2.1/cassert \ - /usr/include/assert.h /usr/include/glm/simd/platform.h \ - /usr/include/c++/15.2.1/cstdint /usr/include/c++/15.2.1/climits \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/pthread_stack_min-dynamic.h \ - /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ - /usr/include/bits/uio_lim.h /usr/include/c++/15.2.1/cfloat \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h \ - /usr/include/glm/fwd.hpp /usr/include/glm/detail/qualifier.hpp \ - /usr/include/glm/detail/setup.hpp /usr/include/glm/vec2.hpp \ - /usr/include/glm/ext/vector_bool2.hpp \ - /usr/include/glm/detail/type_vec2.hpp \ - /usr/include/glm/detail/type_vec2.inl \ - /usr/include/glm/detail/compute_vector_relational.hpp \ - /usr/include/glm/ext/vector_bool2_precision.hpp \ - /usr/include/glm/ext/vector_float2.hpp \ - /usr/include/glm/ext/vector_float2_precision.hpp \ - /usr/include/glm/ext/vector_double2.hpp \ - /usr/include/glm/ext/vector_double2_precision.hpp \ - /usr/include/glm/ext/vector_int2.hpp \ - /usr/include/glm/ext/vector_int2_sized.hpp \ - /usr/include/glm/ext/scalar_int_sized.hpp \ - /usr/include/glm/detail/setup.hpp /usr/include/glm/ext/vector_uint2.hpp \ - /usr/include/glm/ext/vector_uint2_sized.hpp \ - /usr/include/glm/ext/scalar_uint_sized.hpp /usr/include/glm/vec3.hpp \ - /usr/include/glm/ext/vector_bool3.hpp \ - /usr/include/glm/detail/type_vec3.hpp \ - /usr/include/glm/detail/type_vec3.inl \ - /usr/include/glm/detail/compute_vector_decl.hpp \ - /usr/include/c++/15.2.1/functional \ - /usr/include/c++/15.2.1/bits/std_function.h \ - /usr/include/c++/15.2.1/typeinfo /usr/include/c++/15.2.1/unordered_map \ - /usr/include/c++/15.2.1/bits/unordered_map.h \ - /usr/include/c++/15.2.1/bits/hashtable.h \ - /usr/include/c++/15.2.1/bits/hashtable_policy.h \ - /usr/include/c++/15.2.1/ext/aligned_buffer.h \ - /usr/include/c++/15.2.1/bits/enable_special_members.h \ - /usr/include/c++/15.2.1/bits/node_handle.h \ - /usr/include/c++/15.2.1/bits/erase_if.h /usr/include/c++/15.2.1/array \ - /usr/include/glm/detail/_vectorize.hpp \ - /usr/include/glm/ext/vector_bool3_precision.hpp \ - /usr/include/glm/ext/vector_float3.hpp \ - /usr/include/glm/ext/vector_float3_precision.hpp \ - /usr/include/glm/ext/vector_double3.hpp \ - /usr/include/glm/ext/vector_double3_precision.hpp \ - /usr/include/glm/ext/vector_int3.hpp \ - /usr/include/glm/ext/vector_int3_sized.hpp \ - /usr/include/glm/ext/vector_uint3.hpp \ - /usr/include/glm/ext/vector_uint3_sized.hpp /usr/include/glm/vec4.hpp \ - /usr/include/glm/ext/vector_bool4.hpp \ - /usr/include/glm/detail/type_vec4.hpp \ - /usr/include/glm/detail/type_vec4.inl \ - /usr/include/glm/ext/vector_bool4_precision.hpp \ - /usr/include/glm/ext/vector_float4.hpp \ - /usr/include/glm/ext/vector_float4_precision.hpp \ - /usr/include/glm/ext/vector_double4.hpp \ - /usr/include/glm/ext/vector_double4_precision.hpp \ - /usr/include/glm/ext/vector_int4.hpp \ - /usr/include/glm/ext/vector_int4_sized.hpp \ - /usr/include/glm/ext/vector_uint4.hpp \ - /usr/include/glm/ext/vector_uint4_sized.hpp /usr/include/glm/mat2x2.hpp \ - /usr/include/glm/ext/matrix_double2x2.hpp \ - /usr/include/glm/detail/type_mat2x2.hpp \ - /usr/include/glm/detail/type_mat2x2.inl /usr/include/glm/matrix.hpp \ - /usr/include/glm/mat2x3.hpp /usr/include/glm/ext/matrix_double2x3.hpp \ - /usr/include/glm/detail/type_mat2x3.hpp \ - /usr/include/glm/detail/type_mat2x3.inl \ - /usr/include/glm/ext/matrix_double2x3_precision.hpp \ - /usr/include/glm/ext/matrix_float2x3.hpp \ - /usr/include/glm/ext/matrix_float2x3_precision.hpp \ - /usr/include/glm/mat2x4.hpp /usr/include/glm/ext/matrix_double2x4.hpp \ - /usr/include/glm/detail/type_mat2x4.hpp \ - /usr/include/glm/detail/type_mat2x4.inl \ - /usr/include/glm/ext/matrix_double2x4_precision.hpp \ - /usr/include/glm/ext/matrix_float2x4.hpp \ - /usr/include/glm/ext/matrix_float2x4_precision.hpp \ - /usr/include/glm/mat3x2.hpp /usr/include/glm/ext/matrix_double3x2.hpp \ - /usr/include/glm/detail/type_mat3x2.hpp \ - /usr/include/glm/detail/type_mat3x2.inl \ - /usr/include/glm/ext/matrix_double3x2_precision.hpp \ - /usr/include/glm/ext/matrix_float3x2.hpp \ - /usr/include/glm/ext/matrix_float3x2_precision.hpp \ - /usr/include/glm/mat3x3.hpp /usr/include/glm/ext/matrix_double3x3.hpp \ - /usr/include/glm/detail/type_mat3x3.hpp \ - /usr/include/glm/detail/type_mat3x3.inl /usr/include/glm/common.hpp \ - /usr/include/glm/detail/func_common.inl \ - /usr/include/glm/vector_relational.hpp \ - /usr/include/glm/detail/func_vector_relational.inl \ - /usr/include/glm/detail/compute_common.hpp \ - /usr/include/glm/detail/type_vec1.hpp \ - /usr/include/glm/detail/type_vec1.inl \ - /usr/include/glm/ext/matrix_double3x3_precision.hpp \ - /usr/include/glm/ext/matrix_float3x3.hpp \ - /usr/include/glm/ext/matrix_float3x3_precision.hpp \ - /usr/include/glm/mat3x4.hpp /usr/include/glm/ext/matrix_double3x4.hpp \ - /usr/include/glm/detail/type_mat3x4.hpp \ - /usr/include/glm/detail/type_mat3x4.inl \ - /usr/include/glm/ext/matrix_double3x4_precision.hpp \ - /usr/include/glm/ext/matrix_float3x4.hpp \ - /usr/include/glm/ext/matrix_float3x4_precision.hpp \ - /usr/include/glm/mat4x2.hpp /usr/include/glm/ext/matrix_double4x2.hpp \ - /usr/include/glm/detail/type_mat4x2.hpp \ - /usr/include/glm/detail/type_mat4x2.inl \ - /usr/include/glm/ext/matrix_double4x2_precision.hpp \ - /usr/include/glm/ext/matrix_float4x2.hpp \ - /usr/include/glm/ext/matrix_float4x2_precision.hpp \ - /usr/include/glm/mat4x3.hpp /usr/include/glm/ext/matrix_double4x3.hpp \ - /usr/include/glm/detail/type_mat4x3.hpp \ - /usr/include/glm/detail/type_mat4x3.inl \ - /usr/include/glm/ext/matrix_double4x3_precision.hpp \ - /usr/include/glm/ext/matrix_float4x3.hpp \ - /usr/include/glm/ext/matrix_float4x3_precision.hpp \ - /usr/include/glm/mat4x4.hpp /usr/include/glm/ext/matrix_double4x4.hpp \ - /usr/include/glm/detail/type_mat4x4.hpp \ - /usr/include/glm/detail/type_mat4x4.inl /usr/include/glm/geometric.hpp \ - /usr/include/glm/detail/func_geometric.inl \ - /usr/include/glm/exponential.hpp \ - /usr/include/glm/detail/func_exponential.inl \ - /usr/include/glm/ext/matrix_double4x4_precision.hpp \ - /usr/include/glm/ext/matrix_float4x4.hpp \ - /usr/include/glm/ext/matrix_float4x4_precision.hpp \ - /usr/include/glm/detail/func_matrix.inl \ - /usr/include/glm/ext/matrix_double2x2_precision.hpp \ - /usr/include/glm/ext/matrix_float2x2.hpp \ - /usr/include/glm/ext/matrix_float2x2_precision.hpp \ - /usr/include/glm/trigonometric.hpp \ - /usr/include/glm/detail/func_trigonometric.inl \ - /usr/include/glm/packing.hpp /usr/include/glm/detail/func_packing.inl \ - /usr/include/glm/detail/type_half.hpp \ - /usr/include/glm/detail/type_half.inl /usr/include/glm/integer.hpp \ - /usr/include/glm/detail/func_integer.inl \ - /usr/include/vulkan/vulkan_core.h /usr/include/c++/15.2.1/optional \ - /usr/include/c++/15.2.1/exception \ - /usr/include/c++/15.2.1/bits/exception_ptr.h \ - /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ - /usr/include/c++/15.2.1/bits/nested_exception.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanFramebuffers.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanDeviceManager.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanPipeline.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanRenderPass.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ - /usr/include/c++/15.2.1/string /usr/include/c++/15.2.1/bits/stringfwd.h \ - /usr/include/c++/15.2.1/bits/char_traits.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanContext.hpp \ + /usr/include/c++/15.2.1/cstdint /usr/include/c++/15.2.1/memory \ + /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ + /usr/include/c++/15.2.1/bits/stl_raw_storage_iter.h \ + /usr/include/c++/15.2.1/bits/align.h \ + /usr/include/c++/15.2.1/bits/unique_ptr.h \ + /usr/include/c++/15.2.1/bits/ostream.h /usr/include/c++/15.2.1/ios \ + /usr/include/c++/15.2.1/iosfwd /usr/include/c++/15.2.1/bits/stringfwd.h \ /usr/include/c++/15.2.1/bits/postypes.h /usr/include/c++/15.2.1/cwchar \ - /usr/include/wchar.h \ + /usr/include/wchar.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h \ /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ /usr/include/bits/types/wint_t.h /usr/include/bits/types/mbstate_t.h \ /usr/include/bits/types/__mbstate_t.h /usr/include/bits/types/__FILE.h \ - /usr/include/bits/types/FILE.h /usr/include/c++/15.2.1/bits/localefwd.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/__locale_t.h /usr/include/c++/15.2.1/exception \ + /usr/include/c++/15.2.1/bits/exception_ptr.h \ + /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ + /usr/include/c++/15.2.1/typeinfo \ + /usr/include/c++/15.2.1/bits/nested_exception.h \ + /usr/include/c++/15.2.1/bits/char_traits.h \ + /usr/include/c++/15.2.1/bits/localefwd.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++locale.h \ /usr/include/c++/15.2.1/clocale /usr/include/locale.h \ - /usr/include/bits/locale.h /usr/include/c++/15.2.1/iosfwd \ - /usr/include/c++/15.2.1/cctype /usr/include/ctype.h \ + /usr/include/bits/locale.h /usr/include/c++/15.2.1/cctype \ + /usr/include/ctype.h /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h /usr/include/c++/15.2.1/bits/ios_base.h \ + /usr/include/c++/15.2.1/ext/atomicity.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/struct_timespec.h /usr/include/bits/sched.h \ + /usr/include/linux/sched/types.h /usr/include/linux/types.h \ + /usr/include/asm/types.h /usr/include/asm-generic/types.h \ + /usr/include/asm-generic/int-ll64.h /usr/include/asm/bitsperlong.h \ + /usr/include/asm-generic/bitsperlong.h /usr/include/linux/posix_types.h \ + /usr/include/linux/stddef.h /usr/include/asm/posix_types.h \ + /usr/include/asm/posix_types_64.h /usr/include/asm-generic/posix_types.h \ + /usr/include/bits/types/struct_sched_param.h /usr/include/bits/cpu-set.h \ + /usr/include/time.h /usr/include/bits/time.h /usr/include/bits/timex.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/clock_t.h /usr/include/bits/types/struct_tm.h \ + /usr/include/bits/types/clockid_t.h /usr/include/bits/types/timer_t.h \ + /usr/include/bits/types/struct_itimerspec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h \ + /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/bits/setjmp.h \ + /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct___jmp_buf_tag.h \ + /usr/include/bits/pthread_stack_min-dynamic.h \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ + /usr/include/sys/single_threaded.h \ + /usr/include/c++/15.2.1/bits/locale_classes.h \ + /usr/include/c++/15.2.1/string \ /usr/include/c++/15.2.1/bits/ostream_insert.h \ /usr/include/c++/15.2.1/bits/cxxabi_forced.h \ /usr/include/c++/15.2.1/bits/basic_string.h \ /usr/include/c++/15.2.1/string_view \ /usr/include/c++/15.2.1/bits/string_view.tcc \ /usr/include/c++/15.2.1/ext/string_conversions.h \ - /usr/include/c++/15.2.1/cstdlib /usr/include/c++/15.2.1/cstdio \ + /usr/include/c++/15.2.1/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/c++/15.2.1/bits/std_abs.h /usr/include/c++/15.2.1/cstdio \ /usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \ /usr/include/bits/types/__fpos64_t.h \ /usr/include/bits/types/struct_FILE.h \ @@ -307,56 +170,69 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanInstanceManager.cpp.o: \ /usr/include/asm-generic/errno-base.h /usr/include/bits/types/error_t.h \ /usr/include/c++/15.2.1/bits/charconv.h \ /usr/include/c++/15.2.1/bits/basic_string.tcc \ - /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/format \ - /usr/include/c++/15.2.1/charconv \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/error_constants.h \ - /usr/include/c++/15.2.1/locale \ - /usr/include/c++/15.2.1/bits/locale_classes.h \ - /usr/include/c++/15.2.1/ext/atomicity.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \ - /usr/include/linux/sched/types.h /usr/include/linux/types.h \ - /usr/include/asm/types.h /usr/include/asm-generic/types.h \ - /usr/include/asm-generic/int-ll64.h /usr/include/asm/bitsperlong.h \ - /usr/include/asm-generic/bitsperlong.h /usr/include/linux/posix_types.h \ - /usr/include/linux/stddef.h /usr/include/asm/posix_types.h \ - /usr/include/asm/posix_types_64.h /usr/include/asm-generic/posix_types.h \ - /usr/include/bits/types/struct_sched_param.h /usr/include/bits/cpu-set.h \ - /usr/include/time.h /usr/include/bits/time.h /usr/include/bits/timex.h \ - /usr/include/bits/types/struct_tm.h \ - /usr/include/bits/types/struct_itimerspec.h /usr/include/bits/setjmp.h \ - /usr/include/bits/types/struct___jmp_buf_tag.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ - /usr/include/sys/single_threaded.h \ /usr/include/c++/15.2.1/bits/locale_classes.tcc \ + /usr/include/c++/15.2.1/system_error \ + /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/error_constants.h \ + /usr/include/c++/15.2.1/stdexcept /usr/include/c++/15.2.1/streambuf \ + /usr/include/c++/15.2.1/bits/streambuf.tcc \ + /usr/include/c++/15.2.1/bits/basic_ios.h \ /usr/include/c++/15.2.1/bits/locale_facets.h \ /usr/include/c++/15.2.1/cwctype /usr/include/wctype.h \ /usr/include/bits/wctype-wchar.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_base.h \ - /usr/include/c++/15.2.1/bits/ios_base.h \ - /usr/include/c++/15.2.1/system_error /usr/include/c++/15.2.1/stdexcept \ - /usr/include/c++/15.2.1/streambuf \ - /usr/include/c++/15.2.1/bits/streambuf.tcc \ /usr/include/c++/15.2.1/bits/streambuf_iterator.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_inline.h \ /usr/include/c++/15.2.1/bits/locale_facets.tcc \ + /usr/include/c++/15.2.1/bits/basic_ios.tcc \ + /usr/include/c++/15.2.1/bits/shared_ptr.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_base.h \ + /usr/include/c++/15.2.1/bits/allocated_ptr.h \ + /usr/include/c++/15.2.1/ext/aligned_buffer.h \ + /usr/include/c++/15.2.1/ext/concurrence.h \ + /usr/include/c++/15.2.1/bits/shared_ptr_atomic.h \ + /usr/include/c++/15.2.1/bits/atomic_base.h \ + /usr/include/c++/15.2.1/bits/atomic_lockfree_defines.h \ + /usr/include/c++/15.2.1/bits/atomic_wait.h \ + /usr/include/c++/15.2.1/climits \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/uio_lim.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/bits/getopt_posix.h \ + /usr/include/bits/getopt_core.h /usr/include/bits/unistd_ext.h \ + /usr/include/linux/close_range.h /usr/include/syscall.h \ + /usr/include/sys/syscall.h /usr/include/asm/unistd.h \ + /usr/include/asm/unistd_64.h /usr/include/bits/syscall.h \ + /usr/include/c++/15.2.1/bits/std_mutex.h \ + /usr/include/c++/15.2.1/backward/auto_ptr.h \ + /usr/include/c++/15.2.1/bits/ranges_uninitialized.h \ + /usr/include/c++/15.2.1/bits/ranges_algobase.h \ + /usr/include/c++/15.2.1/pstl/glue_memory_defs.h \ + /usr/include/c++/15.2.1/pstl/execution_defs.h \ + /usr/include/vulkan/vulkan_core.h \ + /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ + /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/format \ + /usr/include/c++/15.2.1/array /usr/include/c++/15.2.1/charconv \ + /usr/include/c++/15.2.1/limits /usr/include/c++/15.2.1/locale \ /usr/include/c++/15.2.1/bits/locale_facets_nonio.h \ /usr/include/c++/15.2.1/ctime \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/messages_members.h \ /usr/include/libintl.h /usr/include/c++/15.2.1/bits/codecvt.h \ /usr/include/c++/15.2.1/bits/locale_facets_nonio.tcc \ - /usr/include/c++/15.2.1/bits/locale_conv.h /usr/include/c++/15.2.1/span \ - /usr/include/c++/15.2.1/bits/monostate.h \ + /usr/include/c++/15.2.1/bits/locale_conv.h \ + /usr/include/c++/15.2.1/optional \ + /usr/include/c++/15.2.1/bits/enable_special_members.h \ + /usr/include/c++/15.2.1/span /usr/include/c++/15.2.1/bits/monostate.h \ /usr/include/c++/15.2.1/bits/formatfwd.h \ - /usr/include/c++/15.2.1/bits/ranges_algobase.h \ /usr/include/c++/15.2.1/bits/unicode.h \ /usr/include/c++/15.2.1/bits/stl_algo.h \ /usr/include/c++/15.2.1/bits/algorithmfwd.h \ /usr/include/c++/15.2.1/bits/stl_heap.h \ /usr/include/c++/15.2.1/bits/uniform_int_dist.h \ - /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ /usr/include/c++/15.2.1/bits/unicode-data.h \ /usr/include/c++/15.2.1/cstring /usr/include/string.h \ /usr/include/strings.h diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanPipeline.cpp.o index 47c9bdd84052674e675fe8e05d00eeabcf6f1fba..f374f8b1789b6af3956974fa0c3162302e9dfb88 100644 GIT binary patch delta 22765 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 delta 22851 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

  • 737)~vu=C692uG8?;DhcFKLzeq7) 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 R_t;N$S-mXTpqI>q{|lbu_SFCY delta 20004 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 Y&pya`%N*FXc%uEdmom(fF}lV64-(|=oB#j- diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o.d b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o.d index b5d9530..55066a9 100644 --- a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o.d +++ b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o.d @@ -191,4 +191,5 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanRenderPass.cpp.o: \ /usr/include/c++/15.2.1/bits/stl_heap.h \ /usr/include/c++/15.2.1/bits/uniform_int_dist.h \ /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ - /usr/include/c++/15.2.1/bits/unicode-data.h + /usr/include/c++/15.2.1/bits/unicode-data.h \ + /usr/include/vulkan/vulkan_core.h diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o index 57053b6ae70527a9bcc1e486d9d1329de9665b96..f3b02b4081e31c28184b422ab67c2b0728608a22 100644 GIT binary patch delta 66606 zcmd?S33OCN^EZ6&WFdqkH^`O%fdB(0vY04aWJ@4{J2HboP$LQi5kw`*5(FQC30Wk= zFbZCwaY5m6Lj^@q_9cN3Kmh?2c~mx6hD}7-m%P8~+jr6v!;= zfDJ=FT$FQ>j}YZYkdMUYQSm$)`D3E|xT3UCo)8b?kxvlieB_fv`5EMs=Wb{oJskx% zJ_Y#9nEP$pyjduC@gWv{_`D#>FCw2K%5#ywB+3TzmqmFV^7*2?0QoDT{Hn-bL;kub zzlnU2F+%O-rk*~;XQ{v}L;jH{e}eo|d{*G|nSgzcd?h}s@L4TjYml$SXB|H41#AQI zjreTBrwkwJryQTnqFjM|D~-Mqg>3@3UF18Ee}T`J`0Nz0UC4Kf@*d=SMR_0cuSNMA zBv(_gvAvW9?maPnW;6rxo4vK!nqqZ%=o6^CEQ5J+WHd zeu+S&$7Xu^#o-}^9umFjDVd&ontJ+W1C;J;o2O{SG#^gSA0%hR;i(wy(4MO3?+a}= zS{qxYd-{yg>h{Uey^|ETPNb91=_RMM7fADT&vB>ccc=O*Z>oEq%pI-$QReVI72#;x z0j)KQ0y1L8k<--E1gC-7dXCh#BGhNd?U!fP1zS|d- zL>=g!{!>7CJ6cfE>K2un8Ld4$(c*Y$XvV`CLotNWy&Bf)lEb}FR9Acbngo4Mo+#D7J8%LT}ORcIO@>E5$d^d z7Q7%BoP>l7l@%NxIB$99MI$C?AT=(VM6Fp9Qj_z~X zW4C466E)OBo=f$SkD+|Dwm;LJju9zJNtsqmrb+jO(c`8BBeiZlcT*HcYfp1fWqMQe zyG^Sbfasn~`#7y`dX&Dc*j|9DR9y%0DZBt|#IcvIL%80l_K1xMK=Q6gYh!iq%X|cn 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

    ?ZUBYb#dc* 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 delta 71164 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 WSltF&n!T&KF0IxDvmj5cZvPvxCo*~f diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o.d b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o.d index 592e367..ecd834c 100644 --- a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o.d +++ b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o.d @@ -2,7 +2,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: \ /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanSwapChain.cpp \ /usr/include/stdc-predef.h \ /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanSwapChain.h \ - /usr/include/c++/15.2.1/optional /usr/include/c++/15.2.1/bits/version.h \ + /usr/include/c++/15.2.1/cstdint \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/os_defines.h \ /usr/include/features.h /usr/include/features-time64.h \ @@ -11,38 +11,35 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: \ /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/cpu_defines.h \ /usr/include/c++/15.2.1/pstl/pstl_config.h \ - /usr/include/c++/15.2.1/type_traits /usr/include/c++/15.2.1/exception \ - /usr/include/c++/15.2.1/bits/exception.h \ - /usr/include/c++/15.2.1/bits/exception_ptr.h \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/libc-header-start.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h /usr/include/bits/wchar.h \ + /usr/include/bits/stdint-intn.h /usr/include/bits/stdint-uintn.h \ + /usr/include/bits/stdint-least.h /usr/include/c++/15.2.1/vector \ + /usr/include/c++/15.2.1/bits/requires_hosted.h \ + /usr/include/c++/15.2.1/bits/stl_algobase.h \ + /usr/include/c++/15.2.1/bits/functexcept.h \ /usr/include/c++/15.2.1/bits/exception_defines.h \ - /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ - /usr/include/c++/15.2.1/typeinfo \ - /usr/include/c++/15.2.1/bits/hash_bytes.h /usr/include/c++/15.2.1/new \ + /usr/include/c++/15.2.1/bits/cpp_type_traits.h \ + /usr/include/c++/15.2.1/bits/version.h \ + /usr/include/c++/15.2.1/type_traits \ + /usr/include/c++/15.2.1/ext/type_traits.h \ + /usr/include/c++/15.2.1/ext/numeric_traits.h \ + /usr/include/c++/15.2.1/bits/stl_pair.h \ /usr/include/c++/15.2.1/bits/move.h \ - /usr/include/c++/15.2.1/bits/nested_exception.h \ - /usr/include/c++/15.2.1/initializer_list \ - /usr/include/c++/15.2.1/bits/enable_special_members.h \ - /usr/include/c++/15.2.1/bits/functional_hash.h \ - /usr/include/c++/15.2.1/bits/stl_construct.h \ + /usr/include/c++/15.2.1/bits/utility.h /usr/include/c++/15.2.1/compare \ + /usr/include/c++/15.2.1/concepts \ /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h \ /usr/include/c++/15.2.1/bits/iterator_concepts.h \ - /usr/include/c++/15.2.1/concepts \ /usr/include/c++/15.2.1/bits/ptr_traits.h \ /usr/include/c++/15.2.1/bits/ranges_cmp.h \ /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h \ /usr/include/c++/15.2.1/bits/concept_check.h \ /usr/include/c++/15.2.1/debug/assertions.h \ - /usr/include/c++/15.2.1/bits/utility.h /usr/include/c++/15.2.1/compare \ - /usr/include/c++/15.2.1/bits/invoke.h /usr/include/c++/15.2.1/vector \ - /usr/include/c++/15.2.1/bits/requires_hosted.h \ - /usr/include/c++/15.2.1/bits/stl_algobase.h \ - /usr/include/c++/15.2.1/bits/functexcept.h \ - /usr/include/c++/15.2.1/bits/cpp_type_traits.h \ - /usr/include/c++/15.2.1/ext/type_traits.h \ - /usr/include/c++/15.2.1/ext/numeric_traits.h \ - /usr/include/c++/15.2.1/bits/stl_pair.h \ - /usr/include/c++/15.2.1/bits/stl_iterator.h \ + /usr/include/c++/15.2.1/bits/stl_iterator.h /usr/include/c++/15.2.1/new \ + /usr/include/c++/15.2.1/bits/exception.h \ + /usr/include/c++/15.2.1/bits/stl_construct.h \ /usr/include/c++/15.2.1/debug/debug.h \ /usr/include/c++/15.2.1/bits/predefined_ops.h \ /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/bits/allocator.h \ @@ -53,27 +50,26 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: \ /usr/include/c++/15.2.1/ext/alloc_traits.h \ /usr/include/c++/15.2.1/bits/alloc_traits.h \ /usr/include/c++/15.2.1/bits/stl_vector.h \ + /usr/include/c++/15.2.1/initializer_list \ /usr/include/c++/15.2.1/bits/ranges_base.h \ /usr/include/c++/15.2.1/bits/max_size_type.h \ /usr/include/c++/15.2.1/numbers \ /usr/include/c++/15.2.1/bits/stl_bvector.h \ + /usr/include/c++/15.2.1/bits/functional_hash.h \ + /usr/include/c++/15.2.1/bits/hash_bytes.h \ /usr/include/c++/15.2.1/bits/refwrap.h \ + /usr/include/c++/15.2.1/bits/invoke.h \ /usr/include/c++/15.2.1/bits/stl_function.h \ /usr/include/c++/15.2.1/backward/binders.h \ /usr/include/c++/15.2.1/bits/range_access.h \ /usr/include/c++/15.2.1/bits/vector.tcc \ /usr/include/c++/15.2.1/bits/memory_resource.h \ /usr/include/c++/15.2.1/cstddef \ + /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ /usr/include/c++/15.2.1/bits/uses_allocator.h \ /usr/include/c++/15.2.1/bits/uses_allocator_args.h \ /usr/include/c++/15.2.1/tuple /usr/include/c++/15.2.1/bits/ranges_util.h \ /usr/include/vulkan/vulkan_core.h /usr/include/vulkan/vk_platform.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ - /usr/include/stdint.h /usr/include/bits/libc-header-start.h \ - /usr/include/bits/types.h /usr/include/bits/typesizes.h \ - /usr/include/bits/time64.h /usr/include/bits/wchar.h \ - /usr/include/bits/stdint-intn.h /usr/include/bits/stdint-uintn.h \ - /usr/include/bits/stdint-least.h \ /usr/include/vk_video/vulkan_video_codec_h264std.h \ /usr/include/vk_video/vulkan_video_codecs_common.h \ /usr/include/vk_video/vulkan_video_codec_h264std_encode.h \ @@ -93,8 +89,7 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: \ /usr/include/GLFW/glfw3.h /usr/include/vulkan/vulkan.h \ /usr/include/vulkan/vulkan_core.h /usr/include/GL/gl.h \ /usr/include/GL/glext.h /usr/include/KHR/khrplatform.h \ - /usr/include/c++/15.2.1/cstdint /usr/include/c++/15.2.1/limits \ - /usr/include/c++/15.2.1/algorithm \ + /usr/include/c++/15.2.1/limits /usr/include/c++/15.2.1/algorithm \ /usr/include/c++/15.2.1/bits/stl_algo.h \ /usr/include/c++/15.2.1/bits/algorithmfwd.h \ /usr/include/c++/15.2.1/bits/stl_heap.h \ @@ -183,6 +178,11 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_base.h \ /usr/include/c++/15.2.1/bits/ios_base.h \ /usr/include/c++/15.2.1/system_error /usr/include/c++/15.2.1/stdexcept \ + /usr/include/c++/15.2.1/exception \ + /usr/include/c++/15.2.1/bits/exception_ptr.h \ + /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ + /usr/include/c++/15.2.1/typeinfo \ + /usr/include/c++/15.2.1/bits/nested_exception.h \ /usr/include/c++/15.2.1/streambuf \ /usr/include/c++/15.2.1/bits/streambuf.tcc \ /usr/include/c++/15.2.1/bits/streambuf_iterator.h \ @@ -194,8 +194,10 @@ CMakeFiles/LearningVulkan.dir/src/private/VulkanSwapChain.cpp.o: \ /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/messages_members.h \ /usr/include/libintl.h /usr/include/c++/15.2.1/bits/codecvt.h \ /usr/include/c++/15.2.1/bits/locale_facets_nonio.tcc \ - /usr/include/c++/15.2.1/bits/locale_conv.h /usr/include/c++/15.2.1/span \ - /usr/include/c++/15.2.1/bits/monostate.h \ + /usr/include/c++/15.2.1/bits/locale_conv.h \ + /usr/include/c++/15.2.1/optional \ + /usr/include/c++/15.2.1/bits/enable_special_members.h \ + /usr/include/c++/15.2.1/span /usr/include/c++/15.2.1/bits/monostate.h \ /usr/include/c++/15.2.1/bits/formatfwd.h \ /usr/include/c++/15.2.1/bits/unicode.h \ /usr/include/c++/15.2.1/bits/unicode-data.h diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o deleted file mode 100644 index 3f9c606061c264d9807ce45cab2690a57aa094d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 189440 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 M^>^ftlP~{&0L}TtV*mgE diff --git a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o.d b/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o.d deleted file mode 100644 index 81beb10..0000000 --- a/build/CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o.d +++ /dev/null @@ -1,355 +0,0 @@ -CMakeFiles/LearningVulkan.dir/src/private/VulkanVertexBuffer.cpp.o: \ - /home/Jordan/Projects/CPP/LearningVulkan/src/private/VulkanVertexBuffer.cpp \ - /usr/include/stdc-predef.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/VulkanVertexBuffer.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/public/Primitives.h \ - /usr/include/glm/glm.hpp /usr/include/glm/detail/_fixes.hpp \ - /usr/include/c++/15.2.1/cmath \ - /usr/include/c++/15.2.1/bits/requires_hosted.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++config.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/os_defines.h \ - /usr/include/features.h /usr/include/features-time64.h \ - /usr/include/bits/wordsize.h /usr/include/bits/timesize.h \ - /usr/include/sys/cdefs.h /usr/include/bits/long-double.h \ - /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/cpu_defines.h \ - /usr/include/c++/15.2.1/pstl/pstl_config.h \ - /usr/include/c++/15.2.1/bits/cpp_type_traits.h \ - /usr/include/c++/15.2.1/bits/version.h \ - /usr/include/c++/15.2.1/type_traits \ - /usr/include/c++/15.2.1/ext/type_traits.h /usr/include/math.h \ - /usr/include/bits/libc-header-start.h /usr/include/bits/math-vector.h \ - /usr/include/bits/libm-simd-decl-stubs.h /usr/include/bits/floatn.h \ - /usr/include/bits/floatn-common.h /usr/include/bits/flt-eval-method.h \ - /usr/include/bits/fp-logb.h /usr/include/bits/fp-fast.h \ - /usr/include/bits/mathcalls-macros.h \ - /usr/include/bits/mathcalls-helper-functions.h \ - /usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \ - /usr/include/bits/iscanonical.h /usr/include/c++/15.2.1/bits/std_abs.h \ - /usr/include/stdlib.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stddef.h \ - /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ - /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ - /usr/include/sys/types.h /usr/include/bits/types.h \ - /usr/include/bits/typesizes.h /usr/include/bits/time64.h \ - /usr/include/bits/types/clock_t.h /usr/include/bits/types/clockid_t.h \ - /usr/include/bits/types/time_t.h /usr/include/bits/types/timer_t.h \ - /usr/include/bits/stdint-intn.h /usr/include/endian.h \ - /usr/include/bits/endian.h /usr/include/bits/endianness.h \ - /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ - /usr/include/sys/select.h /usr/include/bits/select.h \ - /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ - /usr/include/bits/types/struct_timeval.h \ - /usr/include/bits/types/struct_timespec.h \ - /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ - /usr/include/bits/pthreadtypes-arch.h \ - /usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \ - /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ - /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ - /usr/include/c++/15.2.1/bits/specfun.h \ - /usr/include/c++/15.2.1/bits/stl_algobase.h \ - /usr/include/c++/15.2.1/bits/functexcept.h \ - /usr/include/c++/15.2.1/bits/exception_defines.h \ - /usr/include/c++/15.2.1/ext/numeric_traits.h \ - /usr/include/c++/15.2.1/bits/stl_pair.h \ - /usr/include/c++/15.2.1/bits/move.h \ - /usr/include/c++/15.2.1/bits/utility.h /usr/include/c++/15.2.1/compare \ - /usr/include/c++/15.2.1/concepts \ - /usr/include/c++/15.2.1/bits/stl_iterator_base_types.h \ - /usr/include/c++/15.2.1/bits/iterator_concepts.h \ - /usr/include/c++/15.2.1/bits/ptr_traits.h \ - /usr/include/c++/15.2.1/bits/ranges_cmp.h \ - /usr/include/c++/15.2.1/bits/stl_iterator_base_funcs.h \ - /usr/include/c++/15.2.1/bits/concept_check.h \ - /usr/include/c++/15.2.1/debug/assertions.h \ - /usr/include/c++/15.2.1/bits/stl_iterator.h /usr/include/c++/15.2.1/new \ - /usr/include/c++/15.2.1/bits/exception.h \ - /usr/include/c++/15.2.1/bits/stl_construct.h \ - /usr/include/c++/15.2.1/debug/debug.h \ - /usr/include/c++/15.2.1/bits/predefined_ops.h \ - /usr/include/c++/15.2.1/bit /usr/include/c++/15.2.1/limits \ - /usr/include/c++/15.2.1/tr1/gamma.tcc \ - /usr/include/c++/15.2.1/tr1/special_function_util.h \ - /usr/include/c++/15.2.1/tr1/bessel_function.tcc \ - /usr/include/c++/15.2.1/tr1/beta_function.tcc \ - /usr/include/c++/15.2.1/tr1/ell_integral.tcc \ - /usr/include/c++/15.2.1/tr1/exp_integral.tcc \ - /usr/include/c++/15.2.1/tr1/hypergeometric.tcc \ - /usr/include/c++/15.2.1/tr1/legendre_function.tcc \ - /usr/include/c++/15.2.1/tr1/modified_bessel_func.tcc \ - /usr/include/c++/15.2.1/tr1/poly_hermite.tcc \ - /usr/include/c++/15.2.1/tr1/poly_laguerre.tcc \ - /usr/include/c++/15.2.1/tr1/riemann_zeta.tcc \ - /usr/include/glm/detail/setup.hpp /usr/include/c++/15.2.1/cassert \ - /usr/include/assert.h /usr/include/c++/15.2.1/cstddef \ - /usr/include/glm/simd/platform.h /usr/include/c++/15.2.1/cstdint \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdint.h \ - /usr/include/stdint.h /usr/include/bits/wchar.h \ - /usr/include/bits/stdint-uintn.h /usr/include/bits/stdint-least.h \ - /usr/include/c++/15.2.1/climits \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/limits.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/syslimits.h \ - /usr/include/limits.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/pthread_stack_min-dynamic.h \ - /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ - /usr/include/bits/uio_lim.h /usr/include/c++/15.2.1/cfloat \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/float.h \ - /usr/include/glm/fwd.hpp /usr/include/glm/detail/qualifier.hpp \ - /usr/include/glm/detail/setup.hpp /usr/include/glm/vec2.hpp \ - /usr/include/glm/ext/vector_bool2.hpp \ - /usr/include/glm/detail/type_vec2.hpp \ - /usr/include/glm/detail/type_vec2.inl \ - /usr/include/glm/detail/compute_vector_relational.hpp \ - /usr/include/glm/ext/vector_bool2_precision.hpp \ - /usr/include/glm/ext/vector_float2.hpp \ - /usr/include/glm/ext/vector_float2_precision.hpp \ - /usr/include/glm/ext/vector_double2.hpp \ - /usr/include/glm/ext/vector_double2_precision.hpp \ - /usr/include/glm/ext/vector_int2.hpp \ - /usr/include/glm/ext/vector_int2_sized.hpp \ - /usr/include/glm/ext/scalar_int_sized.hpp \ - /usr/include/glm/detail/setup.hpp /usr/include/glm/ext/vector_uint2.hpp \ - /usr/include/glm/ext/vector_uint2_sized.hpp \ - /usr/include/glm/ext/scalar_uint_sized.hpp /usr/include/glm/vec3.hpp \ - /usr/include/glm/ext/vector_bool3.hpp \ - /usr/include/glm/detail/type_vec3.hpp \ - /usr/include/glm/detail/type_vec3.inl \ - /usr/include/glm/detail/compute_vector_decl.hpp \ - /usr/include/c++/15.2.1/functional \ - /usr/include/c++/15.2.1/bits/stl_function.h \ - /usr/include/c++/15.2.1/backward/binders.h /usr/include/c++/15.2.1/tuple \ - /usr/include/c++/15.2.1/bits/uses_allocator.h \ - /usr/include/c++/15.2.1/bits/invoke.h \ - /usr/include/c++/15.2.1/bits/ranges_util.h \ - /usr/include/c++/15.2.1/bits/ranges_base.h \ - /usr/include/c++/15.2.1/initializer_list \ - /usr/include/c++/15.2.1/bits/max_size_type.h \ - /usr/include/c++/15.2.1/numbers \ - /usr/include/c++/15.2.1/bits/functional_hash.h \ - /usr/include/c++/15.2.1/bits/hash_bytes.h \ - /usr/include/c++/15.2.1/bits/refwrap.h \ - /usr/include/c++/15.2.1/bits/std_function.h \ - /usr/include/c++/15.2.1/typeinfo /usr/include/c++/15.2.1/unordered_map \ - /usr/include/c++/15.2.1/bits/unordered_map.h \ - /usr/include/c++/15.2.1/bits/hashtable.h \ - /usr/include/c++/15.2.1/bits/hashtable_policy.h \ - /usr/include/c++/15.2.1/ext/aligned_buffer.h \ - /usr/include/c++/15.2.1/ext/alloc_traits.h \ - /usr/include/c++/15.2.1/bits/alloc_traits.h \ - /usr/include/c++/15.2.1/bits/memoryfwd.h \ - /usr/include/c++/15.2.1/bits/allocator.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++allocator.h \ - /usr/include/c++/15.2.1/bits/new_allocator.h \ - /usr/include/c++/15.2.1/bits/enable_special_members.h \ - /usr/include/c++/15.2.1/bits/node_handle.h \ - /usr/include/c++/15.2.1/bits/range_access.h \ - /usr/include/c++/15.2.1/bits/erase_if.h \ - /usr/include/c++/15.2.1/bits/memory_resource.h \ - /usr/include/c++/15.2.1/bits/uses_allocator_args.h \ - /usr/include/c++/15.2.1/vector \ - /usr/include/c++/15.2.1/bits/stl_uninitialized.h \ - /usr/include/c++/15.2.1/bits/stl_vector.h \ - /usr/include/c++/15.2.1/bits/stl_bvector.h \ - /usr/include/c++/15.2.1/bits/vector.tcc /usr/include/c++/15.2.1/array \ - /usr/include/glm/detail/_vectorize.hpp \ - /usr/include/glm/ext/vector_bool3_precision.hpp \ - /usr/include/glm/ext/vector_float3.hpp \ - /usr/include/glm/ext/vector_float3_precision.hpp \ - /usr/include/glm/ext/vector_double3.hpp \ - /usr/include/glm/ext/vector_double3_precision.hpp \ - /usr/include/glm/ext/vector_int3.hpp \ - /usr/include/glm/ext/vector_int3_sized.hpp \ - /usr/include/glm/ext/vector_uint3.hpp \ - /usr/include/glm/ext/vector_uint3_sized.hpp /usr/include/glm/vec4.hpp \ - /usr/include/glm/ext/vector_bool4.hpp \ - /usr/include/glm/detail/type_vec4.hpp \ - /usr/include/glm/detail/type_vec4.inl \ - /usr/include/glm/ext/vector_bool4_precision.hpp \ - /usr/include/glm/ext/vector_float4.hpp \ - /usr/include/glm/ext/vector_float4_precision.hpp \ - /usr/include/glm/ext/vector_double4.hpp \ - /usr/include/glm/ext/vector_double4_precision.hpp \ - /usr/include/glm/ext/vector_int4.hpp \ - /usr/include/glm/ext/vector_int4_sized.hpp \ - /usr/include/glm/ext/vector_uint4.hpp \ - /usr/include/glm/ext/vector_uint4_sized.hpp /usr/include/glm/mat2x2.hpp \ - /usr/include/glm/ext/matrix_double2x2.hpp \ - /usr/include/glm/detail/type_mat2x2.hpp \ - /usr/include/glm/detail/type_mat2x2.inl /usr/include/glm/matrix.hpp \ - /usr/include/glm/mat2x3.hpp /usr/include/glm/ext/matrix_double2x3.hpp \ - /usr/include/glm/detail/type_mat2x3.hpp \ - /usr/include/glm/detail/type_mat2x3.inl \ - /usr/include/glm/ext/matrix_double2x3_precision.hpp \ - /usr/include/glm/ext/matrix_float2x3.hpp \ - /usr/include/glm/ext/matrix_float2x3_precision.hpp \ - /usr/include/glm/mat2x4.hpp /usr/include/glm/ext/matrix_double2x4.hpp \ - /usr/include/glm/detail/type_mat2x4.hpp \ - /usr/include/glm/detail/type_mat2x4.inl \ - /usr/include/glm/ext/matrix_double2x4_precision.hpp \ - /usr/include/glm/ext/matrix_float2x4.hpp \ - /usr/include/glm/ext/matrix_float2x4_precision.hpp \ - /usr/include/glm/mat3x2.hpp /usr/include/glm/ext/matrix_double3x2.hpp \ - /usr/include/glm/detail/type_mat3x2.hpp \ - /usr/include/glm/detail/type_mat3x2.inl \ - /usr/include/glm/ext/matrix_double3x2_precision.hpp \ - /usr/include/glm/ext/matrix_float3x2.hpp \ - /usr/include/glm/ext/matrix_float3x2_precision.hpp \ - /usr/include/glm/mat3x3.hpp /usr/include/glm/ext/matrix_double3x3.hpp \ - /usr/include/glm/detail/type_mat3x3.hpp \ - /usr/include/glm/detail/type_mat3x3.inl /usr/include/glm/common.hpp \ - /usr/include/glm/detail/func_common.inl \ - /usr/include/glm/vector_relational.hpp \ - /usr/include/glm/detail/func_vector_relational.inl \ - /usr/include/glm/detail/compute_common.hpp \ - /usr/include/glm/detail/type_vec1.hpp \ - /usr/include/glm/detail/type_vec1.inl \ - /usr/include/glm/ext/matrix_double3x3_precision.hpp \ - /usr/include/glm/ext/matrix_float3x3.hpp \ - /usr/include/glm/ext/matrix_float3x3_precision.hpp \ - /usr/include/glm/mat3x4.hpp /usr/include/glm/ext/matrix_double3x4.hpp \ - /usr/include/glm/detail/type_mat3x4.hpp \ - /usr/include/glm/detail/type_mat3x4.inl \ - /usr/include/glm/ext/matrix_double3x4_precision.hpp \ - /usr/include/glm/ext/matrix_float3x4.hpp \ - /usr/include/glm/ext/matrix_float3x4_precision.hpp \ - /usr/include/glm/mat4x2.hpp /usr/include/glm/ext/matrix_double4x2.hpp \ - /usr/include/glm/detail/type_mat4x2.hpp \ - /usr/include/glm/detail/type_mat4x2.inl \ - /usr/include/glm/ext/matrix_double4x2_precision.hpp \ - /usr/include/glm/ext/matrix_float4x2.hpp \ - /usr/include/glm/ext/matrix_float4x2_precision.hpp \ - /usr/include/glm/mat4x3.hpp /usr/include/glm/ext/matrix_double4x3.hpp \ - /usr/include/glm/detail/type_mat4x3.hpp \ - /usr/include/glm/detail/type_mat4x3.inl \ - /usr/include/glm/ext/matrix_double4x3_precision.hpp \ - /usr/include/glm/ext/matrix_float4x3.hpp \ - /usr/include/glm/ext/matrix_float4x3_precision.hpp \ - /usr/include/glm/mat4x4.hpp /usr/include/glm/ext/matrix_double4x4.hpp \ - /usr/include/glm/detail/type_mat4x4.hpp \ - /usr/include/glm/detail/type_mat4x4.inl /usr/include/glm/geometric.hpp \ - /usr/include/glm/detail/func_geometric.inl \ - /usr/include/glm/exponential.hpp \ - /usr/include/glm/detail/func_exponential.inl \ - /usr/include/glm/ext/matrix_double4x4_precision.hpp \ - /usr/include/glm/ext/matrix_float4x4.hpp \ - /usr/include/glm/ext/matrix_float4x4_precision.hpp \ - /usr/include/glm/detail/func_matrix.inl \ - /usr/include/glm/ext/matrix_double2x2_precision.hpp \ - /usr/include/glm/ext/matrix_float2x2.hpp \ - /usr/include/glm/ext/matrix_float2x2_precision.hpp \ - /usr/include/glm/trigonometric.hpp \ - /usr/include/glm/detail/func_trigonometric.inl \ - /usr/include/glm/packing.hpp /usr/include/glm/detail/func_packing.inl \ - /usr/include/glm/detail/type_half.hpp \ - /usr/include/glm/detail/type_half.inl /usr/include/glm/integer.hpp \ - /usr/include/glm/detail/func_integer.inl \ - /usr/include/vulkan/vulkan_core.h /usr/include/vulkan/vk_platform.h \ - /usr/include/vk_video/vulkan_video_codec_h264std.h \ - /usr/include/vk_video/vulkan_video_codecs_common.h \ - /usr/include/vk_video/vulkan_video_codec_h264std_encode.h \ - /usr/include/vk_video/vulkan_video_codec_h264std.h \ - /usr/include/vk_video/vulkan_video_codec_h265std.h \ - /usr/include/vk_video/vulkan_video_codec_h265std_encode.h \ - /usr/include/vk_video/vulkan_video_codec_h265std.h \ - /usr/include/vk_video/vulkan_video_codec_h264std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_h265std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_av1std.h \ - /usr/include/vk_video/vulkan_video_codec_av1std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_av1std.h \ - /usr/include/vk_video/vulkan_video_codec_av1std_encode.h \ - /usr/include/vk_video/vulkan_video_codec_vp9std.h \ - /usr/include/vk_video/vulkan_video_codec_vp9std_decode.h \ - /usr/include/vk_video/vulkan_video_codec_vp9std.h \ - /usr/include/GLFW/glfw3.h /usr/include/vulkan/vulkan.h \ - /usr/include/vulkan/vulkan_core.h /usr/include/GL/gl.h \ - /usr/include/GL/glext.h /usr/include/KHR/khrplatform.h \ - /home/Jordan/Projects/CPP/LearningVulkan/src/utilities/Logger.h \ - /usr/include/c++/15.2.1/string /usr/include/c++/15.2.1/bits/stringfwd.h \ - /usr/include/c++/15.2.1/bits/char_traits.h \ - /usr/include/c++/15.2.1/bits/postypes.h /usr/include/c++/15.2.1/cwchar \ - /usr/include/wchar.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/15.2.1/include/stdarg.h \ - /usr/include/bits/types/wint_t.h /usr/include/bits/types/mbstate_t.h \ - /usr/include/bits/types/__mbstate_t.h /usr/include/bits/types/__FILE.h \ - /usr/include/bits/types/FILE.h /usr/include/c++/15.2.1/bits/localefwd.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/c++locale.h \ - /usr/include/c++/15.2.1/clocale /usr/include/locale.h \ - /usr/include/bits/locale.h /usr/include/c++/15.2.1/iosfwd \ - /usr/include/c++/15.2.1/cctype /usr/include/ctype.h \ - /usr/include/c++/15.2.1/bits/ostream_insert.h \ - /usr/include/c++/15.2.1/bits/cxxabi_forced.h \ - /usr/include/c++/15.2.1/bits/basic_string.h \ - /usr/include/c++/15.2.1/string_view \ - /usr/include/c++/15.2.1/bits/string_view.tcc \ - /usr/include/c++/15.2.1/ext/string_conversions.h \ - /usr/include/c++/15.2.1/cstdlib /usr/include/c++/15.2.1/cstdio \ - /usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \ - /usr/include/bits/types/__fpos64_t.h \ - /usr/include/bits/types/struct_FILE.h \ - /usr/include/bits/types/cookie_io_functions_t.h \ - /usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \ - /usr/include/c++/15.2.1/cerrno /usr/include/errno.h \ - /usr/include/bits/errno.h /usr/include/linux/errno.h \ - /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ - /usr/include/asm-generic/errno-base.h /usr/include/bits/types/error_t.h \ - /usr/include/c++/15.2.1/bits/charconv.h \ - /usr/include/c++/15.2.1/bits/basic_string.tcc \ - /usr/include/c++/15.2.1/source_location /usr/include/c++/15.2.1/format \ - /usr/include/c++/15.2.1/charconv \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/error_constants.h \ - /usr/include/c++/15.2.1/locale \ - /usr/include/c++/15.2.1/bits/locale_classes.h \ - /usr/include/c++/15.2.1/ext/atomicity.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h \ - /usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \ - /usr/include/linux/sched/types.h /usr/include/linux/types.h \ - /usr/include/asm/types.h /usr/include/asm-generic/types.h \ - /usr/include/asm-generic/int-ll64.h /usr/include/asm/bitsperlong.h \ - /usr/include/asm-generic/bitsperlong.h /usr/include/linux/posix_types.h \ - /usr/include/linux/stddef.h /usr/include/asm/posix_types.h \ - /usr/include/asm/posix_types_64.h /usr/include/asm-generic/posix_types.h \ - /usr/include/bits/types/struct_sched_param.h /usr/include/bits/cpu-set.h \ - /usr/include/time.h /usr/include/bits/time.h /usr/include/bits/timex.h \ - /usr/include/bits/types/struct_tm.h \ - /usr/include/bits/types/struct_itimerspec.h /usr/include/bits/setjmp.h \ - /usr/include/bits/types/struct___jmp_buf_tag.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/atomic_word.h \ - /usr/include/sys/single_threaded.h \ - /usr/include/c++/15.2.1/bits/locale_classes.tcc \ - /usr/include/c++/15.2.1/bits/locale_facets.h \ - /usr/include/c++/15.2.1/cwctype /usr/include/wctype.h \ - /usr/include/bits/wctype-wchar.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_base.h \ - /usr/include/c++/15.2.1/bits/ios_base.h \ - /usr/include/c++/15.2.1/system_error /usr/include/c++/15.2.1/stdexcept \ - /usr/include/c++/15.2.1/exception \ - /usr/include/c++/15.2.1/bits/exception_ptr.h \ - /usr/include/c++/15.2.1/bits/cxxabi_init_exception.h \ - /usr/include/c++/15.2.1/bits/nested_exception.h \ - /usr/include/c++/15.2.1/streambuf \ - /usr/include/c++/15.2.1/bits/streambuf.tcc \ - /usr/include/c++/15.2.1/bits/streambuf_iterator.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/ctype_inline.h \ - /usr/include/c++/15.2.1/bits/locale_facets.tcc \ - /usr/include/c++/15.2.1/bits/locale_facets_nonio.h \ - /usr/include/c++/15.2.1/ctime \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/time_members.h \ - /usr/include/c++/15.2.1/x86_64-pc-linux-gnu/bits/messages_members.h \ - /usr/include/libintl.h /usr/include/c++/15.2.1/bits/codecvt.h \ - /usr/include/c++/15.2.1/bits/locale_facets_nonio.tcc \ - /usr/include/c++/15.2.1/bits/locale_conv.h \ - /usr/include/c++/15.2.1/optional /usr/include/c++/15.2.1/span \ - /usr/include/c++/15.2.1/bits/monostate.h \ - /usr/include/c++/15.2.1/bits/formatfwd.h \ - /usr/include/c++/15.2.1/bits/ranges_algobase.h \ - /usr/include/c++/15.2.1/bits/unicode.h \ - /usr/include/c++/15.2.1/bits/stl_algo.h \ - /usr/include/c++/15.2.1/bits/algorithmfwd.h \ - /usr/include/c++/15.2.1/bits/stl_heap.h \ - /usr/include/c++/15.2.1/bits/uniform_int_dist.h \ - /usr/include/c++/15.2.1/bits/stl_tempbuf.h \ - /usr/include/c++/15.2.1/bits/unicode-data.h \ - /usr/include/c++/15.2.1/cstring /usr/include/string.h \ - /usr/include/strings.h diff --git a/build/LearningVulkan b/build/LearningVulkan index 450eddce712829225d3677f446eaef830e9067bd..910f8b0e928041f8be93414627339be3d41498a3 100755 GIT binary patch delta 480013 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≫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

    M&9fF2B;%X%sF5a?{yi(P=B06_*XLl1*a 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 z�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%0A{GTE)^3wl9eqAHEceyhOi2p<9WI`i_#tAU; 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 R+6U<|TQh +#include +#include + +namespace tinyobj +{ + +// TODO(syoyo): Better C++11 detection for older compiler +#if __cplusplus > 199711L + #define TINYOBJ_OVERRIDE override +#else + #define TINYOBJ_OVERRIDE +#endif + +#ifdef __clang__ + #pragma clang diagnostic push + #if __has_warning("-Wzero-as-null-pointer-constant") + #pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" + #endif + + #pragma clang diagnostic ignored "-Wpadded" + +#endif + + // https://en.wikipedia.org/wiki/Wavefront_.obj_file says ... + // + // -blendu on | off # set horizontal texture blending + // (default on) + // -blendv on | off # set vertical texture blending + // (default on) + // -boost real_value # boost mip-map sharpness + // -mm base_value gain_value # modify texture map values (default + // 0 1) + // # base_value = brightness, + // gain_value = contrast + // -o u [v [w]] # Origin offset (default + // 0 0 0) + // -s u [v [w]] # Scale (default + // 1 1 1) + // -t u [v [w]] # Turbulence (default + // 0 0 0) + // -texres resolution # texture resolution to create + // -clamp on | off # only render texels in the clamped + // 0-1 range (default off) + // # When unclamped, textures are + // repeated across a surface, + // # when clamped, only texels which + // fall within the 0-1 + // # range are rendered. + // -bm mult_value # bump multiplier (for bump maps + // only) + // + // -imfchan r | g | b | m | l | z # specifies which channel of the file + // is used to + // # create a scalar or bump texture. + // r:red, g:green, + // # b:blue, m:matte, l:luminance, + // z:z-depth.. + // # (the default for bump is 'l' and + // for decal is 'm') + // bump -imfchan r bumpmap.tga # says to use the red channel of + // bumpmap.tga as the bumpmap + // + // For reflection maps... + // + // -type sphere # specifies a sphere for a "refl" + // reflection map + // -type cube_top | cube_bottom | # when using a cube map, the texture + // file for each + // cube_front | cube_back | # side of the cube is specified + // separately + // cube_left | cube_right + // + // TinyObjLoader extension. + // + // -colorspace SPACE # Color space of the texture. e.g. + // 'sRGB` or 'linear' + // + +#ifdef TINYOBJLOADER_USE_DOUBLE + // #pragma message "using double" + typedef double real_t; +#else + // #pragma message "using float" + typedef float real_t; +#endif + + typedef enum + { + TEXTURE_TYPE_NONE, // default + TEXTURE_TYPE_SPHERE, + TEXTURE_TYPE_CUBE_TOP, + TEXTURE_TYPE_CUBE_BOTTOM, + TEXTURE_TYPE_CUBE_FRONT, + TEXTURE_TYPE_CUBE_BACK, + TEXTURE_TYPE_CUBE_LEFT, + TEXTURE_TYPE_CUBE_RIGHT + } texture_type_t; + + struct texture_option_t + { + texture_type_t type; // -type (default TEXTURE_TYPE_NONE) + real_t sharpness; // -boost (default 1.0?) + real_t brightness; // base_value in -mm option (default 0) + real_t contrast; // gain_value in -mm option (default 1) + real_t origin_offset[3]; // -o u [v [w]] (default 0 0 0) + real_t scale[3]; // -s u [v [w]] (default 1 1 1) + real_t turbulence[3]; // -t u [v [w]] (default 0 0 0) + int texture_resolution; // -texres resolution (No default value in the spec. + // We'll use -1) + bool clamp; // -clamp (default false) + char imfchan; // -imfchan (the default for bump is 'l' and for decal is 'm') + bool blendu; // -blendu (default on) + bool blendv; // -blendv (default on) + real_t bump_multiplier; // -bm (for bump maps only, default 1.0) + + // extension + std::string colorspace; // Explicitly specify color space of stored texel + // value. Usually `sRGB` or `linear` (default empty). + }; + + struct material_t + { + std::string name; + + real_t ambient[3]; + real_t diffuse[3]; + real_t specular[3]; + real_t transmittance[3]; + real_t emission[3]; + real_t shininess; + real_t ior; // index of refraction + real_t dissolve; // 1 == opaque; 0 == fully transparent + // illumination model (see http://www.fileformat.info/format/material/) + int illum; + + int dummy; // Suppress padding warning. + + std::string ambient_texname; // map_Ka. For ambient or ambient occlusion. + std::string diffuse_texname; // map_Kd + std::string specular_texname; // map_Ks + std::string specular_highlight_texname; // map_Ns + std::string bump_texname; // map_bump, map_Bump, bump + std::string displacement_texname; // disp + std::string alpha_texname; // map_d + std::string reflection_texname; // refl + + texture_option_t ambient_texopt; + texture_option_t diffuse_texopt; + texture_option_t specular_texopt; + texture_option_t specular_highlight_texopt; + texture_option_t bump_texopt; + texture_option_t displacement_texopt; + texture_option_t alpha_texopt; + texture_option_t reflection_texopt; + + // PBR extension + // http://exocortex.com/blog/extending_wavefront_mtl_to_support_pbr + real_t roughness; // [0, 1] default 0 + real_t metallic; // [0, 1] default 0 + real_t sheen; // [0, 1] default 0 + real_t clearcoat_thickness; // [0, 1] default 0 + real_t clearcoat_roughness; // [0, 1] default 0 + real_t anisotropy; // aniso. [0, 1] default 0 + real_t anisotropy_rotation; // anisor. [0, 1] default 0 + real_t pad0; + std::string roughness_texname; // map_Pr + std::string metallic_texname; // map_Pm + std::string sheen_texname; // map_Ps + std::string emissive_texname; // map_Ke + std::string normal_texname; // norm. For normal mapping. + + texture_option_t roughness_texopt; + texture_option_t metallic_texopt; + texture_option_t sheen_texopt; + texture_option_t emissive_texopt; + texture_option_t normal_texopt; + + int pad2; + + std::map unknown_parameter; + +#ifdef TINY_OBJ_LOADER_PYTHON_BINDING + // For pybind11 + std::array GetDiffuse() + { + std::array values; + values[0] = double(diffuse[0]); + values[1] = double(diffuse[1]); + values[2] = double(diffuse[2]); + + return values; + } + + std::array GetSpecular() + { + std::array values; + values[0] = double(specular[0]); + values[1] = double(specular[1]); + values[2] = double(specular[2]); + + return values; + } + + std::array GetTransmittance() + { + std::array values; + values[0] = double(transmittance[0]); + values[1] = double(transmittance[1]); + values[2] = double(transmittance[2]); + + return values; + } + + std::array GetEmission() + { + std::array values; + values[0] = double(emission[0]); + values[1] = double(emission[1]); + values[2] = double(emission[2]); + + return values; + } + + std::array GetAmbient() + { + std::array values; + values[0] = double(ambient[0]); + values[1] = double(ambient[1]); + values[2] = double(ambient[2]); + + return values; + } + + void SetDiffuse(std::array& a) + { + diffuse[0] = real_t(a[0]); + diffuse[1] = real_t(a[1]); + diffuse[2] = real_t(a[2]); + } + + void SetAmbient(std::array& a) + { + ambient[0] = real_t(a[0]); + ambient[1] = real_t(a[1]); + ambient[2] = real_t(a[2]); + } + + void SetSpecular(std::array& a) + { + specular[0] = real_t(a[0]); + specular[1] = real_t(a[1]); + specular[2] = real_t(a[2]); + } + + void SetTransmittance(std::array& a) + { + transmittance[0] = real_t(a[0]); + transmittance[1] = real_t(a[1]); + transmittance[2] = real_t(a[2]); + } + + std::string GetCustomParameter(const std::string& key) + { + std::map::const_iterator it = unknown_parameter.find(key); + + if (it != unknown_parameter.end()) + { + return it->second; + } + return std::string(); + } + +#endif + }; + + struct tag_t + { + std::string name; + + std::vector intValues; + std::vector floatValues; + std::vector stringValues; + }; + + struct joint_and_weight_t + { + int joint_id; + real_t weight; + }; + + struct skin_weight_t + { + int vertex_id; // Corresponding vertex index in `attrib_t::vertices`. + // Compared to `index_t`, this index must be positive and + // start with 0(does not allow relative indexing) + std::vector weightValues; + }; + + // Index struct to support different indices for vtx/normal/texcoord. + // -1 means not used. + struct index_t + { + int vertex_index; + int normal_index; + int texcoord_index; + }; + + struct mesh_t + { + std::vector indices; + std::vector num_face_vertices; // The number of vertices per + // face. 3 = triangle, 4 = quad, ... + std::vector material_ids; // per-face material ID + std::vector smoothing_group_ids; // per-face smoothing group + // ID(0 = off. positive value + // = group id) + std::vector tags; // SubD tag + }; + + // struct path_t { + // std::vector indices; // pairs of indices for lines + //}; + + struct lines_t + { + // Linear flattened indices. + std::vector indices; // indices for vertices(poly lines) + std::vector num_line_vertices; // The number of vertices per line. + }; + + struct points_t + { + std::vector indices; // indices for points + }; + + struct shape_t + { + std::string name; + mesh_t mesh; + lines_t lines; + points_t points; + }; + + // Vertex attributes + struct attrib_t + { + std::vector vertices; // 'v'(xyz) + + // For backward compatibility, we store vertex weight in separate array. + std::vector vertex_weights; // 'v'(w) + std::vector normals; // 'vn' + std::vector texcoords; // 'vt'(uv) + + // For backward compatibility, we store texture coordinate 'w' in separate + // array. + std::vector texcoord_ws; // 'vt'(w) + std::vector colors; // extension: vertex colors + + // + // TinyObj extension. + // + + // NOTE(syoyo): array index is based on the appearance order. + // To get a corresponding skin weight for a specific vertex id `vid`, + // Need to reconstruct a look up table: `skin_weight_t::vertex_id` == `vid` + // (e.g. using std::map, std::unordered_map) + std::vector skin_weights; + + attrib_t() {} + + // + // For pybind11 + // + const std::vector& GetVertices() const { return vertices; } + + const std::vector& GetVertexWeights() const { return vertex_weights; } + }; + + struct callback_t + { + // W is optional and set to 1 if there is no `w` item in `v` line + void (*vertex_cb)(void* user_data, real_t x, real_t y, real_t z, real_t w); + void (*vertex_color_cb)( + void* user_data, + real_t x, + real_t y, + real_t z, + real_t r, + real_t g, + real_t b, + bool has_color + ); + void (*normal_cb)(void* user_data, real_t x, real_t y, real_t z); + + // y and z are optional and set to 0 if there is no `y` and/or `z` item(s) in + // `vt` line. + void (*texcoord_cb)(void* user_data, real_t x, real_t y, real_t z); + + // called per 'f' line. num_indices is the number of face indices(e.g. 3 for + // triangle, 4 for quad) + // 0 will be passed for undefined index in index_t members. + void (*index_cb)(void* user_data, index_t* indices, int num_indices); + // `name` material name, `material_id` = the array index of material_t[]. -1 + // if + // a material not found in .mtl + void (*usemtl_cb)(void* user_data, const char* name, int material_id); + // `materials` = parsed material data. + void (*mtllib_cb)(void* user_data, const material_t* materials, int num_materials); + // There may be multiple group names + void (*group_cb)(void* user_data, const char** names, int num_names); + void (*object_cb)(void* user_data, const char* name); + + callback_t() + : vertex_cb(NULL) + , vertex_color_cb(NULL) + , normal_cb(NULL) + , texcoord_cb(NULL) + , index_cb(NULL) + , usemtl_cb(NULL) + , mtllib_cb(NULL) + , group_cb(NULL) + , object_cb(NULL) + { + } + }; + + class MaterialReader + { + public: + MaterialReader() {} + virtual ~MaterialReader(); + + virtual bool operator()( + const std::string& matId, + std::vector* materials, + std::map* matMap, + std::string* warn, + std::string* err + ) = 0; + }; + + /// + /// Read .mtl from a file. + /// + class MaterialFileReader : public MaterialReader + { + public: + // Path could contain separator(';' in Windows, ':' in Posix) + explicit MaterialFileReader(const std::string& mtl_basedir) : m_mtlBaseDir(mtl_basedir) {} + virtual ~MaterialFileReader() TINYOBJ_OVERRIDE {} + virtual bool operator()( + const std::string& matId, + std::vector* materials, + std::map* matMap, + std::string* warn, + std::string* err + ) TINYOBJ_OVERRIDE; + + private: + std::string m_mtlBaseDir; + }; + + /// + /// Read .mtl from a stream. + /// + class MaterialStreamReader : public MaterialReader + { + public: + explicit MaterialStreamReader(std::istream& inStream) : m_inStream(inStream) {} + virtual ~MaterialStreamReader() TINYOBJ_OVERRIDE {} + virtual bool operator()( + const std::string& matId, + std::vector* materials, + std::map* matMap, + std::string* warn, + std::string* err + ) TINYOBJ_OVERRIDE; + + private: + std::istream& m_inStream; + }; + + // v2 API + struct ObjReaderConfig + { + bool triangulate; // triangulate polygon? + + // Currently not used. + // "simple" or empty: Create triangle fan + // "earcut": Use the algorithm based on Ear clipping + std::string triangulation_method; + + /// Parse vertex color. + /// If vertex color is not present, its filled with default value. + /// false = no vertex color + /// This will increase memory of parsed .obj + bool vertex_color; + + /// + /// Search path to .mtl file. + /// Default = "" = search from the same directory of .obj file. + /// Valid only when loading .obj from a file. + /// + std::string mtl_search_path; + + ObjReaderConfig() : triangulate(true), triangulation_method("simple"), vertex_color(true) {} + }; + + /// + /// Wavefront .obj reader class(v2 API) + /// + class ObjReader + { + public: + ObjReader() : valid_(false) {} + + /// + /// Load .obj and .mtl from a file. + /// + /// @param[in] filename wavefront .obj filename + /// @param[in] config Reader configuration + /// + bool ParseFromFile( + const std::string& filename, + const ObjReaderConfig& config = ObjReaderConfig() + ); + + /// + /// Parse .obj from a text string. + /// Need to supply .mtl text string by `mtl_text`. + /// This function ignores `mtllib` line in .obj text. + /// + /// @param[in] obj_text wavefront .obj filename + /// @param[in] mtl_text wavefront .mtl filename + /// @param[in] config Reader configuration + /// + bool ParseFromString( + const std::string& obj_text, + const std::string& mtl_text, + const ObjReaderConfig& config = ObjReaderConfig() + ); + + /// + /// .obj was loaded or parsed correctly. + /// + bool Valid() const { return valid_; } + + const attrib_t& GetAttrib() const { return attrib_; } + + const std::vector& GetShapes() const { return shapes_; } + + const std::vector& GetMaterials() const { return materials_; } + + /// + /// Warning message(may be filled after `Load` or `Parse`) + /// + const std::string& Warning() const { return warning_; } + + /// + /// Error message(filled when `Load` or `Parse` failed) + /// + const std::string& Error() const { return error_; } + + private: + bool valid_; + + attrib_t attrib_; + std::vector shapes_; + std::vector materials_; + + std::string warning_; + std::string error_; + }; + + /// ==>>========= Legacy v1 API ============================================= + + /// Loads .obj from a file. + /// 'attrib', 'shapes' and 'materials' will be filled with parsed shape data + /// 'shapes' will be filled with parsed shape data + /// Returns true when loading .obj become success. + /// Returns warning message into `warn`, and error message into `err` + /// 'mtl_basedir' is optional, and used for base directory for .mtl file. + /// In default(`NULL'), .mtl file is searched from an application's working + /// directory. + /// 'triangulate' is optional, and used whether triangulate polygon face in .obj + /// or not. + /// Option 'default_vcols_fallback' specifies whether vertex colors should + /// always be defined, even if no colors are given (fallback to white). + bool LoadObj( + attrib_t* attrib, + std::vector* shapes, + std::vector* materials, + std::string* warn, + std::string* err, + const char* filename, + const char* mtl_basedir = NULL, + bool triangulate = true, + bool default_vcols_fallback = true + ); + + /// Loads .obj from a file with custom user callback. + /// .mtl is loaded as usual and parsed material_t data will be passed to + /// `callback.mtllib_cb`. + /// Returns true when loading .obj/.mtl become success. + /// Returns warning message into `warn`, and error message into `err` + /// See `examples/callback_api/` for how to use this function. + bool LoadObjWithCallback( + std::istream& inStream, + const callback_t& callback, + void* user_data = NULL, + MaterialReader* readMatFn = NULL, + std::string* warn = NULL, + std::string* err = NULL + ); + + /// Loads object from a std::istream, uses `readMatFn` to retrieve + /// std::istream for materials. + /// Returns true when loading .obj become success. + /// Returns warning and error message into `err` + bool LoadObj( + attrib_t* attrib, + std::vector* shapes, + std::vector* materials, + std::string* warn, + std::string* err, + std::istream* inStream, + MaterialReader* readMatFn = NULL, + bool triangulate = true, + bool default_vcols_fallback = true + ); + + /// Loads materials into std::map + void LoadMtl( + std::map* material_map, + std::vector* materials, + std::istream* inStream, + std::string* warning, + std::string* err + ); + + /// + /// Parse texture name and texture option for custom texture parameter through + /// material::unknown_parameter + /// + /// @param[out] texname Parsed texture name + /// @param[out] texopt Parsed texopt + /// @param[in] linebuf Input string + /// + bool + ParseTextureNameAndOption(std::string* texname, texture_option_t* texopt, const char* linebuf); + + /// =<<========== Legacy v1 API ============================================= + +} // namespace tinyobj + +#endif // TINY_OBJ_LOADER_H_ + +#ifdef TINYOBJLOADER_IMPLEMENTATION +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef TINYOBJLOADER_USE_MAPBOX_EARCUT + + #ifdef TINYOBJLOADER_DONOT_INCLUDE_MAPBOX_EARCUT + // Assume earcut.hpp is included outside of tiny_obj_loader.h + #else + + #ifdef __clang__ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Weverything" + #endif + + #include + + #include "mapbox/earcut.hpp" + + #ifdef __clang__ + #pragma clang diagnostic pop + #endif + + #endif + +#endif // TINYOBJLOADER_USE_MAPBOX_EARCUT + +namespace tinyobj +{ + + MaterialReader::~MaterialReader() {} + + struct vertex_index_t + { + int v_idx, vt_idx, vn_idx; + vertex_index_t() : v_idx(-1), vt_idx(-1), vn_idx(-1) {} + explicit vertex_index_t(int idx) : v_idx(idx), vt_idx(idx), vn_idx(idx) {} + vertex_index_t(int vidx, int vtidx, int vnidx) : v_idx(vidx), vt_idx(vtidx), vn_idx(vnidx) + { + } + }; + + // Internal data structure for face representation + // index + smoothing group. + struct face_t + { + unsigned int smoothing_group_id; // smoothing group id. 0 = smoothing groupd is off. + int pad_; + std::vector vertex_indices; // face vertex indices. + + face_t() : smoothing_group_id(0), pad_(0) {} + }; + + // Internal data structure for line representation + struct __line_t + { + // l v1/vt1 v2/vt2 ... + // In the specification, line primitrive does not have normal index, but + // TinyObjLoader allow it + std::vector vertex_indices; + }; + + // Internal data structure for points representation + struct __points_t + { + // p v1 v2 ... + // In the specification, point primitrive does not have normal index and + // texture coord index, but TinyObjLoader allow it. + std::vector vertex_indices; + }; + + struct tag_sizes + { + tag_sizes() : num_ints(0), num_reals(0), num_strings(0) {} + int num_ints; + int num_reals; + int num_strings; + }; + + struct obj_shape + { + std::vector v; + std::vector vn; + std::vector vt; + }; + + // + // Manages group of primitives(face, line, points, ...) + struct PrimGroup + { + std::vector faceGroup; + std::vector<__line_t> lineGroup; + std::vector<__points_t> pointsGroup; + + void clear() + { + faceGroup.clear(); + lineGroup.clear(); + pointsGroup.clear(); + } + + bool IsEmpty() const + { + return faceGroup.empty() && lineGroup.empty() && pointsGroup.empty(); + } + + // TODO(syoyo): bspline, surface, ... + }; + + // See + // http://stackoverflow.com/questions/6089231/getting-std-ifstream-to-handle-lf-cr-and-crlf + static std::istream& safeGetline(std::istream& is, std::string& t) + { + t.clear(); + + // The characters in the stream are read one-by-one using a std::streambuf. + // That is faster than reading them one-by-one using the std::istream. + // Code that uses streambuf this way must be guarded by a sentry object. + // The sentry object performs various tasks, + // such as thread synchronization and updating the stream state. + + std::istream::sentry se(is, true); + std::streambuf* sb = is.rdbuf(); + + if (se) + { + for (;;) + { + int c = sb->sbumpc(); + switch (c) + { + case '\n': + return is; + case '\r': + if (sb->sgetc() == '\n') + { + sb->sbumpc(); + } + return is; + case EOF: + // Also handle the case when the last line has no line ending + if (t.empty()) + { + is.setstate(std::ios::eofbit); + } + return is; + default: + t += static_cast(c); + } + } + } + + return is; + } + +#define IS_SPACE(x) (((x) == ' ') || ((x) == '\t')) +#define IS_DIGIT(x) (static_cast((x) - '0') < static_cast(10)) +#define IS_NEW_LINE(x) (((x) == '\r') || ((x) == '\n') || ((x) == '\0')) + + template static inline std::string toString(const T& t) + { + std::stringstream ss; + ss << t; + return ss.str(); + } + + static inline std::string removeUtf8Bom(const std::string& input) + { + // UTF-8 BOM = 0xEF,0xBB,0xBF + if (input.size() >= 3 && static_cast(input[0]) == 0xEF + && static_cast(input[1]) == 0xBB + && static_cast(input[2]) == 0xBF) + { + return input.substr(3); // Skip BOM + } + return input; + } + + struct warning_context + { + std::string* warn; + size_t line_number; + }; + + // Make index zero-base, and also support relative index. + static inline bool + fixIndex(int idx, int n, int* ret, bool allow_zero, const warning_context& context) + { + if (!ret) + { + return false; + } + + if (idx > 0) + { + (*ret) = idx - 1; + return true; + } + + if (idx == 0) + { + // zero is not allowed according to the spec. + if (context.warn) + { + (*context.warn) += + "A zero value index found (will have a value of -1 for normal and " + "tex indices. Line " + + toString(context.line_number) + ").\n"; + } + + (*ret) = idx - 1; + return allow_zero; + } + + if (idx < 0) + { + (*ret) = n + idx; // negative value = relative + if ((*ret) < 0) + { + return false; // invalid relative index + } + return true; + } + + return false; // never reach here. + } + + static inline std::string parseString(const char** token) + { + std::string s; + (*token) += strspn((*token), " \t"); + size_t e = strcspn((*token), " \t\r"); + s = std::string((*token), &(*token)[e]); + (*token) += e; + return s; + } + + static inline int parseInt(const char** token) + { + (*token) += strspn((*token), " \t"); + int i = atoi((*token)); + (*token) += strcspn((*token), " \t\r"); + return i; + } + + // Tries to parse a floating point number located at s. + // + // s_end should be a location in the string where reading should absolutely + // stop. For example at the end of the string, to prevent buffer overflows. + // + // Parses the following EBNF grammar: + // sign = "+" | "-" ; + // END = ? anything not in digit ? + // digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ; + // integer = [sign] , digit , {digit} ; + // decimal = integer , ["." , integer] ; + // float = ( decimal , END ) | ( decimal , ("E" | "e") , integer , END ) ; + // + // Valid strings are for example: + // -0 +3.1417e+2 -0.0E-3 1.0324 -1.41 11e2 + // + // If the parsing is a success, result is set to the parsed value and true + // is returned. + // + // The function is greedy and will parse until any of the following happens: + // - a non-conforming character is encountered. + // - s_end is reached. + // + // The following situations triggers a failure: + // - s >= s_end. + // - parse failure. + // + static bool tryParseDouble(const char* s, const char* s_end, double* result) + { + if (s >= s_end) + { + return false; + } + + double mantissa = 0.0; + // This exponent is base 2 rather than 10. + // However the exponent we parse is supposed to be one of ten, + // thus we must take care to convert the exponent/and or the + // mantissa to a * 2^E, where a is the mantissa and E is the + // exponent. + // To get the final double we will use ldexp, it requires the + // exponent to be in base 2. + int exponent = 0; + + // NOTE: THESE MUST BE DECLARED HERE SINCE WE ARE NOT ALLOWED + // TO JUMP OVER DEFINITIONS. + char sign = '+'; + char exp_sign = '+'; + char const* curr = s; + + // How many characters were read in a loop. + int read = 0; + // Tells whether a loop terminated due to reaching s_end. + bool end_not_reached = false; + bool leading_decimal_dots = false; + + /* + BEGIN PARSING. + */ + + // Find out what sign we've got. + if (*curr == '+' || *curr == '-') + { + sign = *curr; + curr++; + if ((curr != s_end) && (*curr == '.')) + { + // accept. Somethig like `.7e+2`, `-.5234` + leading_decimal_dots = true; + } + } + else if (IS_DIGIT(*curr)) + { /* Pass through. */ + } + else if (*curr == '.') + { + // accept. Somethig like `.7e+2`, `-.5234` + leading_decimal_dots = true; + } + else + { + goto fail; + } + + // Read the integer part. + end_not_reached = (curr != s_end); + if (!leading_decimal_dots) + { + while (end_not_reached && IS_DIGIT(*curr)) + { + mantissa *= 10; + mantissa += static_cast(*curr - 0x30); + curr++; + read++; + end_not_reached = (curr != s_end); + } + + // We must make sure we actually got something. + if (read == 0) + { + goto fail; + } + } + + // We allow numbers of form "#", "###" etc. + if (!end_not_reached) + { + goto assemble; + } + + // Read the decimal part. + if (*curr == '.') + { + curr++; + read = 1; + end_not_reached = (curr != s_end); + while (end_not_reached && IS_DIGIT(*curr)) + { + static const double pow_lut[] = { + 1.0, 0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001, 0.0000001, + }; + const int lut_entries = sizeof pow_lut / sizeof pow_lut[0]; + + // NOTE: Don't use powf here, it will absolutely murder precision. + mantissa += static_cast(*curr - 0x30) + * (read < lut_entries ? pow_lut[read] : std::pow(10.0, -read)); + read++; + curr++; + end_not_reached = (curr != s_end); + } + } + else if (*curr == 'e' || *curr == 'E') + { + } + else + { + goto assemble; + } + + if (!end_not_reached) + { + goto assemble; + } + + // Read the exponent part. + if (*curr == 'e' || *curr == 'E') + { + curr++; + // Figure out if a sign is present and if it is. + end_not_reached = (curr != s_end); + if (end_not_reached && (*curr == '+' || *curr == '-')) + { + exp_sign = *curr; + curr++; + } + else if (IS_DIGIT(*curr)) + { /* Pass through. */ + } + else + { + // Empty E is not allowed. + goto fail; + } + + read = 0; + end_not_reached = (curr != s_end); + while (end_not_reached && IS_DIGIT(*curr)) + { + // To avoid annoying MSVC's min/max macro definiton, + // Use hardcoded int max value + if (exponent > (2147483647 / 10)) + { // 2147483647 = std::numeric_limits::max() + // Integer overflow + goto fail; + } + exponent *= 10; + exponent += static_cast(*curr - 0x30); + curr++; + read++; + end_not_reached = (curr != s_end); + } + exponent *= (exp_sign == '+' ? 1 : -1); + if (read == 0) + { + goto fail; + } + } + + assemble: + *result = (sign == '+' ? 1 : -1) + * (exponent ? std::ldexp(mantissa * std::pow(5.0, exponent), exponent) : mantissa); + return true; + fail: + return false; + } + + static inline real_t parseReal(const char** token, double default_value = 0.0) + { + (*token) += strspn((*token), " \t"); + const char* end = (*token) + strcspn((*token), " \t\r"); + double val = default_value; + tryParseDouble((*token), end, &val); + real_t f = static_cast(val); + (*token) = end; + return f; + } + + static inline bool parseReal(const char** token, real_t* out) + { + (*token) += strspn((*token), " \t"); + const char* end = (*token) + strcspn((*token), " \t\r"); + double val; + bool ret = tryParseDouble((*token), end, &val); + if (ret) + { + real_t f = static_cast(val); + (*out) = f; + } + (*token) = end; + return ret; + } + + static inline void parseReal2( + real_t* x, + real_t* y, + const char** token, + const double default_x = 0.0, + const double default_y = 0.0 + ) + { + (*x) = parseReal(token, default_x); + (*y) = parseReal(token, default_y); + } + + static inline void parseReal3( + real_t* x, + real_t* y, + real_t* z, + const char** token, + const double default_x = 0.0, + const double default_y = 0.0, + const double default_z = 0.0 + ) + { + (*x) = parseReal(token, default_x); + (*y) = parseReal(token, default_y); + (*z) = parseReal(token, default_z); + } + +#if 0 // not used +static inline void parseV(real_t *x, real_t *y, real_t *z, real_t *w, + const char **token, const double default_x = 0.0, + const double default_y = 0.0, + const double default_z = 0.0, + const double default_w = 1.0) { + (*x) = parseReal(token, default_x); + (*y) = parseReal(token, default_y); + (*z) = parseReal(token, default_z); + (*w) = parseReal(token, default_w); +} +#endif + + // Extension: parse vertex with colors(6 items) + // Return 3: xyz, 4: xyzw, 6: xyzrgb + // `r`: red(case 6) or [w](case 4) + static inline int parseVertexWithColor( + real_t* x, + real_t* y, + real_t* z, + real_t* r, + real_t* g, + real_t* b, + const char** token, + const double default_x = 0.0, + const double default_y = 0.0, + const double default_z = 0.0 + ) + { + // TODO: Check error + (*x) = parseReal(token, default_x); + (*y) = parseReal(token, default_y); + (*z) = parseReal(token, default_z); + + // - 4 components(x, y, z, w) ot 6 components + bool has_r = parseReal(token, r); + + if (!has_r) + { + (*r) = (*g) = (*b) = 1.0; + return 3; + } + + bool has_g = parseReal(token, g); + + if (!has_g) + { + (*g) = (*b) = 1.0; + return 4; + } + + bool has_b = parseReal(token, b); + + if (!has_b) + { + (*r) = (*g) = (*b) = 1.0; + return 3; // treated as xyz + } + + return 6; + } + + static inline bool parseOnOff(const char** token, bool default_value = true) + { + (*token) += strspn((*token), " \t"); + const char* end = (*token) + strcspn((*token), " \t\r"); + + bool ret = default_value; + if ((0 == strncmp((*token), "on", 2))) + { + ret = true; + } + else if ((0 == strncmp((*token), "off", 3))) + { + ret = false; + } + + (*token) = end; + return ret; + } + + static inline texture_type_t + parseTextureType(const char** token, texture_type_t default_value = TEXTURE_TYPE_NONE) + { + (*token) += strspn((*token), " \t"); + const char* end = (*token) + strcspn((*token), " \t\r"); + texture_type_t ty = default_value; + + if ((0 == strncmp((*token), "cube_top", strlen("cube_top")))) + { + ty = TEXTURE_TYPE_CUBE_TOP; + } + else if ((0 == strncmp((*token), "cube_bottom", strlen("cube_bottom")))) + { + ty = TEXTURE_TYPE_CUBE_BOTTOM; + } + else if ((0 == strncmp((*token), "cube_left", strlen("cube_left")))) + { + ty = TEXTURE_TYPE_CUBE_LEFT; + } + else if ((0 == strncmp((*token), "cube_right", strlen("cube_right")))) + { + ty = TEXTURE_TYPE_CUBE_RIGHT; + } + else if ((0 == strncmp((*token), "cube_front", strlen("cube_front")))) + { + ty = TEXTURE_TYPE_CUBE_FRONT; + } + else if ((0 == strncmp((*token), "cube_back", strlen("cube_back")))) + { + ty = TEXTURE_TYPE_CUBE_BACK; + } + else if ((0 == strncmp((*token), "sphere", strlen("sphere")))) + { + ty = TEXTURE_TYPE_SPHERE; + } + + (*token) = end; + return ty; + } + + static tag_sizes parseTagTriple(const char** token) + { + tag_sizes ts; + + (*token) += strspn((*token), " \t"); + ts.num_ints = atoi((*token)); + (*token) += strcspn((*token), "/ \t\r"); + if ((*token)[0] != '/') + { + return ts; + } + + (*token)++; // Skip '/' + + (*token) += strspn((*token), " \t"); + ts.num_reals = atoi((*token)); + (*token) += strcspn((*token), "/ \t\r"); + if ((*token)[0] != '/') + { + return ts; + } + (*token)++; // Skip '/' + + ts.num_strings = parseInt(token); + + return ts; + } + + // Parse triples with index offsets: i, i/j/k, i//k, i/j + static bool parseTriple( + const char** token, + int vsize, + int vnsize, + int vtsize, + vertex_index_t* ret, + const warning_context& context + ) + { + if (!ret) + { + return false; + } + + vertex_index_t vi(-1); + + if (!fixIndex(atoi((*token)), vsize, &vi.v_idx, false, context)) + { + return false; + } + + (*token) += strcspn((*token), "/ \t\r"); + if ((*token)[0] != '/') + { + (*ret) = vi; + return true; + } + (*token)++; + + // i//k + if ((*token)[0] == '/') + { + (*token)++; + if (!fixIndex(atoi((*token)), vnsize, &vi.vn_idx, true, context)) + { + return false; + } + (*token) += strcspn((*token), "/ \t\r"); + (*ret) = vi; + return true; + } + + // i/j/k or i/j + if (!fixIndex(atoi((*token)), vtsize, &vi.vt_idx, true, context)) + { + return false; + } + + (*token) += strcspn((*token), "/ \t\r"); + if ((*token)[0] != '/') + { + (*ret) = vi; + return true; + } + + // i/j/k + (*token)++; // skip '/' + if (!fixIndex(atoi((*token)), vnsize, &vi.vn_idx, true, context)) + { + return false; + } + (*token) += strcspn((*token), "/ \t\r"); + + (*ret) = vi; + + return true; + } + + // Parse raw triples: i, i/j/k, i//k, i/j + static vertex_index_t parseRawTriple(const char** token) + { + vertex_index_t vi(static_cast(0)); // 0 is an invalid index in OBJ + + vi.v_idx = atoi((*token)); + (*token) += strcspn((*token), "/ \t\r"); + if ((*token)[0] != '/') + { + return vi; + } + (*token)++; + + // i//k + if ((*token)[0] == '/') + { + (*token)++; + vi.vn_idx = atoi((*token)); + (*token) += strcspn((*token), "/ \t\r"); + return vi; + } + + // i/j/k or i/j + vi.vt_idx = atoi((*token)); + (*token) += strcspn((*token), "/ \t\r"); + if ((*token)[0] != '/') + { + return vi; + } + + // i/j/k + (*token)++; // skip '/' + vi.vn_idx = atoi((*token)); + (*token) += strcspn((*token), "/ \t\r"); + return vi; + } + + bool + ParseTextureNameAndOption(std::string* texname, texture_option_t* texopt, const char* linebuf) + { + // @todo { write more robust lexer and parser. } + bool found_texname = false; + std::string texture_name; + + const char* token = linebuf; // Assume line ends with NULL + + while (!IS_NEW_LINE((*token))) + { + token += strspn(token, " \t"); // skip space + if ((0 == strncmp(token, "-blendu", 7)) && IS_SPACE((token[7]))) + { + token += 8; + texopt->blendu = parseOnOff(&token, /* default */ true); + } + else if ((0 == strncmp(token, "-blendv", 7)) && IS_SPACE((token[7]))) + { + token += 8; + texopt->blendv = parseOnOff(&token, /* default */ true); + } + else if ((0 == strncmp(token, "-clamp", 6)) && IS_SPACE((token[6]))) + { + token += 7; + texopt->clamp = parseOnOff(&token, /* default */ true); + } + else if ((0 == strncmp(token, "-boost", 6)) && IS_SPACE((token[6]))) + { + token += 7; + texopt->sharpness = parseReal(&token, 1.0); + } + else if ((0 == strncmp(token, "-bm", 3)) && IS_SPACE((token[3]))) + { + token += 4; + texopt->bump_multiplier = parseReal(&token, 1.0); + } + else if ((0 == strncmp(token, "-o", 2)) && IS_SPACE((token[2]))) + { + token += 3; + parseReal3( + &(texopt->origin_offset[0]), + &(texopt->origin_offset[1]), + &(texopt->origin_offset[2]), + &token + ); + } + else if ((0 == strncmp(token, "-s", 2)) && IS_SPACE((token[2]))) + { + token += 3; + parseReal3( + &(texopt->scale[0]), + &(texopt->scale[1]), + &(texopt->scale[2]), + &token, + 1.0, + 1.0, + 1.0 + ); + } + else if ((0 == strncmp(token, "-t", 2)) && IS_SPACE((token[2]))) + { + token += 3; + parseReal3( + &(texopt->turbulence[0]), + &(texopt->turbulence[1]), + &(texopt->turbulence[2]), + &token + ); + } + else if ((0 == strncmp(token, "-type", 5)) && IS_SPACE((token[5]))) + { + token += 5; + texopt->type = parseTextureType((&token), TEXTURE_TYPE_NONE); + } + else if ((0 == strncmp(token, "-texres", 7)) && IS_SPACE((token[7]))) + { + token += 7; + // TODO(syoyo): Check if arg is int type. + texopt->texture_resolution = parseInt(&token); + } + else if ((0 == strncmp(token, "-imfchan", 8)) && IS_SPACE((token[8]))) + { + token += 9; + token += strspn(token, " \t"); + const char* end = token + strcspn(token, " \t\r"); + if ((end - token) == 1) + { // Assume one char for -imfchan + texopt->imfchan = (*token); + } + token = end; + } + else if ((0 == strncmp(token, "-mm", 3)) && IS_SPACE((token[3]))) + { + token += 4; + parseReal2(&(texopt->brightness), &(texopt->contrast), &token, 0.0, 1.0); + } + else if ((0 == strncmp(token, "-colorspace", 11)) && IS_SPACE((token[11]))) + { + token += 12; + texopt->colorspace = parseString(&token); + } + else + { +// Assume texture filename +#if 0 + size_t len = strcspn(token, " \t\r"); // untile next space + texture_name = std::string(token, token + len); + token += len; + + token += strspn(token, " \t"); // skip space +#else + // Read filename until line end to parse filename containing whitespace + // TODO(syoyo): Support parsing texture option flag after the filename. + texture_name = std::string(token); + token += texture_name.length(); +#endif + + found_texname = true; + } + } + + if (found_texname) + { + (*texname) = texture_name; + return true; + } + else + { + return false; + } + } + + static void InitTexOpt(texture_option_t* texopt, const bool is_bump) + { + if (is_bump) + { + texopt->imfchan = 'l'; + } + else + { + texopt->imfchan = 'm'; + } + texopt->bump_multiplier = static_cast(1.0); + texopt->clamp = false; + texopt->blendu = true; + texopt->blendv = true; + texopt->sharpness = static_cast(1.0); + texopt->brightness = static_cast(0.0); + texopt->contrast = static_cast(1.0); + texopt->origin_offset[0] = static_cast(0.0); + texopt->origin_offset[1] = static_cast(0.0); + texopt->origin_offset[2] = static_cast(0.0); + texopt->scale[0] = static_cast(1.0); + texopt->scale[1] = static_cast(1.0); + texopt->scale[2] = static_cast(1.0); + texopt->turbulence[0] = static_cast(0.0); + texopt->turbulence[1] = static_cast(0.0); + texopt->turbulence[2] = static_cast(0.0); + texopt->texture_resolution = -1; + texopt->type = TEXTURE_TYPE_NONE; + } + + static void InitMaterial(material_t* material) + { + InitTexOpt(&material->ambient_texopt, /* is_bump */ false); + InitTexOpt(&material->diffuse_texopt, /* is_bump */ false); + InitTexOpt(&material->specular_texopt, /* is_bump */ false); + InitTexOpt(&material->specular_highlight_texopt, /* is_bump */ false); + InitTexOpt(&material->bump_texopt, /* is_bump */ true); + InitTexOpt(&material->displacement_texopt, /* is_bump */ false); + InitTexOpt(&material->alpha_texopt, /* is_bump */ false); + InitTexOpt(&material->reflection_texopt, /* is_bump */ false); + InitTexOpt(&material->roughness_texopt, /* is_bump */ false); + InitTexOpt(&material->metallic_texopt, /* is_bump */ false); + InitTexOpt(&material->sheen_texopt, /* is_bump */ false); + InitTexOpt(&material->emissive_texopt, /* is_bump */ false); + InitTexOpt( + &material->normal_texopt, + /* is_bump */ false + ); // @fixme { is_bump will be true? } + material->name = ""; + material->ambient_texname = ""; + material->diffuse_texname = ""; + material->specular_texname = ""; + material->specular_highlight_texname = ""; + material->bump_texname = ""; + material->displacement_texname = ""; + material->reflection_texname = ""; + material->alpha_texname = ""; + for (int i = 0; i < 3; i++) + { + material->ambient[i] = static_cast(0.0); + material->diffuse[i] = static_cast(0.0); + material->specular[i] = static_cast(0.0); + material->transmittance[i] = static_cast(0.0); + material->emission[i] = static_cast(0.0); + } + material->illum = 0; + material->dissolve = static_cast(1.0); + material->shininess = static_cast(1.0); + material->ior = static_cast(1.0); + + material->roughness = static_cast(0.0); + material->metallic = static_cast(0.0); + material->sheen = static_cast(0.0); + material->clearcoat_thickness = static_cast(0.0); + material->clearcoat_roughness = static_cast(0.0); + material->anisotropy_rotation = static_cast(0.0); + material->anisotropy = static_cast(0.0); + material->roughness_texname = ""; + material->metallic_texname = ""; + material->sheen_texname = ""; + material->emissive_texname = ""; + material->normal_texname = ""; + + material->unknown_parameter.clear(); + } + + // code from https://wrf.ecse.rpi.edu//Research/Short_Notes/pnpoly.html + template static int pnpoly(int nvert, T* vertx, T* verty, T testx, T testy) + { + int i, j, c = 0; + for (i = 0, j = nvert - 1; i < nvert; j = i++) + { + if (((verty[i] > testy) != (verty[j] > testy)) + && (testx < (vertx[j] - vertx[i]) * (testy - verty[i]) / (verty[j] - verty[i]) + + vertx[i])) + { + c = !c; + } + } + return c; + } + + struct TinyObjPoint + { + real_t x, y, z; + TinyObjPoint() : x(0), y(0), z(0) {} + TinyObjPoint(real_t x_, real_t y_, real_t z_) : x(x_), y(y_), z(z_) {} + }; + + inline TinyObjPoint cross(const TinyObjPoint& v1, const TinyObjPoint& v2) + { + return TinyObjPoint( + v1.y * v2.z - v1.z * v2.y, + v1.z * v2.x - v1.x * v2.z, + v1.x * v2.y - v1.y * v2.x + ); + } + + inline real_t dot(const TinyObjPoint& v1, const TinyObjPoint& v2) + { + return (v1.x * v2.x + v1.y * v2.y + v1.z * v2.z); + } + + inline real_t GetLength(TinyObjPoint& e) + { + return std::sqrt(e.x * e.x + e.y * e.y + e.z * e.z); + } + + inline TinyObjPoint Normalize(TinyObjPoint e) + { + real_t inv_length = real_t(1) / GetLength(e); + return TinyObjPoint(e.x * inv_length, e.y * inv_length, e.z * inv_length); + } + + inline TinyObjPoint WorldToLocal( + const TinyObjPoint& a, + const TinyObjPoint& u, + const TinyObjPoint& v, + const TinyObjPoint& w + ) + { + return TinyObjPoint(dot(a, u), dot(a, v), dot(a, w)); + } + + // TODO(syoyo): refactor function. + static bool exportGroupsToShape( + shape_t* shape, + const PrimGroup& prim_group, + const std::vector& tags, + const int material_id, + const std::string& name, + bool triangulate, + const std::vector& v, + std::string* warn + ) + { + if (prim_group.IsEmpty()) + { + return false; + } + + shape->name = name; + + // polygon + if (!prim_group.faceGroup.empty()) + { + // Flatten vertices and indices + for (size_t i = 0; i < prim_group.faceGroup.size(); i++) + { + const face_t& face = prim_group.faceGroup[i]; + + size_t npolys = face.vertex_indices.size(); + + if (npolys < 3) + { + // Face must have 3+ vertices. + if (warn) + { + (*warn) += "Degenerated face found\n."; + } + continue; + } + + if (triangulate && npolys != 3) + { + if (npolys == 4) + { + vertex_index_t i0 = face.vertex_indices[0]; + vertex_index_t i1 = face.vertex_indices[1]; + vertex_index_t i2 = face.vertex_indices[2]; + vertex_index_t i3 = face.vertex_indices[3]; + + size_t vi0 = size_t(i0.v_idx); + size_t vi1 = size_t(i1.v_idx); + size_t vi2 = size_t(i2.v_idx); + size_t vi3 = size_t(i3.v_idx); + + if (((3 * vi0 + 2) >= v.size()) || ((3 * vi1 + 2) >= v.size()) + || ((3 * vi2 + 2) >= v.size()) || ((3 * vi3 + 2) >= v.size())) + { + // Invalid triangle. + // FIXME(syoyo): Is it ok to simply skip this invalid triangle? + if (warn) + { + (*warn) += "Face with invalid vertex index found.\n"; + } + continue; + } + + real_t v0x = v[vi0 * 3 + 0]; + real_t v0y = v[vi0 * 3 + 1]; + real_t v0z = v[vi0 * 3 + 2]; + real_t v1x = v[vi1 * 3 + 0]; + real_t v1y = v[vi1 * 3 + 1]; + real_t v1z = v[vi1 * 3 + 2]; + real_t v2x = v[vi2 * 3 + 0]; + real_t v2y = v[vi2 * 3 + 1]; + real_t v2z = v[vi2 * 3 + 2]; + real_t v3x = v[vi3 * 3 + 0]; + real_t v3y = v[vi3 * 3 + 1]; + real_t v3z = v[vi3 * 3 + 2]; + + // There are two candidates to split the quad into two triangles. + // + // Choose the shortest edge. + // TODO: Is it better to determine the edge to split by calculating + // the area of each triangle? + // + // +---+ + // |\ | + // | \ | + // | \| + // +---+ + // + // +---+ + // | /| + // | / | + // |/ | + // +---+ + + real_t e02x = v2x - v0x; + real_t e02y = v2y - v0y; + real_t e02z = v2z - v0z; + real_t e13x = v3x - v1x; + real_t e13y = v3y - v1y; + real_t e13z = v3z - v1z; + + real_t sqr02 = e02x * e02x + e02y * e02y + e02z * e02z; + real_t sqr13 = e13x * e13x + e13y * e13y + e13z * e13z; + + index_t idx0, idx1, idx2, idx3; + + idx0.vertex_index = i0.v_idx; + idx0.normal_index = i0.vn_idx; + idx0.texcoord_index = i0.vt_idx; + idx1.vertex_index = i1.v_idx; + idx1.normal_index = i1.vn_idx; + idx1.texcoord_index = i1.vt_idx; + idx2.vertex_index = i2.v_idx; + idx2.normal_index = i2.vn_idx; + idx2.texcoord_index = i2.vt_idx; + idx3.vertex_index = i3.v_idx; + idx3.normal_index = i3.vn_idx; + idx3.texcoord_index = i3.vt_idx; + + if (sqr02 < sqr13) + { + // [0, 1, 2], [0, 2, 3] + shape->mesh.indices.push_back(idx0); + shape->mesh.indices.push_back(idx1); + shape->mesh.indices.push_back(idx2); + + shape->mesh.indices.push_back(idx0); + shape->mesh.indices.push_back(idx2); + shape->mesh.indices.push_back(idx3); + } + else + { + // [0, 1, 3], [1, 2, 3] + shape->mesh.indices.push_back(idx0); + shape->mesh.indices.push_back(idx1); + shape->mesh.indices.push_back(idx3); + + shape->mesh.indices.push_back(idx1); + shape->mesh.indices.push_back(idx2); + shape->mesh.indices.push_back(idx3); + } + + // Two triangle faces + shape->mesh.num_face_vertices.push_back(3); + shape->mesh.num_face_vertices.push_back(3); + + shape->mesh.material_ids.push_back(material_id); + shape->mesh.material_ids.push_back(material_id); + + shape->mesh.smoothing_group_ids.push_back(face.smoothing_group_id); + shape->mesh.smoothing_group_ids.push_back(face.smoothing_group_id); + } + else + { +#ifdef TINYOBJLOADER_USE_MAPBOX_EARCUT + vertex_index_t i0 = face.vertex_indices[0]; + vertex_index_t i0_2 = i0; + + // TMW change: Find the normal axis of the polygon using Newell's + // method + TinyObjPoint n; + for (size_t k = 0; k < npolys; ++k) + { + i0 = face.vertex_indices[k % npolys]; + size_t vi0 = size_t(i0.v_idx); + + size_t j = (k + 1) % npolys; + i0_2 = face.vertex_indices[j]; + size_t vi0_2 = size_t(i0_2.v_idx); + + real_t v0x = v[vi0 * 3 + 0]; + real_t v0y = v[vi0 * 3 + 1]; + real_t v0z = v[vi0 * 3 + 2]; + + real_t v0x_2 = v[vi0_2 * 3 + 0]; + real_t v0y_2 = v[vi0_2 * 3 + 1]; + real_t v0z_2 = v[vi0_2 * 3 + 2]; + + const TinyObjPoint point1(v0x, v0y, v0z); + const TinyObjPoint point2(v0x_2, v0y_2, v0z_2); + + TinyObjPoint a( + point1.x - point2.x, + point1.y - point2.y, + point1.z - point2.z + ); + TinyObjPoint b( + point1.x + point2.x, + point1.y + point2.y, + point1.z + point2.z + ); + + n.x += (a.y * b.z); + n.y += (a.z * b.x); + n.z += (a.x * b.y); + } + real_t length_n = GetLength(n); + // Check if zero length normal + if (length_n <= 0) + { + continue; + } + // Negative is to flip the normal to the correct direction + real_t inv_length = -real_t(1.0) / length_n; + n.x *= inv_length; + n.y *= inv_length; + n.z *= inv_length; + + TinyObjPoint axis_w, axis_v, axis_u; + axis_w = n; + TinyObjPoint a; + if (std::fabs(axis_w.x) > real_t(0.9999999)) + { + a = TinyObjPoint(0, 1, 0); + } + else + { + a = TinyObjPoint(1, 0, 0); + } + axis_v = Normalize(cross(axis_w, a)); + axis_u = cross(axis_w, axis_v); + using Point = std::array; + + // first polyline define the main polygon. + // following polylines define holes(not used in tinyobj). + std::vector> polygon; + + std::vector polyline; + + // TMW change: Find best normal and project v0x and v0y to those + // coordinates, instead of picking a plane aligned with an axis (which + // can flip polygons). + + // Fill polygon data(facevarying vertices). + for (size_t k = 0; k < npolys; k++) + { + i0 = face.vertex_indices[k]; + size_t vi0 = size_t(i0.v_idx); + + assert(((3 * vi0 + 2) < v.size())); + + real_t v0x = v[vi0 * 3 + 0]; + real_t v0y = v[vi0 * 3 + 1]; + real_t v0z = v[vi0 * 3 + 2]; + + TinyObjPoint polypoint(v0x, v0y, v0z); + TinyObjPoint loc = WorldToLocal(polypoint, axis_u, axis_v, axis_w); + + polyline.push_back({ loc.x, loc.y }); + } + + polygon.push_back(polyline); + std::vector indices = mapbox::earcut(polygon); + // => result = 3 * faces, clockwise + + assert(indices.size() % 3 == 0); + + // Reconstruct vertex_index_t + for (size_t k = 0; k < indices.size() / 3; k++) + { + { + index_t idx0, idx1, idx2; + idx0.vertex_index = face.vertex_indices[indices[3 * k + 0]].v_idx; + idx0.normal_index = face.vertex_indices[indices[3 * k + 0]].vn_idx; + idx0.texcoord_index = + face.vertex_indices[indices[3 * k + 0]].vt_idx; + idx1.vertex_index = face.vertex_indices[indices[3 * k + 1]].v_idx; + idx1.normal_index = face.vertex_indices[indices[3 * k + 1]].vn_idx; + idx1.texcoord_index = + face.vertex_indices[indices[3 * k + 1]].vt_idx; + idx2.vertex_index = face.vertex_indices[indices[3 * k + 2]].v_idx; + idx2.normal_index = face.vertex_indices[indices[3 * k + 2]].vn_idx; + idx2.texcoord_index = + face.vertex_indices[indices[3 * k + 2]].vt_idx; + + shape->mesh.indices.push_back(idx0); + shape->mesh.indices.push_back(idx1); + shape->mesh.indices.push_back(idx2); + + shape->mesh.num_face_vertices.push_back(3); + shape->mesh.material_ids.push_back(material_id); + shape->mesh.smoothing_group_ids.push_back(face.smoothing_group_id); + } + } + +#else // Built-in ear clipping triangulation + vertex_index_t i0 = face.vertex_indices[0]; + vertex_index_t i1(-1); + vertex_index_t i2 = face.vertex_indices[1]; + + // find the two axes to work in + size_t axes[2] = { 1, 2 }; + for (size_t k = 0; k < npolys; ++k) + { + i0 = face.vertex_indices[(k + 0) % npolys]; + i1 = face.vertex_indices[(k + 1) % npolys]; + i2 = face.vertex_indices[(k + 2) % npolys]; + size_t vi0 = size_t(i0.v_idx); + size_t vi1 = size_t(i1.v_idx); + size_t vi2 = size_t(i2.v_idx); + + if (((3 * vi0 + 2) >= v.size()) || ((3 * vi1 + 2) >= v.size()) + || ((3 * vi2 + 2) >= v.size())) + { + // Invalid triangle. + // FIXME(syoyo): Is it ok to simply skip this invalid triangle? + continue; + } + real_t v0x = v[vi0 * 3 + 0]; + real_t v0y = v[vi0 * 3 + 1]; + real_t v0z = v[vi0 * 3 + 2]; + real_t v1x = v[vi1 * 3 + 0]; + real_t v1y = v[vi1 * 3 + 1]; + real_t v1z = v[vi1 * 3 + 2]; + real_t v2x = v[vi2 * 3 + 0]; + real_t v2y = v[vi2 * 3 + 1]; + real_t v2z = v[vi2 * 3 + 2]; + real_t e0x = v1x - v0x; + real_t e0y = v1y - v0y; + real_t e0z = v1z - v0z; + real_t e1x = v2x - v1x; + real_t e1y = v2y - v1y; + real_t e1z = v2z - v1z; + real_t cx = std::fabs(e0y * e1z - e0z * e1y); + real_t cy = std::fabs(e0z * e1x - e0x * e1z); + real_t cz = std::fabs(e0x * e1y - e0y * e1x); + const real_t epsilon = std::numeric_limits::epsilon(); + // std::cout << "cx " << cx << ", cy " << cy << ", cz " << cz << + // "\n"; + if (cx > epsilon || cy > epsilon || cz > epsilon) + { + // std::cout << "corner\n"; + // found a corner + if (cx > cy && cx > cz) + { + // std::cout << "pattern0\n"; + } + else + { + // std::cout << "axes[0] = 0\n"; + axes[0] = 0; + if (cz > cx && cz > cy) + { + // std::cout << "axes[1] = 1\n"; + axes[1] = 1; + } + } + break; + } + } + + face_t remainingFace = face; // copy + size_t guess_vert = 0; + vertex_index_t ind[3]; + real_t vx[3]; + real_t vy[3]; + + // How many iterations can we do without decreasing the remaining + // vertices. + size_t remainingIterations = face.vertex_indices.size(); + size_t previousRemainingVertices = remainingFace.vertex_indices.size(); + + while (remainingFace.vertex_indices.size() > 3 && remainingIterations > 0) + { + // std::cout << "remainingIterations " << remainingIterations << + // "\n"; + + npolys = remainingFace.vertex_indices.size(); + if (guess_vert >= npolys) + { + guess_vert -= npolys; + } + + if (previousRemainingVertices != npolys) + { + // The number of remaining vertices decreased. Reset counters. + previousRemainingVertices = npolys; + remainingIterations = npolys; + } + else + { + // We didn't consume a vertex on previous iteration, reduce the + // available iterations. + remainingIterations--; + } + + for (size_t k = 0; k < 3; k++) + { + ind[k] = remainingFace.vertex_indices[(guess_vert + k) % npolys]; + size_t vi = size_t(ind[k].v_idx); + if (((vi * 3 + axes[0]) >= v.size()) + || ((vi * 3 + axes[1]) >= v.size())) + { + // ??? + vx[k] = static_cast(0.0); + vy[k] = static_cast(0.0); + } + else + { + vx[k] = v[vi * 3 + axes[0]]; + vy[k] = v[vi * 3 + axes[1]]; + } + } + + // + // area is calculated per face + // + real_t e0x = vx[1] - vx[0]; + real_t e0y = vy[1] - vy[0]; + real_t e1x = vx[2] - vx[1]; + real_t e1y = vy[2] - vy[1]; + real_t cross = e0x * e1y - e0y * e1x; + // std::cout << "axes = " << axes[0] << ", " << axes[1] << "\n"; + // std::cout << "e0x, e0y, e1x, e1y " << e0x << ", " << e0y << ", " + // << e1x << ", " << e1y << "\n"; + + real_t area = + (vx[0] * vy[1] - vy[0] * vx[1]) * static_cast(0.5); + // std::cout << "cross " << cross << ", area " << area << "\n"; + // if an internal angle + if (cross * area < static_cast(0.0)) + { + // std::cout << "internal \n"; + guess_vert += 1; + // std::cout << "guess vert : " << guess_vert << "\n"; + continue; + } + + // check all other verts in case they are inside this triangle + bool overlap = false; + for (size_t otherVert = 3; otherVert < npolys; ++otherVert) + { + size_t idx = (guess_vert + otherVert) % npolys; + + if (idx >= remainingFace.vertex_indices.size()) + { + // std::cout << "???0\n"; + // ??? + continue; + } + + size_t ovi = size_t(remainingFace.vertex_indices[idx].v_idx); + + if (((ovi * 3 + axes[0]) >= v.size()) + || ((ovi * 3 + axes[1]) >= v.size())) + { + // std::cout << "???1\n"; + // ??? + continue; + } + real_t tx = v[ovi * 3 + axes[0]]; + real_t ty = v[ovi * 3 + axes[1]]; + if (pnpoly(3, vx, vy, tx, ty)) + { + // std::cout << "overlap\n"; + overlap = true; + break; + } + } + + if (overlap) + { + // std::cout << "overlap2\n"; + guess_vert += 1; + continue; + } + + // this triangle is an ear + { + index_t idx0, idx1, idx2; + idx0.vertex_index = ind[0].v_idx; + idx0.normal_index = ind[0].vn_idx; + idx0.texcoord_index = ind[0].vt_idx; + idx1.vertex_index = ind[1].v_idx; + idx1.normal_index = ind[1].vn_idx; + idx1.texcoord_index = ind[1].vt_idx; + idx2.vertex_index = ind[2].v_idx; + idx2.normal_index = ind[2].vn_idx; + idx2.texcoord_index = ind[2].vt_idx; + + shape->mesh.indices.push_back(idx0); + shape->mesh.indices.push_back(idx1); + shape->mesh.indices.push_back(idx2); + + shape->mesh.num_face_vertices.push_back(3); + shape->mesh.material_ids.push_back(material_id); + shape->mesh.smoothing_group_ids.push_back(face.smoothing_group_id); + } + + // remove v1 from the list + size_t removed_vert_index = (guess_vert + 1) % npolys; + while (removed_vert_index + 1 < npolys) + { + remainingFace.vertex_indices[removed_vert_index] = + remainingFace.vertex_indices[removed_vert_index + 1]; + removed_vert_index += 1; + } + remainingFace.vertex_indices.pop_back(); + } + + // std::cout << "remainingFace.vi.size = " << + // remainingFace.vertex_indices.size() << "\n"; + if (remainingFace.vertex_indices.size() == 3) + { + i0 = remainingFace.vertex_indices[0]; + i1 = remainingFace.vertex_indices[1]; + i2 = remainingFace.vertex_indices[2]; + { + index_t idx0, idx1, idx2; + idx0.vertex_index = i0.v_idx; + idx0.normal_index = i0.vn_idx; + idx0.texcoord_index = i0.vt_idx; + idx1.vertex_index = i1.v_idx; + idx1.normal_index = i1.vn_idx; + idx1.texcoord_index = i1.vt_idx; + idx2.vertex_index = i2.v_idx; + idx2.normal_index = i2.vn_idx; + idx2.texcoord_index = i2.vt_idx; + + shape->mesh.indices.push_back(idx0); + shape->mesh.indices.push_back(idx1); + shape->mesh.indices.push_back(idx2); + + shape->mesh.num_face_vertices.push_back(3); + shape->mesh.material_ids.push_back(material_id); + shape->mesh.smoothing_group_ids.push_back(face.smoothing_group_id); + } + } +#endif + } // npolys + } + else + { + for (size_t k = 0; k < npolys; k++) + { + index_t idx; + idx.vertex_index = face.vertex_indices[k].v_idx; + idx.normal_index = face.vertex_indices[k].vn_idx; + idx.texcoord_index = face.vertex_indices[k].vt_idx; + shape->mesh.indices.push_back(idx); + } + + shape->mesh.num_face_vertices.push_back(static_cast(npolys)); + shape->mesh.material_ids.push_back(material_id); // per face + shape->mesh.smoothing_group_ids.push_back(face.smoothing_group_id); // per face + } + } + + shape->mesh.tags = tags; + } + + // line + if (!prim_group.lineGroup.empty()) + { + // Flatten indices + for (size_t i = 0; i < prim_group.lineGroup.size(); i++) + { + for (size_t j = 0; j < prim_group.lineGroup[i].vertex_indices.size(); j++) + { + const vertex_index_t& vi = prim_group.lineGroup[i].vertex_indices[j]; + + index_t idx; + idx.vertex_index = vi.v_idx; + idx.normal_index = vi.vn_idx; + idx.texcoord_index = vi.vt_idx; + + shape->lines.indices.push_back(idx); + } + + shape->lines.num_line_vertices.push_back( + int(prim_group.lineGroup[i].vertex_indices.size()) + ); + } + } + + // points + if (!prim_group.pointsGroup.empty()) + { + // Flatten & convert indices + for (size_t i = 0; i < prim_group.pointsGroup.size(); i++) + { + for (size_t j = 0; j < prim_group.pointsGroup[i].vertex_indices.size(); j++) + { + const vertex_index_t& vi = prim_group.pointsGroup[i].vertex_indices[j]; + + index_t idx; + idx.vertex_index = vi.v_idx; + idx.normal_index = vi.vn_idx; + idx.texcoord_index = vi.vt_idx; + + shape->points.indices.push_back(idx); + } + } + } + + return true; + } + + // Split a string with specified delimiter character and escape character. + // https://rosettacode.org/wiki/Tokenize_a_string_with_escaping#C.2B.2B + static void + SplitString(const std::string& s, char delim, char escape, std::vector& elems) + { + std::string token; + + bool escaping = false; + for (size_t i = 0; i < s.size(); ++i) + { + char ch = s[i]; + if (escaping) + { + escaping = false; + } + else if (ch == escape) + { + escaping = true; + continue; + } + else if (ch == delim) + { + if (!token.empty()) + { + elems.push_back(token); + } + token.clear(); + continue; + } + token += ch; + } + + elems.push_back(token); + } + + static std::string JoinPath(const std::string& dir, const std::string& filename) + { + if (dir.empty()) + { + return filename; + } + else + { + // check '/' + char lastChar = *dir.rbegin(); + if (lastChar != '/') + { + return dir + std::string("/") + filename; + } + else + { + return dir + filename; + } + } + } + + void LoadMtl( + std::map* material_map, + std::vector* materials, + std::istream* inStream, + std::string* warning, + std::string* err + ) + { + (void)err; + + // Create a default material anyway. + material_t material; + InitMaterial(&material); + + // Issue 43. `d` wins against `Tr` since `Tr` is not in the MTL specification. + bool has_d = false; + bool has_tr = false; + + // has_kd is used to set a default diffuse value when map_Kd is present + // and Kd is not. + bool has_kd = false; + + std::stringstream warn_ss; + + size_t line_no = 0; + std::string linebuf; + while (inStream->peek() != -1) + { + safeGetline(*inStream, linebuf); + line_no++; + + // Trim trailing whitespace. + if (linebuf.size() > 0) + { + linebuf = linebuf.substr(0, linebuf.find_last_not_of(" \t") + 1); + } + + // Trim newline '\r\n' or '\n' + if (linebuf.size() > 0) + { + if (linebuf[linebuf.size() - 1] == '\n') + { + linebuf.erase(linebuf.size() - 1); + } + } + if (linebuf.size() > 0) + { + if (linebuf[linebuf.size() - 1] == '\r') + { + linebuf.erase(linebuf.size() - 1); + } + } + + // Skip if empty line. + if (linebuf.empty()) + { + continue; + } + if (line_no == 1) + { + linebuf = removeUtf8Bom(linebuf); + } + + // Skip leading space. + const char* token = linebuf.c_str(); + token += strspn(token, " \t"); + + assert(token); + if (token[0] == '\0') + { + continue; // empty line + } + + if (token[0] == '#') + { + continue; // comment line + } + + // new mtl + if ((0 == strncmp(token, "newmtl", 6)) && IS_SPACE((token[6]))) + { + // flush previous material. + if (!material.name.empty()) + { + material_map->insert( + std::pair( + material.name, + static_cast(materials->size()) + ) + ); + materials->push_back(material); + } + + // initial temporary material + InitMaterial(&material); + + has_d = false; + has_tr = false; + has_kd = false; + + // set new mtl name + token += 7; + { + std::string namebuf = parseString(&token); + // TODO: empty name check? + if (namebuf.empty()) + { + if (warning) + { + (*warning) += "empty material name in `newmtl`\n"; + } + } + material.name = namebuf; + } + continue; + } + + // ambient + if (token[0] == 'K' && token[1] == 'a' && IS_SPACE((token[2]))) + { + token += 2; + real_t r, g, b; + parseReal3(&r, &g, &b, &token); + material.ambient[0] = r; + material.ambient[1] = g; + material.ambient[2] = b; + continue; + } + + // diffuse + if (token[0] == 'K' && token[1] == 'd' && IS_SPACE((token[2]))) + { + token += 2; + real_t r, g, b; + parseReal3(&r, &g, &b, &token); + material.diffuse[0] = r; + material.diffuse[1] = g; + material.diffuse[2] = b; + has_kd = true; + continue; + } + + // specular + if (token[0] == 'K' && token[1] == 's' && IS_SPACE((token[2]))) + { + token += 2; + real_t r, g, b; + parseReal3(&r, &g, &b, &token); + material.specular[0] = r; + material.specular[1] = g; + material.specular[2] = b; + continue; + } + + // transmittance + if ((token[0] == 'K' && token[1] == 't' && IS_SPACE((token[2]))) + || (token[0] == 'T' && token[1] == 'f' && IS_SPACE((token[2])))) + { + token += 2; + real_t r, g, b; + parseReal3(&r, &g, &b, &token); + material.transmittance[0] = r; + material.transmittance[1] = g; + material.transmittance[2] = b; + continue; + } + + // ior(index of refraction) + if (token[0] == 'N' && token[1] == 'i' && IS_SPACE((token[2]))) + { + token += 2; + material.ior = parseReal(&token); + continue; + } + + // emission + if (token[0] == 'K' && token[1] == 'e' && IS_SPACE(token[2])) + { + token += 2; + real_t r, g, b; + parseReal3(&r, &g, &b, &token); + material.emission[0] = r; + material.emission[1] = g; + material.emission[2] = b; + continue; + } + + // shininess + if (token[0] == 'N' && token[1] == 's' && IS_SPACE(token[2])) + { + token += 2; + material.shininess = parseReal(&token); + continue; + } + + // illum model + if (0 == strncmp(token, "illum", 5) && IS_SPACE(token[5])) + { + token += 6; + material.illum = parseInt(&token); + continue; + } + + // dissolve + if ((token[0] == 'd' && IS_SPACE(token[1]))) + { + token += 1; + material.dissolve = parseReal(&token); + + if (has_tr) + { + warn_ss << "Both `d` and `Tr` parameters defined for \"" << material.name + << "\". Use the value of `d` for dissolve (line " << line_no + << " in .mtl.)\n"; + } + has_d = true; + continue; + } + if (token[0] == 'T' && token[1] == 'r' && IS_SPACE(token[2])) + { + token += 2; + if (has_d) + { + // `d` wins. Ignore `Tr` value. + warn_ss << "Both `d` and `Tr` parameters defined for \"" << material.name + << "\". Use the value of `d` for dissolve (line " << line_no + << " in .mtl.)\n"; + } + else + { + // We invert value of Tr(assume Tr is in range [0, 1]) + // NOTE: Interpretation of Tr is application(exporter) dependent. For + // some application(e.g. 3ds max obj exporter), Tr = d(Issue 43) + material.dissolve = static_cast(1.0) - parseReal(&token); + } + has_tr = true; + continue; + } + + // PBR: roughness + if (token[0] == 'P' && token[1] == 'r' && IS_SPACE(token[2])) + { + token += 2; + material.roughness = parseReal(&token); + continue; + } + + // PBR: metallic + if (token[0] == 'P' && token[1] == 'm' && IS_SPACE(token[2])) + { + token += 2; + material.metallic = parseReal(&token); + continue; + } + + // PBR: sheen + if (token[0] == 'P' && token[1] == 's' && IS_SPACE(token[2])) + { + token += 2; + material.sheen = parseReal(&token); + continue; + } + + // PBR: clearcoat thickness + if (token[0] == 'P' && token[1] == 'c' && IS_SPACE(token[2])) + { + token += 2; + material.clearcoat_thickness = parseReal(&token); + continue; + } + + // PBR: clearcoat roughness + if ((0 == strncmp(token, "Pcr", 3)) && IS_SPACE(token[3])) + { + token += 4; + material.clearcoat_roughness = parseReal(&token); + continue; + } + + // PBR: anisotropy + if ((0 == strncmp(token, "aniso", 5)) && IS_SPACE(token[5])) + { + token += 6; + material.anisotropy = parseReal(&token); + continue; + } + + // PBR: anisotropy rotation + if ((0 == strncmp(token, "anisor", 6)) && IS_SPACE(token[6])) + { + token += 7; + material.anisotropy_rotation = parseReal(&token); + continue; + } + + // ambient or ambient occlusion texture + if ((0 == strncmp(token, "map_Ka", 6)) && IS_SPACE(token[6])) + { + token += 7; + ParseTextureNameAndOption( + &(material.ambient_texname), + &(material.ambient_texopt), + token + ); + continue; + } + + // diffuse texture + if ((0 == strncmp(token, "map_Kd", 6)) && IS_SPACE(token[6])) + { + token += 7; + ParseTextureNameAndOption( + &(material.diffuse_texname), + &(material.diffuse_texopt), + token + ); + + // Set a decent diffuse default value if a diffuse texture is specified + // without a matching Kd value. + if (!has_kd) + { + material.diffuse[0] = static_cast(0.6); + material.diffuse[1] = static_cast(0.6); + material.diffuse[2] = static_cast(0.6); + } + + continue; + } + + // specular texture + if ((0 == strncmp(token, "map_Ks", 6)) && IS_SPACE(token[6])) + { + token += 7; + ParseTextureNameAndOption( + &(material.specular_texname), + &(material.specular_texopt), + token + ); + continue; + } + + // specular highlight texture + if ((0 == strncmp(token, "map_Ns", 6)) && IS_SPACE(token[6])) + { + token += 7; + ParseTextureNameAndOption( + &(material.specular_highlight_texname), + &(material.specular_highlight_texopt), + token + ); + continue; + } + + // bump texture + if (((0 == strncmp(token, "map_bump", 8)) || (0 == strncmp(token, "map_Bump", 8))) + && IS_SPACE(token[8])) + { + token += 9; + ParseTextureNameAndOption(&(material.bump_texname), &(material.bump_texopt), token); + continue; + } + + // bump texture + if ((0 == strncmp(token, "bump", 4)) && IS_SPACE(token[4])) + { + token += 5; + ParseTextureNameAndOption(&(material.bump_texname), &(material.bump_texopt), token); + continue; + } + + // alpha texture + if ((0 == strncmp(token, "map_d", 5)) && IS_SPACE(token[5])) + { + token += 6; + material.alpha_texname = token; + ParseTextureNameAndOption( + &(material.alpha_texname), + &(material.alpha_texopt), + token + ); + continue; + } + + // displacement texture + if (((0 == strncmp(token, "map_disp", 8)) || (0 == strncmp(token, "map_Disp", 8))) + && IS_SPACE(token[8])) + { + token += 9; + ParseTextureNameAndOption( + &(material.displacement_texname), + &(material.displacement_texopt), + token + ); + continue; + } + + // displacement texture + if ((0 == strncmp(token, "disp", 4)) && IS_SPACE(token[4])) + { + token += 5; + ParseTextureNameAndOption( + &(material.displacement_texname), + &(material.displacement_texopt), + token + ); + continue; + } + + // reflection map + if ((0 == strncmp(token, "refl", 4)) && IS_SPACE(token[4])) + { + token += 5; + ParseTextureNameAndOption( + &(material.reflection_texname), + &(material.reflection_texopt), + token + ); + continue; + } + + // PBR: roughness texture + if ((0 == strncmp(token, "map_Pr", 6)) && IS_SPACE(token[6])) + { + token += 7; + ParseTextureNameAndOption( + &(material.roughness_texname), + &(material.roughness_texopt), + token + ); + continue; + } + + // PBR: metallic texture + if ((0 == strncmp(token, "map_Pm", 6)) && IS_SPACE(token[6])) + { + token += 7; + ParseTextureNameAndOption( + &(material.metallic_texname), + &(material.metallic_texopt), + token + ); + continue; + } + + // PBR: sheen texture + if ((0 == strncmp(token, "map_Ps", 6)) && IS_SPACE(token[6])) + { + token += 7; + ParseTextureNameAndOption( + &(material.sheen_texname), + &(material.sheen_texopt), + token + ); + continue; + } + + // PBR: emissive texture + if ((0 == strncmp(token, "map_Ke", 6)) && IS_SPACE(token[6])) + { + token += 7; + ParseTextureNameAndOption( + &(material.emissive_texname), + &(material.emissive_texopt), + token + ); + continue; + } + + // PBR: normal map texture + if ((0 == strncmp(token, "norm", 4)) && IS_SPACE(token[4])) + { + token += 5; + ParseTextureNameAndOption( + &(material.normal_texname), + &(material.normal_texopt), + token + ); + continue; + } + + // unknown parameter + const char* _space = strchr(token, ' '); + if (!_space) + { + _space = strchr(token, '\t'); + } + if (_space) + { + std::ptrdiff_t len = _space - token; + std::string key(token, static_cast(len)); + std::string value = _space + 1; + material.unknown_parameter.insert(std::pair(key, value)); + } + } + // flush last material. + material_map->insert( + std::pair(material.name, static_cast(materials->size())) + ); + materials->push_back(material); + + if (warning) + { + (*warning) = warn_ss.str(); + } + } + + bool MaterialFileReader::operator()( + const std::string& matId, + std::vector* materials, + std::map* matMap, + std::string* warn, + std::string* err + ) + { + if (!m_mtlBaseDir.empty()) + { +#ifdef _WIN32 + char sep = ';'; +#else + char sep = ':'; +#endif + + // https://stackoverflow.com/questions/5167625/splitting-a-c-stdstring-using-tokens-e-g + std::vector paths; + std::istringstream f(m_mtlBaseDir); + + std::string s; + while (getline(f, s, sep)) + { + paths.push_back(s); + } + + for (size_t i = 0; i < paths.size(); i++) + { + std::string filepath = JoinPath(paths[i], matId); + + std::ifstream matIStream(filepath.c_str()); + if (matIStream) + { + LoadMtl(matMap, materials, &matIStream, warn, err); + + return true; + } + } + + std::stringstream ss; + ss << "Material file [ " << matId << " ] not found in a path : " << m_mtlBaseDir + << "\n"; + if (warn) + { + (*warn) += ss.str(); + } + return false; + } + else + { + std::string filepath = matId; + std::ifstream matIStream(filepath.c_str()); + if (matIStream) + { + LoadMtl(matMap, materials, &matIStream, warn, err); + + return true; + } + + std::stringstream ss; + ss << "Material file [ " << filepath << " ] not found in a path : " << m_mtlBaseDir + << "\n"; + if (warn) + { + (*warn) += ss.str(); + } + + return false; + } + } + + bool MaterialStreamReader::operator()( + const std::string& matId, + std::vector* materials, + std::map* matMap, + std::string* warn, + std::string* err + ) + { + (void)err; + (void)matId; + if (!m_inStream) + { + std::stringstream ss; + ss << "Material stream in error state. \n"; + if (warn) + { + (*warn) += ss.str(); + } + return false; + } + + LoadMtl(matMap, materials, &m_inStream, warn, err); + + return true; + } + + bool LoadObj( + attrib_t* attrib, + std::vector* shapes, + std::vector* materials, + std::string* warn, + std::string* err, + const char* filename, + const char* mtl_basedir, + bool triangulate, + bool default_vcols_fallback + ) + { + attrib->vertices.clear(); + attrib->normals.clear(); + attrib->texcoords.clear(); + attrib->colors.clear(); + shapes->clear(); + + std::stringstream errss; + + std::ifstream ifs(filename); + if (!ifs) + { + errss << "Cannot open file [" << filename << "]\n"; + if (err) + { + (*err) = errss.str(); + } + return false; + } + + std::string baseDir = mtl_basedir ? mtl_basedir : ""; + if (!baseDir.empty()) + { +#ifndef _WIN32 + const char dirsep = '/'; +#else + const char dirsep = '\\'; +#endif + if (baseDir[baseDir.length() - 1] != dirsep) + { + baseDir += dirsep; + } + } + MaterialFileReader matFileReader(baseDir); + + return LoadObj( + attrib, + shapes, + materials, + warn, + err, + &ifs, + &matFileReader, + triangulate, + default_vcols_fallback + ); + } + + bool LoadObj( + attrib_t* attrib, + std::vector* shapes, + std::vector* materials, + std::string* warn, + std::string* err, + std::istream* inStream, + MaterialReader* readMatFn /*= NULL*/, + bool triangulate, + bool default_vcols_fallback + ) + { + std::stringstream errss; + + std::vector v; + std::vector vertex_weights; // optional [w] component in `v` + std::vector vn; + std::vector vt; + std::vector vc; + std::vector vw; // tinyobj extension: vertex skin weights + std::vector tags; + PrimGroup prim_group; + std::string name; + + // material + std::set material_filenames; + std::map material_map; + int material = -1; + + // smoothing group id + unsigned int current_smoothing_id = 0; // Initial value. 0 means no smoothing. + + int greatest_v_idx = -1; + int greatest_vn_idx = -1; + int greatest_vt_idx = -1; + + shape_t shape; + + bool found_all_colors = true; // check if all 'v' line has color info + + size_t line_num = 0; + std::string linebuf; + while (inStream->peek() != -1) + { + safeGetline(*inStream, linebuf); + + line_num++; + + // Trim newline '\r\n' or '\n' + if (linebuf.size() > 0) + { + if (linebuf[linebuf.size() - 1] == '\n') + { + linebuf.erase(linebuf.size() - 1); + } + } + if (linebuf.size() > 0) + { + if (linebuf[linebuf.size() - 1] == '\r') + { + linebuf.erase(linebuf.size() - 1); + } + } + + // Skip if empty line. + if (linebuf.empty()) + { + continue; + } + if (line_num == 1) + { + linebuf = removeUtf8Bom(linebuf); + } + + // Skip leading space. + const char* token = linebuf.c_str(); + token += strspn(token, " \t"); + + assert(token); + if (token[0] == '\0') + { + continue; // empty line + } + + if (token[0] == '#') + { + continue; // comment line + } + + // vertex + if (token[0] == 'v' && IS_SPACE((token[1]))) + { + token += 2; + real_t x, y, z; + real_t r, g, b; + + int num_components = parseVertexWithColor(&x, &y, &z, &r, &g, &b, &token); + found_all_colors &= (num_components == 6); + + v.push_back(x); + v.push_back(y); + v.push_back(z); + + vertex_weights.push_back( + r + ); // r = w, and initialized to 1.0 when `w` component is not found. + + if ((num_components == 6) || default_vcols_fallback) + { + vc.push_back(r); + vc.push_back(g); + vc.push_back(b); + } + + continue; + } + + // normal + if (token[0] == 'v' && token[1] == 'n' && IS_SPACE((token[2]))) + { + token += 3; + real_t x, y, z; + parseReal3(&x, &y, &z, &token); + vn.push_back(x); + vn.push_back(y); + vn.push_back(z); + continue; + } + + // texcoord + if (token[0] == 'v' && token[1] == 't' && IS_SPACE((token[2]))) + { + token += 3; + real_t x, y; + parseReal2(&x, &y, &token); + vt.push_back(x); + vt.push_back(y); + continue; + } + + // skin weight. tinyobj extension + if (token[0] == 'v' && token[1] == 'w' && IS_SPACE((token[2]))) + { + token += 3; + + // vw ... + // example: + // vw 0 0 0.25 1 0.25 2 0.5 + + // TODO(syoyo): Add syntax check + int vid = 0; + vid = parseInt(&token); + + skin_weight_t sw; + + sw.vertex_id = vid; + + while (!IS_NEW_LINE(token[0]) && token[0] != '#') + { + real_t j, w; + // joint_id should not be negative, weight may be negative + // TODO(syoyo): # of elements check + parseReal2(&j, &w, &token, -1.0); + + if (j < static_cast(0)) + { + if (err) + { + std::stringstream ss; + ss << "Failed parse `vw' line. joint_id is negative. " + "line " + << line_num << ".)\n"; + (*err) += ss.str(); + } + return false; + } + + joint_and_weight_t jw; + + jw.joint_id = int(j); + jw.weight = w; + + sw.weightValues.push_back(jw); + + size_t n = strspn(token, " \t\r"); + token += n; + } + + vw.push_back(sw); + } + + warning_context context; + context.warn = warn; + context.line_number = line_num; + + // line + if (token[0] == 'l' && IS_SPACE((token[1]))) + { + token += 2; + + __line_t line; + + while (!IS_NEW_LINE(token[0]) && token[0] != '#') + { + vertex_index_t vi; + if (!parseTriple( + &token, + static_cast(v.size() / 3), + static_cast(vn.size() / 3), + static_cast(vt.size() / 2), + &vi, + context + )) + { + if (err) + { + (*err) += + "Failed to parse `l' line (e.g. a zero value for vertex index. " + "Line " + + toString(line_num) + ").\n"; + } + return false; + } + + line.vertex_indices.push_back(vi); + + size_t n = strspn(token, " \t\r"); + token += n; + } + + prim_group.lineGroup.push_back(line); + + continue; + } + + // points + if (token[0] == 'p' && IS_SPACE((token[1]))) + { + token += 2; + + __points_t pts; + + while (!IS_NEW_LINE(token[0]) && token[0] != '#') + { + vertex_index_t vi; + if (!parseTriple( + &token, + static_cast(v.size() / 3), + static_cast(vn.size() / 3), + static_cast(vt.size() / 2), + &vi, + context + )) + { + if (err) + { + (*err) += + "Failed to parse `p' line (e.g. a zero value for vertex index. " + "Line " + + toString(line_num) + ").\n"; + } + return false; + } + + pts.vertex_indices.push_back(vi); + + size_t n = strspn(token, " \t\r"); + token += n; + } + + prim_group.pointsGroup.push_back(pts); + + continue; + } + + // face + if (token[0] == 'f' && IS_SPACE((token[1]))) + { + token += 2; + token += strspn(token, " \t"); + + face_t face; + + face.smoothing_group_id = current_smoothing_id; + face.vertex_indices.reserve(3); + + while (!IS_NEW_LINE(token[0]) && token[0] != '#') + { + vertex_index_t vi; + if (!parseTriple( + &token, + static_cast(v.size() / 3), + static_cast(vn.size() / 3), + static_cast(vt.size() / 2), + &vi, + context + )) + { + if (err) + { + (*err) += + "Failed to parse `f' line (e.g. a zero value for vertex index " + "or invalid relative vertex index). Line " + + toString(line_num) + ").\n"; + } + return false; + } + + greatest_v_idx = greatest_v_idx > vi.v_idx ? greatest_v_idx : vi.v_idx; + greatest_vn_idx = greatest_vn_idx > vi.vn_idx ? greatest_vn_idx : vi.vn_idx; + greatest_vt_idx = greatest_vt_idx > vi.vt_idx ? greatest_vt_idx : vi.vt_idx; + + face.vertex_indices.push_back(vi); + size_t n = strspn(token, " \t\r"); + token += n; + } + + // replace with emplace_back + std::move on C++11 + prim_group.faceGroup.push_back(face); + + continue; + } + + // use mtl + if ((0 == strncmp(token, "usemtl", 6))) + { + token += 6; + std::string namebuf = parseString(&token); + + int newMaterialId = -1; + std::map::const_iterator it = material_map.find(namebuf); + if (it != material_map.end()) + { + newMaterialId = it->second; + } + else + { + // { error!! material not found } + if (warn) + { + (*warn) += "material [ '" + namebuf + "' ] not found in .mtl\n"; + } + } + + if (newMaterialId != material) + { + // Create per-face material. Thus we don't add `shape` to `shapes` at + // this time. + // just clear `faceGroup` after `exportGroupsToShape()` call. + exportGroupsToShape( + &shape, + prim_group, + tags, + material, + name, + triangulate, + v, + warn + ); + prim_group.faceGroup.clear(); + material = newMaterialId; + } + + continue; + } + + // load mtl + if ((0 == strncmp(token, "mtllib", 6)) && IS_SPACE((token[6]))) + { + if (readMatFn) + { + token += 7; + + std::vector filenames; + SplitString(std::string(token), ' ', '\\', filenames); + + if (filenames.empty()) + { + if (warn) + { + std::stringstream ss; + ss << "Looks like empty filename for mtllib. Use default " + "material (line " + << line_num << ".)\n"; + + (*warn) += ss.str(); + } + } + else + { + bool found = false; + for (size_t s = 0; s < filenames.size(); s++) + { + if (material_filenames.count(filenames[s]) > 0) + { + found = true; + continue; + } + + std::string warn_mtl; + std::string err_mtl; + bool ok = (*readMatFn)( + filenames[s].c_str(), + materials, + &material_map, + &warn_mtl, + &err_mtl + ); + if (warn && (!warn_mtl.empty())) + { + (*warn) += warn_mtl; + } + + if (err && (!err_mtl.empty())) + { + (*err) += err_mtl; + } + + if (ok) + { + found = true; + material_filenames.insert(filenames[s]); + break; + } + } + + if (!found) + { + if (warn) + { + (*warn) += "Failed to load material file(s). Use default " + "material.\n"; + } + } + } + } + + continue; + } + + // group name + if (token[0] == 'g' && IS_SPACE((token[1]))) + { + // flush previous face group. + bool ret = exportGroupsToShape( + &shape, + prim_group, + tags, + material, + name, + triangulate, + v, + warn + ); + (void)ret; // return value not used. + + if (shape.mesh.indices.size() > 0) + { + shapes->push_back(shape); + } + + shape = shape_t(); + + // material = -1; + prim_group.clear(); + + std::vector names; + + while (!IS_NEW_LINE(token[0]) && token[0] != '#') + { + std::string str = parseString(&token); + names.push_back(str); + token += strspn(token, " \t\r"); // skip tag + } + + // names[0] must be 'g' + + if (names.size() < 2) + { + // 'g' with empty names + if (warn) + { + std::stringstream ss; + ss << "Empty group name. line: " << line_num << "\n"; + (*warn) += ss.str(); + name = ""; + } + } + else + { + std::stringstream ss; + ss << names[1]; + + // tinyobjloader does not support multiple groups for a primitive. + // Currently we concatinate multiple group names with a space to get + // single group name. + + for (size_t i = 2; i < names.size(); i++) + { + ss << " " << names[i]; + } + + name = ss.str(); + } + + continue; + } + + // object name + if (token[0] == 'o' && IS_SPACE((token[1]))) + { + // flush previous face group. + bool ret = exportGroupsToShape( + &shape, + prim_group, + tags, + material, + name, + triangulate, + v, + warn + ); + (void)ret; // return value not used. + + if (shape.mesh.indices.size() > 0 || shape.lines.indices.size() > 0 + || shape.points.indices.size() > 0) + { + shapes->push_back(shape); + } + + // material = -1; + prim_group.clear(); + shape = shape_t(); + + // @todo { multiple object name? } + token += 2; + std::stringstream ss; + ss << token; + name = ss.str(); + + continue; + } + + if (token[0] == 't' && IS_SPACE(token[1])) + { + const int max_tag_nums = 8192; // FIXME(syoyo): Parameterize. + tag_t tag; + + token += 2; + + tag.name = parseString(&token); + + tag_sizes ts = parseTagTriple(&token); + + if (ts.num_ints < 0) + { + ts.num_ints = 0; + } + if (ts.num_ints > max_tag_nums) + { + ts.num_ints = max_tag_nums; + } + + if (ts.num_reals < 0) + { + ts.num_reals = 0; + } + if (ts.num_reals > max_tag_nums) + { + ts.num_reals = max_tag_nums; + } + + if (ts.num_strings < 0) + { + ts.num_strings = 0; + } + if (ts.num_strings > max_tag_nums) + { + ts.num_strings = max_tag_nums; + } + + tag.intValues.resize(static_cast(ts.num_ints)); + + for (size_t i = 0; i < static_cast(ts.num_ints); ++i) + { + tag.intValues[i] = parseInt(&token); + } + + tag.floatValues.resize(static_cast(ts.num_reals)); + for (size_t i = 0; i < static_cast(ts.num_reals); ++i) + { + tag.floatValues[i] = parseReal(&token); + } + + tag.stringValues.resize(static_cast(ts.num_strings)); + for (size_t i = 0; i < static_cast(ts.num_strings); ++i) + { + tag.stringValues[i] = parseString(&token); + } + + tags.push_back(tag); + + continue; + } + + if (token[0] == 's' && IS_SPACE(token[1])) + { + // smoothing group id + token += 2; + + // skip space. + token += strspn(token, " \t"); // skip space + + if (token[0] == '\0') + { + continue; + } + + if (token[0] == '\r' || token[1] == '\n') + { + continue; + } + + if (strlen(token) >= 3 && token[0] == 'o' && token[1] == 'f' && token[2] == 'f') + { + current_smoothing_id = 0; + } + else + { + // assume number + int smGroupId = parseInt(&token); + if (smGroupId < 0) + { + // parse error. force set to 0. + // FIXME(syoyo): Report warning. + current_smoothing_id = 0; + } + else + { + current_smoothing_id = static_cast(smGroupId); + } + } + + continue; + } // smoothing group id + + // Ignore unknown command. + } + + // not all vertices have colors, no default colors desired? -> clear colors + if (!found_all_colors && !default_vcols_fallback) + { + vc.clear(); + } + + if (greatest_v_idx >= static_cast(v.size() / 3)) + { + if (warn) + { + std::stringstream ss; + ss << "Vertex indices out of bounds (line " << line_num << ".)\n\n"; + (*warn) += ss.str(); + } + } + if (greatest_vn_idx >= static_cast(vn.size() / 3)) + { + if (warn) + { + std::stringstream ss; + ss << "Vertex normal indices out of bounds (line " << line_num << ".)\n\n"; + (*warn) += ss.str(); + } + } + if (greatest_vt_idx >= static_cast(vt.size() / 2)) + { + if (warn) + { + std::stringstream ss; + ss << "Vertex texcoord indices out of bounds (line " << line_num << ".)\n\n"; + (*warn) += ss.str(); + } + } + + bool ret = + exportGroupsToShape(&shape, prim_group, tags, material, name, triangulate, v, warn); + // exportGroupsToShape return false when `usemtl` is called in the last + // line. + // we also add `shape` to `shapes` when `shape.mesh` has already some + // faces(indices) + if (ret || shape.mesh.indices.size()) + { // FIXME(syoyo): Support other prims(e.g. lines) + shapes->push_back(shape); + } + prim_group.clear(); // for safety + + if (err) + { + (*err) += errss.str(); + } + + attrib->vertices.swap(v); + attrib->vertex_weights.swap(vertex_weights); + attrib->normals.swap(vn); + attrib->texcoords.swap(vt); + attrib->texcoord_ws.swap(vt); + attrib->colors.swap(vc); + attrib->skin_weights.swap(vw); + + return true; + } + + bool LoadObjWithCallback( + std::istream& inStream, + const callback_t& callback, + void* user_data /*= NULL*/, + MaterialReader* readMatFn /*= NULL*/, + std::string* warn, /* = NULL*/ + std::string* err /*= NULL*/ + ) + { + std::stringstream errss; + + // material + std::set material_filenames; + std::map material_map; + int material_id = -1; // -1 = invalid + + std::vector indices; + std::vector materials; + std::vector names; + names.reserve(2); + std::vector names_out; + + std::string linebuf; + while (inStream.peek() != -1) + { + safeGetline(inStream, linebuf); + + // Trim newline '\r\n' or '\n' + if (linebuf.size() > 0) + { + if (linebuf[linebuf.size() - 1] == '\n') + { + linebuf.erase(linebuf.size() - 1); + } + } + if (linebuf.size() > 0) + { + if (linebuf[linebuf.size() - 1] == '\r') + { + linebuf.erase(linebuf.size() - 1); + } + } + + // Skip if empty line. + if (linebuf.empty()) + { + continue; + } + + // Skip leading space. + const char* token = linebuf.c_str(); + token += strspn(token, " \t"); + + assert(token); + if (token[0] == '\0') + { + continue; // empty line + } + + if (token[0] == '#') + { + continue; // comment line + } + + // vertex + if (token[0] == 'v' && IS_SPACE((token[1]))) + { + token += 2; + real_t x, y, z; + real_t r, g, b; + + int num_components = parseVertexWithColor(&x, &y, &z, &r, &g, &b, &token); + if (callback.vertex_cb) + { + callback.vertex_cb(user_data, x, y, z, r); // r=w is optional + } + if (callback.vertex_color_cb) + { + bool found_color = (num_components == 6); + callback.vertex_color_cb(user_data, x, y, z, r, g, b, found_color); + } + continue; + } + + // normal + if (token[0] == 'v' && token[1] == 'n' && IS_SPACE((token[2]))) + { + token += 3; + real_t x, y, z; + parseReal3(&x, &y, &z, &token); + if (callback.normal_cb) + { + callback.normal_cb(user_data, x, y, z); + } + continue; + } + + // texcoord + if (token[0] == 'v' && token[1] == 't' && IS_SPACE((token[2]))) + { + token += 3; + real_t x, y, z; // y and z are optional. default = 0.0 + parseReal3(&x, &y, &z, &token); + if (callback.texcoord_cb) + { + callback.texcoord_cb(user_data, x, y, z); + } + continue; + } + + // face + if (token[0] == 'f' && IS_SPACE((token[1]))) + { + token += 2; + token += strspn(token, " \t"); + + indices.clear(); + while (!IS_NEW_LINE(token[0]) && token[0] != '#') + { + vertex_index_t vi = parseRawTriple(&token); + + index_t idx; + idx.vertex_index = vi.v_idx; + idx.normal_index = vi.vn_idx; + idx.texcoord_index = vi.vt_idx; + + indices.push_back(idx); + size_t n = strspn(token, " \t\r"); + token += n; + } + + if (callback.index_cb && indices.size() > 0) + { + callback.index_cb(user_data, &indices.at(0), static_cast(indices.size())); + } + + continue; + } + + // use mtl + if ((0 == strncmp(token, "usemtl", 6)) && IS_SPACE((token[6]))) + { + token += 7; + std::stringstream ss; + ss << token; + std::string namebuf = ss.str(); + + int newMaterialId = -1; + std::map::const_iterator it = material_map.find(namebuf); + if (it != material_map.end()) + { + newMaterialId = it->second; + } + else + { + // { warn!! material not found } + if (warn && (!callback.usemtl_cb)) + { + (*warn) += "material [ " + namebuf + " ] not found in .mtl\n"; + } + } + + if (newMaterialId != material_id) + { + material_id = newMaterialId; + } + + if (callback.usemtl_cb) + { + callback.usemtl_cb(user_data, namebuf.c_str(), material_id); + } + + continue; + } + + // load mtl + if ((0 == strncmp(token, "mtllib", 6)) && IS_SPACE((token[6]))) + { + if (readMatFn) + { + token += 7; + + std::vector filenames; + SplitString(std::string(token), ' ', '\\', filenames); + + if (filenames.empty()) + { + if (warn) + { + (*warn) += "Looks like empty filename for mtllib. Use default " + "material. \n"; + } + } + else + { + bool found = false; + for (size_t s = 0; s < filenames.size(); s++) + { + if (material_filenames.count(filenames[s]) > 0) + { + found = true; + continue; + } + + std::string warn_mtl; + std::string err_mtl; + bool ok = (*readMatFn)( + filenames[s].c_str(), + &materials, + &material_map, + &warn_mtl, + &err_mtl + ); + + if (warn && (!warn_mtl.empty())) + { + (*warn) += warn_mtl; // This should be warn message. + } + + if (err && (!err_mtl.empty())) + { + (*err) += err_mtl; + } + + if (ok) + { + found = true; + material_filenames.insert(filenames[s]); + break; + } + } + + if (!found) + { + if (warn) + { + (*warn) += "Failed to load material file(s). Use default " + "material.\n"; + } + } + else + { + if (callback.mtllib_cb) + { + callback.mtllib_cb( + user_data, + &materials.at(0), + static_cast(materials.size()) + ); + } + } + } + } + + continue; + } + + // group name + if (token[0] == 'g' && IS_SPACE((token[1]))) + { + names.clear(); + + while (!IS_NEW_LINE(token[0]) && token[0] != '#') + { + std::string str = parseString(&token); + names.push_back(str); + token += strspn(token, " \t\r"); // skip tag + } + + assert(names.size() > 0); + + if (callback.group_cb) + { + if (names.size() > 1) + { + // create const char* array. + names_out.resize(names.size() - 1); + for (size_t j = 0; j < names_out.size(); j++) + { + names_out[j] = names[j + 1].c_str(); + } + callback.group_cb( + user_data, + &names_out.at(0), + static_cast(names_out.size()) + ); + } + else + { + callback.group_cb(user_data, NULL, 0); + } + } + + continue; + } + + // object name + if (token[0] == 'o' && IS_SPACE((token[1]))) + { + // @todo { multiple object name? } + token += 2; + + std::stringstream ss; + ss << token; + std::string object_name = ss.str(); + + if (callback.object_cb) + { + callback.object_cb(user_data, object_name.c_str()); + } + + continue; + } + +#if 0 // @todo + if (token[0] == 't' && IS_SPACE(token[1])) { + tag_t tag; + + token += 2; + std::stringstream ss; + ss << token; + tag.name = ss.str(); + + token += tag.name.size() + 1; + + tag_sizes ts = parseTagTriple(&token); + + tag.intValues.resize(static_cast(ts.num_ints)); + + for (size_t i = 0; i < static_cast(ts.num_ints); ++i) { + tag.intValues[i] = atoi(token); + token += strcspn(token, "/ \t\r") + 1; + } + + tag.floatValues.resize(static_cast(ts.num_reals)); + for (size_t i = 0; i < static_cast(ts.num_reals); ++i) { + tag.floatValues[i] = parseReal(&token); + token += strcspn(token, "/ \t\r") + 1; + } + + tag.stringValues.resize(static_cast(ts.num_strings)); + for (size_t i = 0; i < static_cast(ts.num_strings); ++i) { + std::stringstream ss; + ss << token; + tag.stringValues[i] = ss.str(); + token += tag.stringValues[i].size() + 1; + } + + tags.push_back(tag); + } +#endif + + // Ignore unknown command. + } + + if (err) + { + (*err) += errss.str(); + } + + return true; + } + + bool ObjReader::ParseFromFile(const std::string& filename, const ObjReaderConfig& config) + { + std::string mtl_search_path; + + if (config.mtl_search_path.empty()) + { + // + // split at last '/'(for unixish system) or '\\'(for windows) to get + // the base directory of .obj file + // + size_t pos = filename.find_last_of("/\\"); + if (pos != std::string::npos) + { + mtl_search_path = filename.substr(0, pos); + } + } + else + { + mtl_search_path = config.mtl_search_path; + } + + valid_ = LoadObj( + &attrib_, + &shapes_, + &materials_, + &warning_, + &error_, + filename.c_str(), + mtl_search_path.c_str(), + config.triangulate, + config.vertex_color + ); + + return valid_; + } + + bool ObjReader::ParseFromString( + const std::string& obj_text, + const std::string& mtl_text, + const ObjReaderConfig& config + ) + { + std::stringbuf obj_buf(obj_text); + std::stringbuf mtl_buf(mtl_text); + + std::istream obj_ifs(&obj_buf); + std::istream mtl_ifs(&mtl_buf); + + MaterialStreamReader mtl_ss(mtl_ifs); + + valid_ = LoadObj( + &attrib_, + &shapes_, + &materials_, + &warning_, + &error_, + &obj_ifs, + &mtl_ss, + config.triangulate, + config.vertex_color + ); + + return valid_; + } + +#ifdef __clang__ + #pragma clang diagnostic pop +#endif +} // namespace tinyobj + +#endif diff --git a/src/main.cpp b/src/main.cpp index a16a572..ed0bf5e 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -2,13 +2,15 @@ #include #include #include +#include "VulkanDeviceManager.h" #include "imgui.h" #include "imgui_impl_glfw.h" #include "imgui_impl_vulkan.h" #include "utilities/Logger.h" #include "GlfwWindowManager.h" -#include "VulkanContext.h" +#include "VulkanContext.hpp" +#include "Primitives.h" struct AppConfig { @@ -28,15 +30,18 @@ struct AppConfig // }; const std::vector SquareVertices = { - { { -0.5f, -0.5f }, { 1.0f, 0.0f, 0.0f } }, - { { 0.5f, -0.5f }, { 0.0f, 1.0f, 0.0f } }, - { { 0.5f, 0.5f }, { 0.0f, 0.0f, 1.0f } }, - { { -0.5f, 0.5f }, { 1.0f, 1.0f, 1.0f } } + { { -0.5f, -0.5f, 0.0f }, { 1.0f, 0.0f, 0.0f }, { 1.0f, 0.0f } }, + { { 0.5f, -0.5f, 0.0f }, { 0.0f, 1.0f, 0.0f }, { 0.0f, 0.0f } }, + { { 0.5f, 0.5f, 0.0f }, { 0.0f, 0.0f, 1.0f }, { 0.0f, 1.0f } }, + { { -0.5f, 0.5f, 0.0f }, { 1.0f, 1.0f, 1.0f }, { 1.0f, 1.0f } }, + + { { -0.5f, -0.5f, -0.5f }, { 1.0f, 0.0f, 0.0f }, { 1.0f, 0.0f } }, + { { 0.5f, -0.5f, -0.5f }, { 0.0f, 1.0f, 0.0f }, { 0.0f, 0.0f } }, + { { 0.5f, 0.5f, -0.5f }, { 0.0f, 0.0f, 1.0f }, { 0.0f, 1.0f } }, + { { -0.5f, 0.5f, -0.5f }, { 1.0f, 1.0f, 1.0f }, { 1.0f, 1.0f } } }; -const std::vector SquareIndices = { - 0, 1, 2, 2, 3, 0 -}; +const std::vector SquareIndices = { 0, 1, 2, 2, 3, 0, 4, 5, 6, 6, 7, 4 }; class HelloTriangleApplication { @@ -105,13 +110,11 @@ private: void InitGlfw() { - FWindowConfig Config = { - Settings.Title, - Settings.Width, - Settings.Height, - Settings.bResizable, - Settings.bFullscreen - }; + FWindowConfig Config = { Settings.Title, + Settings.Width, + Settings.Height, + Settings.bResizable, + Settings.bFullscreen }; WindowManager.Initialize(Config); glfwSetWindowUserPointer(WindowManager.GetWindow(), this); @@ -129,7 +132,7 @@ private: void MainLoop() { VkPhysicalDeviceProperties Properties{}; - vkGetPhysicalDeviceProperties(VkContext.DeviceManager.GetPhysicalDevice(), &Properties); + vkGetPhysicalDeviceProperties(VkContext.DeviceManager->GetPhysicalDevice(), &Properties); while (!WindowManager.ShouldClose()) { diff --git a/src/private/VulkanBuffers.cpp b/src/private/VulkanBuffers.cpp new file mode 100644 index 0000000..4c73a6c --- /dev/null +++ b/src/private/VulkanBuffers.cpp @@ -0,0 +1,479 @@ +#include "VulkanBuffers.h" + +#include "imgui.h" +#include "imgui_impl_vulkan.h" +#include "utilities/Logger.h" +#include +#include + +void VulkanBuffers::Initialize(FBufferConfig InConfig) +// VkDevice InDevice, +// VkRenderPass InRenderPass) +{ + Config = InConfig; +} + +void VulkanBuffers::Cleanup(size_t MAX_FRAMES_IN_FLIGHT) +{ + vkDestroyCommandPool(Config.Device, CommandPool, nullptr); + + for (size_t i = 0; i < MAX_FRAMES_IN_FLIGHT; i++) + { + vkDestroyBuffer(Config.Device, UniformBuffers[i], nullptr); + vkFreeMemory(Config.Device, UniformBuffersMemory[i], nullptr); + } + + vkDestroyBuffer(Config.Device, IndexBuffer, nullptr); + vkFreeMemory(Config.Device, IndexBufferMemory, nullptr); + + vkDestroyBuffer(Config.Device, VertexBuffer, nullptr); + vkFreeMemory(Config.Device, VertexBufferMemory, nullptr); +} + +void VulkanBuffers::CreateCommandPool(std::optional GraphicsFamily) +{ + VkCommandPoolCreateInfo PoolInfo{}; + PoolInfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO; + PoolInfo.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT; + PoolInfo.queueFamilyIndex = GraphicsFamily.value(); + + if (vkCreateCommandPool(Config.Device, &PoolInfo, nullptr, &CommandPool) != VK_SUCCESS) + { + Log::Error("Failed to create command pool!"); + } + else + { + Log::Info("Successfully created command pool"); + } +} + +void VulkanBuffers::CreateCommandBuffers(int FramesInFlight) +{ + CommandBuffers.resize(FramesInFlight); + VkCommandBufferAllocateInfo AllocateInfo{}; + AllocateInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO; + AllocateInfo.commandPool = CommandPool; + AllocateInfo.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY; + AllocateInfo.commandBufferCount = (uint32_t)CommandBuffers.size(); + + if (vkAllocateCommandBuffers(Config.Device, &AllocateInfo, CommandBuffers.data()) != VK_SUCCESS) + { + Log::Error("Failed to allocate command buffers!"); + } + else + { + Log::Info("Successfully allocated command buffers."); + } +} + +void VulkanBuffers::RecordCommandBuffer(FRecordBuffersParams& Params) +{ + VkCommandBufferBeginInfo BeginInfo{}; + BeginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; + BeginInfo.flags = 0; + BeginInfo.pInheritanceInfo = nullptr; + + if (vkBeginCommandBuffer(Params.InCommandBuffer, &BeginInfo) != VK_SUCCESS) + { + Log::Error("Failed to begin recording command buffer!"); + } + else + { + // Log::Info("Successfully began recording command buffers."); + } + + VkRenderPassBeginInfo RenderPassInfo{}; + RenderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO; + RenderPassInfo.renderPass = Config.RenderPass; + RenderPassInfo.framebuffer = Params.SwapChainFramebuffers[Params.ImageIndex]; + RenderPassInfo.renderArea.offset = { 0, 0 }; + RenderPassInfo.renderArea.extent = { Params.SwapChainExtent }; + + std::array ClearValues{}; + ClearValues[0].color = { { 0.0f, 0.0f, 0.0f, 1.0f } }; + ClearValues[1].depthStencil = { 1.0f, 0 }; + RenderPassInfo.clearValueCount = static_cast(ClearValues.size()); + RenderPassInfo.pClearValues = ClearValues.data(); + + vkCmdBeginRenderPass(Params.InCommandBuffer, &RenderPassInfo, VK_SUBPASS_CONTENTS_INLINE); + + vkCmdBindPipeline( + Params.InCommandBuffer, + VK_PIPELINE_BIND_POINT_GRAPHICS, + Params.GraphicsPipeline + ); + + VkViewport Viewport{}; + Viewport.x = 0.0f; + Viewport.y = 0.0f; + Viewport.width = static_cast(Params.SwapChainExtent.width); + Viewport.height = static_cast(Params.SwapChainExtent.height); + Viewport.minDepth = 0.0f; + Viewport.maxDepth = 1.0f; + vkCmdSetViewport(Params.InCommandBuffer, 0, 1, &Viewport); + + VkRect2D Scissor{}; + Scissor.offset = { 0, 0 }; + Scissor.extent = Params.SwapChainExtent; + vkCmdSetScissor(Params.InCommandBuffer, 0, 1, &Scissor); + + VkBuffer VertexBuffers[] = { Params.InVertexBuffer }; + VkDeviceSize Offsets[] = { 0 }; + vkCmdBindVertexBuffers(Params.InCommandBuffer, 0, 1, VertexBuffers, Offsets); + vkCmdBindIndexBuffer(Params.InCommandBuffer, Params.InIndexBuffer, 0, VK_INDEX_TYPE_UINT16); + + vkCmdBindDescriptorSets( + Params.InCommandBuffer, + VK_PIPELINE_BIND_POINT_GRAPHICS, + Params.PipelineLayout, + 0, + 1, + &Params.DescriptorSet, + 0, + nullptr + ); + + // vkCmdDraw(Params.InCommandBuffer, static_cast(Params.InVerticesSize), 1, 0, 0); + vkCmdDrawIndexed(Params.InCommandBuffer, static_cast(Params.InIndexSize), 1, 0, 0, 0); + + if (Params.bDrawImGui) + { + ImGui::Render(); + ImGui_ImplVulkan_RenderDrawData(ImGui::GetDrawData(), Params.InCommandBuffer); + } + + vkCmdEndRenderPass(Params.InCommandBuffer); + + if (vkEndCommandBuffer(Params.InCommandBuffer) != VK_SUCCESS) + { + Log::Error("Failed to record command buffer!"); + } + else + { + // Log::Info("Successfully recorded command buffer."); + } +} + +VkCommandBuffer VulkanBuffers::BeginSingleTimeCommands() +{ + VkCommandBufferAllocateInfo AllocateInfo{}; + AllocateInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO; + AllocateInfo.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY; + AllocateInfo.commandPool = CommandPool; + AllocateInfo.commandBufferCount = 1; + + VkCommandBuffer CommandBuffer; + vkAllocateCommandBuffers(Config.Device, &AllocateInfo, &CommandBuffer); + + VkCommandBufferBeginInfo BeginInfo{}; + BeginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; + BeginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT; + + vkBeginCommandBuffer(CommandBuffer, &BeginInfo); + + return CommandBuffer; +} + +void VulkanBuffers::EndSingleTimeCommands(VkCommandBuffer InCommandBuffer, VkQueue GraphicsQueue) +{ + vkEndCommandBuffer(InCommandBuffer); + + VkSubmitInfo SubmitInfo{}; + SubmitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; + SubmitInfo.commandBufferCount = 1; + SubmitInfo.pCommandBuffers = &InCommandBuffer; + + vkQueueSubmit(GraphicsQueue, 1, &SubmitInfo, VK_NULL_HANDLE); + vkQueueWaitIdle(GraphicsQueue); + + vkFreeCommandBuffers(Config.Device, CommandPool, 1, &InCommandBuffer); +} + +void VulkanBuffers::TransitionImageLayout( + VkImage Image, + VkFormat Format, + VkImageLayout OldLayout, + VkImageLayout NewLayout, + bool bHasStencilComponent +) +{ + VkCommandBuffer CommandBuffer = BeginSingleTimeCommands(); + + VkImageMemoryBarrier Barrier{}; + Barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER; + Barrier.oldLayout = OldLayout; + Barrier.newLayout = NewLayout; + Barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; + Barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; + Barrier.image = Image; + Barrier.subresourceRange.baseMipLevel = 0; + Barrier.subresourceRange.levelCount = 1; + Barrier.subresourceRange.baseArrayLayer = 0; + Barrier.subresourceRange.layerCount = 1; + Barrier.srcAccessMask = 0; + Barrier.dstAccessMask = 0; + + VkPipelineStageFlags SourceStage; + VkPipelineStageFlags DestinationStage; + + if (NewLayout == VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL) + { + Barrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT; + + if (bHasStencilComponent) + { + Barrier.subresourceRange.aspectMask |= VK_IMAGE_ASPECT_STENCIL_BIT; + } + } + else + { + Barrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + } + + if (OldLayout == VK_IMAGE_LAYOUT_UNDEFINED && NewLayout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL) + { + Barrier.srcAccessMask = 0; + Barrier.dstAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT; + + SourceStage = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; + DestinationStage = VK_PIPELINE_STAGE_TRANSFER_BIT; + } + else if (OldLayout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL + && NewLayout == VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL) + { + Barrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT; + Barrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT; + + SourceStage = VK_PIPELINE_STAGE_TRANSFER_BIT; + DestinationStage = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT; + } + else if (OldLayout == VK_IMAGE_LAYOUT_UNDEFINED + && NewLayout == VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL) + { + Barrier.srcAccessMask = 0; + Barrier.dstAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT + | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT; + + SourceStage = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; + DestinationStage = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT; + } + else + { + Log::Error("Unsupported layout transition!"); + } + + vkCmdPipelineBarrier( + CommandBuffer, + SourceStage, + DestinationStage, + 0, + 0, + nullptr, + 0, + nullptr, + 1, + &Barrier + ); + + EndSingleTimeCommands(CommandBuffer, Config.GraphicsQueue); +} + +void VulkanBuffers::CopyBufferToImage( + VkBuffer Buffer, + VkImage Image, + uint32_t Width, + uint32_t Height +) +{ + VkCommandBuffer CommandBuffer = BeginSingleTimeCommands(); + + VkBufferImageCopy Region{}; + Region.bufferOffset = 0; + Region.bufferRowLength = 0; + Region.bufferImageHeight = 0; + Region.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + Region.imageSubresource.mipLevel = 0; + Region.imageSubresource.baseArrayLayer = 0; + Region.imageSubresource.layerCount = 1; + + Region.imageOffset = { 0, 0, 0 }; + Region.imageExtent = { Width, Height, 1 }; + + vkCmdCopyBufferToImage( + CommandBuffer, + Buffer, + Image, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + 1, + &Region + ); + + EndSingleTimeCommands(CommandBuffer, Config.GraphicsQueue); +} + +void VulkanBuffers::CopyBuffer( + VkQueue GraphicsQueue, + VkBuffer SrcBuffer, + VkBuffer DstBuffer, + VkDeviceSize Size +) +{ + VkCommandBuffer CommandBuffer = BeginSingleTimeCommands(); + + VkBufferCopy CopyRegion{}; + CopyRegion.size = Size; + vkCmdCopyBuffer(CommandBuffer, SrcBuffer, DstBuffer, 1, &CopyRegion); + + EndSingleTimeCommands(CommandBuffer, GraphicsQueue); +} + +void VulkanBuffers::CreateBuffer( + VkDeviceSize Size, + VkBufferUsageFlags Usage, + VkMemoryPropertyFlags Properties, + VkBuffer& Buffer, + VkDeviceMemory& BufferMemory +) +{ + VkBufferCreateInfo BufferInfo{}; + BufferInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; + BufferInfo.size = Size; + BufferInfo.usage = Usage; + BufferInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; + + if (vkCreateBuffer(Config.Device, &BufferInfo, nullptr, &Buffer) != VK_SUCCESS) + { + throw std::runtime_error("failed to create buffer!"); + } + + VkMemoryRequirements MemRequirements; + vkGetBufferMemoryRequirements(Config.Device, Buffer, &MemRequirements); + + VkMemoryAllocateInfo allocInfo{}; + allocInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; + allocInfo.allocationSize = MemRequirements.size; + allocInfo.memoryTypeIndex = FindMemoryType(MemRequirements.memoryTypeBits, Properties); + + if (vkAllocateMemory(Config.Device, &allocInfo, nullptr, &BufferMemory) != VK_SUCCESS) + { + throw std::runtime_error("failed to allocate buffer memory!"); + } + + vkBindBufferMemory(Config.Device, Buffer, BufferMemory, 0); +} + +void VulkanBuffers::CreateVertexBuffer(const std::vector& InVertices) +{ + VkDeviceSize BufferSize = sizeof(InVertices[0]) * InVertices.size(); + + VkBuffer StagingBuffer; + VkDeviceMemory StagingBufferMemory; + CreateBuffer( + BufferSize, + VK_BUFFER_USAGE_TRANSFER_SRC_BIT, + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, + StagingBuffer, + StagingBufferMemory + ); + Log::Info("Starting buffer copy..."); + + void* Data; + vkMapMemory(Config.Device, StagingBufferMemory, 0, BufferSize, 0, &Data); + memcpy(Data, InVertices.data(), (size_t)BufferSize); + vkUnmapMemory(Config.Device, StagingBufferMemory); + + Log::Info("Finished buffer copy..."); + CreateBuffer( + BufferSize, + VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, + VertexBuffer, + VertexBufferMemory + ); + + CopyBuffer(Config.GraphicsQueue, StagingBuffer, VertexBuffer, BufferSize); + + vkDestroyBuffer(Config.Device, StagingBuffer, nullptr); + vkFreeMemory(Config.Device, StagingBufferMemory, nullptr); +} + +void VulkanBuffers::CreateIndexBuffer(const std::vector& InIndices) +{ + VkDeviceSize BufferSize = sizeof(InIndices[0]) * InIndices.size(); + + VkBuffer StagingBuffer; + VkDeviceMemory StagingBufferMemory; + CreateBuffer( + BufferSize, + VK_BUFFER_USAGE_TRANSFER_SRC_BIT, + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, + StagingBuffer, + StagingBufferMemory + ); + Log::Info("Starting buffer copy..."); + + void* Data; + vkMapMemory(Config.Device, StagingBufferMemory, 0, BufferSize, 0, &Data); + memcpy(Data, InIndices.data(), (size_t)BufferSize); + vkUnmapMemory(Config.Device, StagingBufferMemory); + + Log::Info("Finished buffer copy..."); + CreateBuffer( + BufferSize, + VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_INDEX_BUFFER_BIT, + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, + IndexBuffer, + IndexBufferMemory + ); + + CopyBuffer(Config.GraphicsQueue, StagingBuffer, IndexBuffer, BufferSize); + + vkDestroyBuffer(Config.Device, StagingBuffer, nullptr); + vkFreeMemory(Config.Device, StagingBufferMemory, nullptr); +} + +void VulkanBuffers::CreateUniformBuffers(const uint32_t MAX_FRAMES_IN_FLIGHT) +{ + VkDeviceSize BufferSize = sizeof(UniformBufferObject); + + UniformBuffers.resize(MAX_FRAMES_IN_FLIGHT); + UniformBuffersMemory.resize(MAX_FRAMES_IN_FLIGHT); + UniformBuffersMapped.resize(MAX_FRAMES_IN_FLIGHT); + + for (size_t i = 0; i < MAX_FRAMES_IN_FLIGHT; i++) + { + CreateBuffer( + BufferSize, + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, + UniformBuffers[i], + UniformBuffersMemory[i] + ); + vkMapMemory( + Config.Device, + UniformBuffersMemory[i], + 0, + BufferSize, + 0, + &UniformBuffersMapped[i] + ); + } +} + +uint32_t VulkanBuffers::FindMemoryType(uint32_t TypeFilter, VkMemoryPropertyFlags Properties) +{ + VkPhysicalDeviceMemoryProperties MemoryProperties; + vkGetPhysicalDeviceMemoryProperties(Config.PhysicalDevice, &MemoryProperties); + + for (uint32_t i = 0; i < MemoryProperties.memoryTypeCount; i++) + { + if ((TypeFilter & (1 << i)) + && (MemoryProperties.memoryTypes[i].propertyFlags & Properties) == Properties) + { + return i; + } + } + + Log::Error("Failed to find suitable memory type!"); + return 0; +} diff --git a/src/private/VulkanCommandBuffers.cpp b/src/private/VulkanCommandBuffers.cpp deleted file mode 100644 index fd23235..0000000 --- a/src/private/VulkanCommandBuffers.cpp +++ /dev/null @@ -1,129 +0,0 @@ -#include "VulkanCommandBuffers.h" - -#include "imgui.h" -#include "imgui_impl_vulkan.h" -#include "utilities/Logger.h" -#include -#include - -void VulkanCommandBuffers::Initialize( - VkDevice InDevice, - VkRenderPass InRenderPass) -{ - Device = InDevice; - RenderPass = InRenderPass; -} - -void VulkanCommandBuffers::Cleanup() -{ - vkDestroyCommandPool(Device, CommandPool, nullptr); -} - -void VulkanCommandBuffers::CreateCommandPool(std::optional GraphicsFamily) -{ - VkCommandPoolCreateInfo PoolInfo{}; - PoolInfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO; - PoolInfo.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT; - PoolInfo.queueFamilyIndex = GraphicsFamily.value(); - - if (vkCreateCommandPool(Device, &PoolInfo, nullptr, &CommandPool) != VK_SUCCESS) - { - Log::Error("Failed to create command pool!"); - } - else - { - Log::Info("Successfully created command pool"); - } -} - -void VulkanCommandBuffers::CreateCommandBuffers(int FramesInFlight) -{ - CommandBuffers.resize(FramesInFlight); - VkCommandBufferAllocateInfo AllocateInfo{}; - AllocateInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO; - AllocateInfo.commandPool = CommandPool; - AllocateInfo.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY; - AllocateInfo.commandBufferCount = (uint32_t)CommandBuffers.size(); - - if (vkAllocateCommandBuffers(Device, &AllocateInfo, CommandBuffers.data()) != VK_SUCCESS) - { - Log::Error("Failed to allocate command buffers!"); - } - else - { - Log::Info("Successfully allocated command buffers."); - } -} - -void VulkanCommandBuffers::RecordCommandBuffer(FRecordCommandBuffersParams& Params) -{ - VkCommandBufferBeginInfo BeginInfo{}; - BeginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; - BeginInfo.flags = 0; - BeginInfo.pInheritanceInfo = nullptr; - - if (vkBeginCommandBuffer(Params.InCommandBuffer, &BeginInfo) != VK_SUCCESS) - { - Log::Error("Failed to begin recording command buffer!"); - } - else - { - // Log::Info("Successfully began recording command buffers."); - } - - VkRenderPassBeginInfo RenderPassInfo{}; - RenderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO; - RenderPassInfo.renderPass = RenderPass; - RenderPassInfo.framebuffer = Params.SwapChainFramebuffers[Params.ImageIndex]; - RenderPassInfo.renderArea.offset = { 0, 0 }; - RenderPassInfo.renderArea.extent = { Params.SwapChainExtent }; - - VkClearValue ClearColor = { { { 0.0f, 0.0f, 0.0f, 1.0f } } }; - RenderPassInfo.clearValueCount = 1; - RenderPassInfo.pClearValues = &ClearColor; - - vkCmdBeginRenderPass(Params.InCommandBuffer, &RenderPassInfo, VK_SUBPASS_CONTENTS_INLINE); - - vkCmdBindPipeline(Params.InCommandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, Params.GraphicsPipeline); - - VkViewport Viewport{}; - Viewport.x = 0.0f; - Viewport.y = 0.0f; - Viewport.width = static_cast(Params.SwapChainExtent.width); - Viewport.height = static_cast(Params.SwapChainExtent.height); - Viewport.minDepth = 0.0f; - Viewport.maxDepth = 1.0f; - vkCmdSetViewport(Params.InCommandBuffer, 0, 1, &Viewport); - - VkRect2D Scissor{}; - Scissor.offset = { 0, 0 }; - Scissor.extent = Params.SwapChainExtent; - vkCmdSetScissor(Params.InCommandBuffer, 0, 1, &Scissor); - - VkBuffer VertexBuffers[] = { Params.InVertexBuffer }; - VkDeviceSize Offsets[] = { 0 }; - vkCmdBindVertexBuffers(Params.InCommandBuffer, 0, 1, VertexBuffers, Offsets); - vkCmdBindIndexBuffer(Params.InCommandBuffer, Params.InIndexBuffer, 0, VK_INDEX_TYPE_UINT16); - - vkCmdBindDescriptorSets(Params.InCommandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, Params.PipelineLayout, 0, 1, &Params.DescriptorSet, 0, nullptr); - - // vkCmdDraw(Params.InCommandBuffer, static_cast(Params.InVerticesSize), 1, 0, 0); - vkCmdDrawIndexed(Params.InCommandBuffer, static_cast(Params.InIndexSize), 1, 0, 0, 0); - - if (Params.bDrawImGui) - { - ImGui::Render(); - ImGui_ImplVulkan_RenderDrawData(ImGui::GetDrawData(), Params.InCommandBuffer); - } - - vkCmdEndRenderPass(Params.InCommandBuffer); - - if (vkEndCommandBuffer(Params.InCommandBuffer) != VK_SUCCESS) - { - Log::Error("Failed to record command buffer!"); - } - else - { - // Log::Info("Successfully recorded command buffer."); - } -} diff --git a/src/private/VulkanContext.cpp b/src/private/VulkanContext.cpp index b73473e..653f985 100755 --- a/src/private/VulkanContext.cpp +++ b/src/private/VulkanContext.cpp @@ -1,15 +1,24 @@ -#include "VulkanContext.h" -#include "VulkanCommandBuffers.h" +#include "VulkanContext.hpp" + +#include "VulkanTexture.hpp" +#include "VulkanBuffers.h" +#include "VulkanDebugManager.h" +// #include "VulkanDepthPass.hpp" #include "VulkanDeviceManager.h" #include "VulkanFramebuffers.h" +#include "VulkanInstanceManager.hpp" +#include "VulkanPipeline.h" +#include "VulkanRenderPass.h" #include "VulkanSwapChain.h" -#include "VulkanVertexBuffer.h" -#include "utilities/Logger.h" -#include "stb_image.h" +#include +#include +#include +#include #include "imgui_impl_glfw.h" #include "imgui_impl_vulkan.h" +#include "stb_image.h" #include #include @@ -20,120 +29,152 @@ #define GLM_FORCE_RADIANS #define GLM_FORCE_DEFAULT_ALIGNED_GENTYPES +#define GLM_FORCE_DEPTH_ZERO_TO_ONE #include #include -#include -#include -#include +#include "utilities/Logger.h" -VulkanContext::VulkanContext() -{ -} +VulkanContext::VulkanContext() {} -VulkanContext::~VulkanContext() -{ -} +VulkanContext::~VulkanContext() {} -void VulkanContext::Initialize(FVulkanConfig& InConfig, const std::vector& InVertices, const std::vector& InIndices) +void VulkanContext::Initialize( + FVulkanConfig& InConfig, + const std::vector& InVertices, + const std::vector& InIndices +) { Config = InConfig; + InstanceManager = std::make_unique(); + DebugManager = std::make_unique(); + if (Config.bValidationEnabled) { - InstanceManager.CreateInstance(&DebugManager); - DebugManager.Initialize(InstanceManager.GetInstance()); + InstanceManager->CreateInstance(DebugManager.get()); + DebugManager->Initialize(InstanceManager->GetInstance()); } else { - InstanceManager.CreateInstance(); + InstanceManager->CreateInstance(); } CreateSurface(InConfig.Window); - DeviceManager.Initialize(FDeviceConfig( - InstanceManager.GetInstance(), - Config.bValidationEnabled, + DeviceManager = std::make_unique( + InstanceManager->GetInstance(), Surface, - InConfig.Window)); - DeviceManager.PickPhysicalDevice(); - DeviceManager.CreateLogicalDevice(); + InConfig.Window, + Config.bValidationEnabled + ); + DeviceManager->PickPhysicalDevice(); + DeviceManager->CreateLogicalDevice(); - auto SwapChainSupport = DeviceManager.QuerySwapChainSupport(DeviceManager.GetPhysicalDevice()); + VkDevice Device = DeviceManager->GetDevice(); + VkPhysicalDevice PhysicalDevice = DeviceManager->GetPhysicalDevice(); + VkQueue GraphicsQueue = DeviceManager->GetGraphicsQueue(); - SwapChain.Initialize(FSwapConfig( - DeviceManager.GetDevice(), + RenderPass = std::make_unique(); + RenderPass->Initialize(Device); + + GraphicsPipeline = std::make_unique(); + GraphicsPipeline->Initialize(Device); + + auto SwapChainSupport = DeviceManager->QuerySwapChainSupport(PhysicalDevice); + SwapChain = std::make_unique( + Device, Surface, Config.Window, - DeviceManager.GetPhysicalQueueFamilies().GraphicsFamily, - DeviceManager.GetPhysicalQueueFamilies().PresentFamily, + DeviceManager->GetPhysicalQueueFamilies().GraphicsFamily.value(), + DeviceManager->GetPhysicalQueueFamilies().PresentFamily.value(), SwapChainSupport.Capabilities, SwapChainSupport.Formats, - SwapChainSupport.PresentModes)); + SwapChainSupport.PresentModes + ); + SwapChain->CreateSwapChain(); + SwapChain->CreateImageViews(); - SwapChain.CreateSwapChain(); - SwapChain.CreateImageViews(); + Buffers = std::make_unique(); - RenderPass.Initialize(DeviceManager.GetDevice()); - RenderPass.CreateRenderPass(SwapChain.GetSwapChainImageFormat()); + Textures = std::make_unique( + Device, + PhysicalDevice, + GraphicsQueue, + *Buffers, + *SwapChain + ); + + uint32_t imageCount = SwapChain->GetSwapChainImagesCount(); + MAX_FRAMES_IN_FLIGHT = imageCount; + + RenderPass->CreateRenderPass(SwapChain->GetSwapChainImageFormat(), Textures->FindDepthFormat()); CreateDescriptorSetLayout(); - GraphicsPipeline.Initialize(DeviceManager.GetDevice()); - GraphicsPipeline.CreateGraphicsPipeline(SwapChain.GetSwapChainExtent(), RenderPass.GetRenderPass(), DescriptorSetLayout); + GraphicsPipeline->CreateGraphicsPipeline( + SwapChain->GetSwapChainExtent(), + RenderPass->GetRenderPass(), + DescriptorSetLayout + ); - Framebuffers.Initialize(FFramebufferConfig( - DeviceManager.GetDevice(), - RenderPass.GetRenderPass(), - SwapChain.GetSwapChainImageViews(), - SwapChain.GetSwapChainExtent())); - Framebuffers.CreateFramebuffers(); + Buffers->Initialize( + FBufferConfig(Device, RenderPass->GetRenderPass(), PhysicalDevice, GraphicsQueue) + ); + Buffers->CreateCommandPool(DeviceManager->GetPhysicalQueueFamilies().GraphicsFamily); - CommandBuffers.Initialize(DeviceManager.GetDevice(), RenderPass.GetRenderPass()); - CommandBuffers.CreateCommandPool(DeviceManager.GetPhysicalQueueFamilies().GraphicsFamily); + Textures->CreateDepthResources(); - CreateTextureImage("textures/texture.jpg"); + Framebuffers = std::make_unique(); + Framebuffers->Initialize(FFramebufferConfig( + Device, + RenderPass->GetRenderPass(), + SwapChain->GetSwapChainImageViews(), + SwapChain->GetSwapChainExtent() + )); + Framebuffers->CreateFramebuffers(Textures->GetDepthImageView()); - VertexBuffer.Initialize(FVertexBufferConfig( - DeviceManager.GetDevice(), - DeviceManager.GetPhysicalDevice(), - CommandBuffers.GetCommandPool(), - DeviceManager.GetGraphicsQueue())); - VertexBuffer.CreateVertexBuffer(InVertices); - VertexBuffer.CreateIndexBuffer(InIndices); - VertexBuffer.CreateUniformBuffers(MAX_FRAMES_IN_FLIGHT); + Log::Info("textures"); + Textures->LoadFromFile("textures/texture.jpg"); + Textures->CreateImageView(); + Textures->CreateSampler(); + + Buffers->CreateVertexBuffer(InVertices); + Buffers->CreateIndexBuffer(InIndices); + Buffers->CreateUniformBuffers(MAX_FRAMES_IN_FLIGHT); CreateDescriptorPool(); CreateDescriptorSets(); - CommandBuffers.CreateCommandBuffers(MAX_FRAMES_IN_FLIGHT); + Buffers->CreateCommandBuffers(MAX_FRAMES_IN_FLIGHT); CreateSyncObjects(); - VkDescriptorPoolSize PoolSizes[] = { - { VK_DESCRIPTOR_TYPE_SAMPLER, 1000 }, - { VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1000 }, - { VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, 1000 }, - { VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, 1000 }, - { VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, 1000 }, - { VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, 1000 }, - { VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 1000 }, - { VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1000 }, - { VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, 1000 }, - { VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, 1000 }, - { VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, 1000 } - }; + VkDescriptorPoolSize PoolSizes[] = { { VK_DESCRIPTOR_TYPE_SAMPLER, 1000 }, + { VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1000 }, + { VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, 1000 }, + { VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, 1000 }, + { VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, 1000 }, + { VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, 1000 }, + { VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 1000 }, + { VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1000 }, + { VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, 1000 }, + { VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, 1000 }, + { VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, 1000 } }; + VkDescriptorPoolCreateInfo PoolInfo = {}; PoolInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO; PoolInfo.flags = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT; PoolInfo.maxSets = 1000; PoolInfo.poolSizeCount = (uint32_t)std::size(PoolSizes); PoolInfo.pPoolSizes = PoolSizes; - vkCreateDescriptorPool(DeviceManager.GetDevice(), &PoolInfo, nullptr, &ImGuiPool); + vkCreateDescriptorPool(DeviceManager->GetDevice(), &PoolInfo, nullptr, &ImGuiPool); } void VulkanContext::Cleanup() { + vkDeviceWaitIdle(DeviceManager->GetDevice()); + if (bImGuiVulkanInitialized) { ImGui_ImplVulkan_Shutdown(); @@ -144,34 +185,41 @@ void VulkanContext::Cleanup() ImGui_ImplGlfw_Shutdown(); } - CleanupSwapChain(); + Textures->Cleanup(); + Framebuffers->Cleanup(); + SwapChain->Cleanup(); - vkDestroyDescriptorPool(DeviceManager.GetDevice(), DescriptorPool, nullptr); - vkDestroyDescriptorSetLayout(DeviceManager.GetDevice(), DescriptorSetLayout, nullptr); + // vkDestroySampler(DeviceManager->GetDevice(), TextureSampler, nullptr); + // vkDestroyImageView(DeviceManager->GetDevice(), TextureImageView, nullptr); - VertexBuffer.Cleanup(MAX_FRAMES_IN_FLIGHT); + vkDestroyDescriptorPool(DeviceManager->GetDevice(), ImGuiPool, nullptr); + // vkDestroyImage(DeviceManager->GetDevice(), TextureImage, nullptr); + // vkFreeMemory(DeviceManager->GetDevice(), TextureImageMemory, nullptr); - GraphicsPipeline.Cleanup(); - RenderPass.Cleanup(); + vkDestroyDescriptorPool(DeviceManager->GetDevice(), DescriptorPool, nullptr); + vkDestroyDescriptorSetLayout(DeviceManager->GetDevice(), DescriptorSetLayout, nullptr); + + Buffers->Cleanup(MAX_FRAMES_IN_FLIGHT); + + GraphicsPipeline->Cleanup(); + RenderPass->Cleanup(); for (size_t i = 0; i < MAX_FRAMES_IN_FLIGHT; i++) { - vkDestroySemaphore(DeviceManager.GetDevice(), ImageAvailableSemaphores[i], nullptr); - vkDestroySemaphore(DeviceManager.GetDevice(), RenderFinishedSemaphores[i], nullptr); - vkDestroyFence(DeviceManager.GetDevice(), InFlightFences[i], nullptr); + vkDestroySemaphore(DeviceManager->GetDevice(), ImageAvailableSemaphores[i], nullptr); + vkDestroySemaphore(DeviceManager->GetDevice(), RenderFinishedSemaphores[i], nullptr); + vkDestroyFence(DeviceManager->GetDevice(), InFlightFences[i], nullptr); } - CommandBuffers.Cleanup(); - - DeviceManager.Cleanup(); + DeviceManager->Cleanup(); if (Config.bValidationEnabled) { - DebugManager.Cleanup(); + DebugManager->Cleanup(); } - vkDestroySurfaceKHR(InstanceManager.GetInstance(), Surface, nullptr); - InstanceManager.Cleanup(); + vkDestroySurfaceKHR(InstanceManager->GetInstance(), Surface, nullptr); + InstanceManager->Cleanup(); } void VulkanContext::CreateSurface(GLFWwindow* Window) @@ -181,12 +229,13 @@ void VulkanContext::CreateSurface(GLFWwindow* Window) Log::Error("Window not initialized."); } - if (!InstanceManager.GetInstance()) + if (!InstanceManager->GetInstance()) { Log::Error("Instance is null."); } - VkResult result = glfwCreateWindowSurface(InstanceManager.GetInstance(), Window, nullptr, &Surface); + VkResult result = + glfwCreateWindowSurface(InstanceManager->GetInstance(), Window, nullptr, &Surface); if (result != VK_SUCCESS) { std::string errorMsg; @@ -223,12 +272,28 @@ void VulkanContext::CreateDescriptorSetLayout() UboLayoutBinding.stageFlags = VK_SHADER_STAGE_VERTEX_BIT; UboLayoutBinding.pImmutableSamplers = nullptr; + VkDescriptorSetLayoutBinding SamplerLayoutBinding{}; + SamplerLayoutBinding.binding = 1; + SamplerLayoutBinding.descriptorCount = 1; + SamplerLayoutBinding.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; + SamplerLayoutBinding.pImmutableSamplers = nullptr; + SamplerLayoutBinding.stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT; + + std::array Bindings = { UboLayoutBinding, + SamplerLayoutBinding }; + VkDescriptorSetLayoutCreateInfo LayoutInfo{}; LayoutInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO; - LayoutInfo.bindingCount = 1; - LayoutInfo.pBindings = &UboLayoutBinding; + LayoutInfo.bindingCount = static_cast(Bindings.size()); + LayoutInfo.pBindings = Bindings.data(); - if (vkCreateDescriptorSetLayout(DeviceManager.GetDevice(), &LayoutInfo, nullptr, &DescriptorSetLayout) != VK_SUCCESS) + if (vkCreateDescriptorSetLayout( + DeviceManager->GetDevice(), + &LayoutInfo, + nullptr, + &DescriptorSetLayout + ) + != VK_SUCCESS) { Log::Error("Failed to create descriptor set layout!"); } @@ -240,17 +305,20 @@ void VulkanContext::CreateDescriptorSetLayout() void VulkanContext::CreateDescriptorPool() { - VkDescriptorPoolSize PoolSize{}; - PoolSize.type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; - PoolSize.descriptorCount = static_cast(MAX_FRAMES_IN_FLIGHT); + std::array PoolSizes{}; + PoolSizes[0].type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; + PoolSizes[0].descriptorCount = static_cast(MAX_FRAMES_IN_FLIGHT); + PoolSizes[1].type = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; + PoolSizes[1].descriptorCount = static_cast(MAX_FRAMES_IN_FLIGHT); VkDescriptorPoolCreateInfo PoolInfo{}; PoolInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO; - PoolInfo.poolSizeCount = 1; - PoolInfo.pPoolSizes = &PoolSize; + PoolInfo.poolSizeCount = static_cast(PoolSizes.size()); + PoolInfo.pPoolSizes = PoolSizes.data(); PoolInfo.maxSets = static_cast(MAX_FRAMES_IN_FLIGHT); - if (vkCreateDescriptorPool(DeviceManager.GetDevice(), &PoolInfo, nullptr, &DescriptorPool) != VK_SUCCESS) + if (vkCreateDescriptorPool(DeviceManager->GetDevice(), &PoolInfo, nullptr, &DescriptorPool) + != VK_SUCCESS) { Log::Error("Failed to create descriptor pool!"); } @@ -271,7 +339,8 @@ void VulkanContext::CreateDescriptorSets() AllocateInfo.pSetLayouts = Layouts.data(); DescriptorSets.resize(MAX_FRAMES_IN_FLIGHT); - if (vkAllocateDescriptorSets(DeviceManager.GetDevice(), &AllocateInfo, DescriptorSets.data()) != VK_SUCCESS) + if (vkAllocateDescriptorSets(DeviceManager->GetDevice(), &AllocateInfo, DescriptorSets.data()) + != VK_SUCCESS) { Log::Error("Failed to allocate descriptor sets!"); } @@ -283,117 +352,247 @@ void VulkanContext::CreateDescriptorSets() for (size_t i = 0; i < MAX_FRAMES_IN_FLIGHT; i++) { VkDescriptorBufferInfo BufferInfo{}; - BufferInfo.buffer = VertexBuffer.GetUniformBuffers()[i]; + BufferInfo.buffer = Buffers->GetUniformBuffers()[i]; BufferInfo.offset = 0; BufferInfo.range = sizeof(UniformBufferObject); - VkWriteDescriptorSet DescriptorWrite{}; - DescriptorWrite.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; - DescriptorWrite.dstSet = DescriptorSets[i]; - DescriptorWrite.dstBinding = 0; - DescriptorWrite.dstArrayElement = 0; - DescriptorWrite.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; - DescriptorWrite.descriptorCount = 1; - DescriptorWrite.pBufferInfo = &BufferInfo; - DescriptorWrite.pImageInfo = nullptr; - DescriptorWrite.pTexelBufferView = nullptr; + VkDescriptorImageInfo ImageInfo{}; + ImageInfo.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; + ImageInfo.imageView = Textures->GetImageView(); + ImageInfo.sampler = Textures->GetSampler(); - vkUpdateDescriptorSets(DeviceManager.GetDevice(), 1, &DescriptorWrite, 0, nullptr); + std::array DescriptorWrites{}; + DescriptorWrites[0].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; + DescriptorWrites[0].dstSet = DescriptorSets[i]; + DescriptorWrites[0].dstBinding = 0; + DescriptorWrites[0].dstArrayElement = 0; + DescriptorWrites[0].descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; + DescriptorWrites[0].descriptorCount = 1; + DescriptorWrites[0].pBufferInfo = &BufferInfo; + + DescriptorWrites[1].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; + DescriptorWrites[1].dstSet = DescriptorSets[i]; + DescriptorWrites[1].dstBinding = 1; + DescriptorWrites[1].dstArrayElement = 0; + DescriptorWrites[1].descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; + DescriptorWrites[1].descriptorCount = 1; + DescriptorWrites[1].pImageInfo = &ImageInfo; + + vkUpdateDescriptorSets( + DeviceManager->GetDevice(), + static_cast(DescriptorWrites.size()), + DescriptorWrites.data(), + 0, + nullptr + ); } } -void VulkanContext::CreateImage( - uint32_t Width, - uint32_t Height, - VkFormat Format, - VkImageTiling Tiling, - VkImageUsageFlags Usage, - VkMemoryPropertyFlags Properties, - VkImage& Image, - VkDeviceMemory& ImageMemory) -{ +// void VulkanContext::CreateImage( +// uint32_t Width, +// uint32_t Height, +// VkFormat Format, +// VkImageTiling Tiling, +// VkImageUsageFlags Usage, +// VkMemoryPropertyFlags Properties, +// VkImage& Image, +// VkDeviceMemory& ImageMemory +// ) +// { +// +// VkImageCreateInfo ImageInfo{}; +// ImageInfo.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO; +// ImageInfo.imageType = VK_IMAGE_TYPE_2D; +// ImageInfo.extent.width = Width; +// ImageInfo.extent.height = Height; +// ImageInfo.extent.depth = 1; +// ImageInfo.mipLevels = 1; +// ImageInfo.arrayLayers = 1; +// ImageInfo.format = Format; +// ImageInfo.tiling = Tiling; +// ImageInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; +// ImageInfo.usage = Usage; +// ImageInfo.samples = VK_SAMPLE_COUNT_1_BIT; +// ImageInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; +// +// if (vkCreateImage(DeviceManager->GetDevice(), &ImageInfo, nullptr, &Image) != VK_SUCCESS) +// { +// Log::Error("Failed to create image!"); +// } +// else +// { +// Log::Info("Successfully created image."); +// } +// +// VkMemoryRequirements MemoryRequirements; +// vkGetImageMemoryRequirements(DeviceManager->GetDevice(), Image, &MemoryRequirements); +// +// VkMemoryAllocateInfo AllocateInfo{}; +// AllocateInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; +// AllocateInfo.allocationSize = MemoryRequirements.size; +// AllocateInfo.memoryTypeIndex = +// Buffers->FindMemoryType(MemoryRequirements.memoryTypeBits, Properties); +// +// if (vkAllocateMemory(DeviceManager->GetDevice(), &AllocateInfo, nullptr, &ImageMemory) +// != VK_SUCCESS) +// { +// Log::Error("Failed to allocate image memory!"); +// } +// else +// { +// Log::Info("Successfully allocated imaged memory."); +// } +// +// vkBindImageMemory(DeviceManager->GetDevice(), Image, ImageMemory, 0); +// } +// +// void VulkanContext::CreateDepthResources() +// { +// if (!DepthPass) +// { +// DepthPass = std::make_unique(); +// } +// VkFormat DepthFormat = DepthPass->FindDepthFormat(); +// VkExtent2D Extents = SwapChain->GetSwapChainExtent(); +// +// CreateImage( +// Extents.width, +// Extents.height, +// DepthFormat, +// VK_IMAGE_TILING_OPTIMAL, +// VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, +// VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, +// DepthPass->GetDepthImage(), +// DepthPass->GetDepthImageMemory() +// ); +// +// DepthPass->SetDepthImageView(SwapChain->CreateImageView( +// DepthPass->GetDepthImage(), +// DepthFormat, +// VK_IMAGE_ASPECT_DEPTH_BIT +// )); +// +// Buffers->TransitionImageLayout( +// DepthPass->GetDepthImage(), +// DepthFormat, +// VK_IMAGE_LAYOUT_UNDEFINED, +// VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL +// ); +// } +// +// void VulkanContext::CreateTextureImage(const char* FileName) +// { +// int TextureWidth, TextureHeight, TextureChannels; +// stbi_uc* Pixels = +// stbi_load(FileName, &TextureWidth, &TextureHeight, &TextureChannels, STBI_rgb_alpha); +// VkDeviceSize ImageSize = TextureWidth * TextureHeight * 4; +// +// if (!Pixels) +// { +// Log::Error("Failed to load texture image!"); +// } +// else +// { +// Log::Info("Successfully loaded texture image."); +// } +// +// VkBuffer StagingBuffer; +// VkDeviceMemory StagingBufferMemory; +// +// Buffers->CreateBuffer( +// ImageSize, +// VK_BUFFER_USAGE_TRANSFER_SRC_BIT, +// VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, +// StagingBuffer, +// StagingBufferMemory +// ); +// +// void* Data; +// vkMapMemory(DeviceManager->GetDevice(), StagingBufferMemory, 0, ImageSize, 0, &Data); +// memcpy(Data, Pixels, static_cast(ImageSize)); +// vkUnmapMemory(DeviceManager->GetDevice(), StagingBufferMemory); +// +// stbi_image_free(Pixels); +// +// CreateImage( +// TextureWidth, +// TextureHeight, +// VK_FORMAT_R8G8B8A8_SRGB, +// VK_IMAGE_TILING_OPTIMAL, +// VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, +// VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, +// TextureImage, +// TextureImageMemory +// ); +// +// Buffers->TransitionImageLayout( +// TextureImage, +// VK_FORMAT_R8G8B8A8_SRGB, +// VK_IMAGE_LAYOUT_UNDEFINED, +// VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL +// ); +// +// Buffers->CopyBufferToImage( +// StagingBuffer, +// TextureImage, +// static_cast(TextureWidth), +// static_cast(TextureHeight) +// ); +// +// Buffers->TransitionImageLayout( +// TextureImage, +// VK_FORMAT_R8G8B8A8_SRGB, +// VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, +// VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL +// ); +// +// vkDestroyBuffer(DeviceManager->GetDevice(), StagingBuffer, nullptr); +// vkFreeMemory(DeviceManager->GetDevice(), StagingBufferMemory, nullptr); +// } +// +// void VulkanContext::CreateTextureImageView() +// { +// TextureImageView = SwapChain->CreateImageView( +// TextureImage, +// VK_FORMAT_R8G8B8A8_SRGB, +// VK_IMAGE_ASPECT_COLOR_BIT +// ); +// } - VkImageCreateInfo ImageInfo{}; - ImageInfo.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO; - ImageInfo.imageType = VK_IMAGE_TYPE_2D; - ImageInfo.extent.width = Width; - ImageInfo.extent.height = Height; - ImageInfo.extent.depth = 1; - ImageInfo.mipLevels = 1; - ImageInfo.arrayLayers = 1; - ImageInfo.format = Format; - ImageInfo.tiling = Tiling; - ImageInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; - ImageInfo.usage = Usage; - ImageInfo.samples = VK_SAMPLE_COUNT_1_BIT; - ImageInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; - - if (vkCreateImage(DeviceManager.GetDevice(), &ImageInfo, nullptr, &Image) != VK_SUCCESS) - { - Log::Error("Failed to create image!"); - } - else - { - Log::Info("Successfully created image."); - } - - VkMemoryRequirements MemoryRequirements; - vkGetImageMemoryRequirements(DeviceManager.GetDevice(), Image, &MemoryRequirements); - - VkMemoryAllocateInfo AllocateInfo{}; - AllocateInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; - AllocateInfo.allocationSize = MemoryRequirements.size; - AllocateInfo.memoryTypeIndex = VertexBuffer.FindMemoryType(MemoryRequirements.memoryTypeBits, Properties); - - if (vkAllocateMemory(DeviceManager.GetDevice(), &AllocateInfo, nullptr, &ImageMemory) != VK_SUCCESS) - { - Log::Error("Failed to allocate image memory!"); - } - else - { - Log::Info("Successfully allocated imaged memory."); - } - - vkBindImageMemory(DeviceManager.GetDevice(), Image, ImageMemory, 0); -} - -void VulkanContext::CreateTextureImage(const char* FileName) -{ - int TextureWidth, TextureHeight, TextureChannels; - stbi_uc* Pixels = stbi_load(FileName, &TextureWidth, &TextureHeight, &TextureChannels, STBI_rgb_alpha); - VkDeviceSize ImageSize = TextureWidth * TextureHeight * 4; - - if (!Pixels) - { - Log::Error("Failed to load texture image!"); - } - else - { - Log::Info("Successfully loaded texture image."); - } - - VkBuffer StagingBuffer; - VkDeviceMemory StagingBufferMemory; - - VertexBuffer.CreateBuffer(ImageSize, VK_BUFFER_USAGE_TRANSFER_SRC_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, StagingBuffer, StagingBufferMemory); - - void* Data; - vkMapMemory(DeviceManager.GetDevice(), StagingBufferMemory, 0, ImageSize, 0, &Data); - memcpy(Data, Pixels, static_cast(ImageSize)); - vkUnmapMemory(DeviceManager.GetDevice(), StagingBufferMemory); - - stbi_image_free(Pixels); - - CreateImage( - TextureWidth, - TextureHeight, - VK_FORMAT_R8G8B8A8_SRGB, - VK_IMAGE_TILING_OPTIMAL, - VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, - VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, - TextureImage, - TextureImageMemory); -} +// void VulkanContext::CreateTextureSampler() +// { +// VkSamplerCreateInfo SamplerInfo{}; +// SamplerInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO; +// SamplerInfo.magFilter = VK_FILTER_LINEAR; +// SamplerInfo.minFilter = VK_FILTER_LINEAR; +// SamplerInfo.addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT; +// SamplerInfo.addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT; +// SamplerInfo.addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT; +// SamplerInfo.anisotropyEnable = VK_TRUE; +// +// VkPhysicalDeviceProperties Properties{}; +// vkGetPhysicalDeviceProperties(DeviceManager->GetPhysicalDevice(), &Properties); +// +// SamplerInfo.maxAnisotropy = Properties.limits.maxSamplerAnisotropy; +// SamplerInfo.borderColor = VK_BORDER_COLOR_INT_OPAQUE_BLACK; +// SamplerInfo.unnormalizedCoordinates = VK_FALSE; +// SamplerInfo.compareEnable = VK_FALSE; +// SamplerInfo.compareOp = VK_COMPARE_OP_ALWAYS; +// SamplerInfo.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR; +// SamplerInfo.mipLodBias = 0.0f; +// SamplerInfo.minLod = 0.0f; +// SamplerInfo.maxLod = 0.0f; +// +// if (vkCreateSampler(DeviceManager->GetDevice(), &SamplerInfo, nullptr, &TextureSampler) +// != VK_SUCCESS) +// { +// Log::Error("Failed to create texture sampler!"); +// } +// else +// { +// Log::Info("Successfully created texture sampler."); +// } +// } void VulkanContext::CreateSyncObjects() { @@ -410,9 +609,20 @@ void VulkanContext::CreateSyncObjects() for (size_t i = 0; i < MAX_FRAMES_IN_FLIGHT; i++) { - if (vkCreateSemaphore(DeviceManager.GetDevice(), &SemaphoreInfo, nullptr, &ImageAvailableSemaphores[i]) != VK_SUCCESS - || vkCreateSemaphore(DeviceManager.GetDevice(), &SemaphoreInfo, nullptr, &RenderFinishedSemaphores[i]) != VK_SUCCESS - || vkCreateFence(DeviceManager.GetDevice(), &FenceInfo, nullptr, &InFlightFences[i]) != VK_SUCCESS) + if (vkCreateSemaphore( + DeviceManager->GetDevice(), + &SemaphoreInfo, + nullptr, + &ImageAvailableSemaphores[i] + ) != VK_SUCCESS + || vkCreateSemaphore( + DeviceManager->GetDevice(), + &SemaphoreInfo, + nullptr, + &RenderFinishedSemaphores[i] + ) != VK_SUCCESS + || vkCreateFence(DeviceManager->GetDevice(), &FenceInfo, nullptr, &InFlightFences[i]) + != VK_SUCCESS) { Log::Error("Failed to create semaphores!"); } @@ -425,16 +635,23 @@ void VulkanContext::CreateSyncObjects() void VulkanContext::DrawFrame(bool bDrawImGui, uint32_t InVerticesSize, uint32_t InIndexSize) { - vkWaitForFences(DeviceManager.GetDevice(), 1, &InFlightFences[CurrentFrame], VK_TRUE, UINT64_MAX); + vkWaitForFences( + DeviceManager->GetDevice(), + 1, + &InFlightFences[CurrentFrame], + VK_TRUE, + UINT64_MAX + ); uint32_t ImageIndex; VkResult result = vkAcquireNextImageKHR( - DeviceManager.GetDevice(), - SwapChain.GetSwapChain(), + DeviceManager->GetDevice(), + SwapChain->GetSwapChain(), UINT64_MAX, ImageAvailableSemaphores[CurrentFrame], VK_NULL_HANDLE, - &ImageIndex); + &ImageIndex + ); if (result == VK_ERROR_OUT_OF_DATE_KHR) { @@ -446,28 +663,28 @@ void VulkanContext::DrawFrame(bool bDrawImGui, uint32_t InVerticesSize, uint32_t Log::Error("Failed to acquire swap chain images!"); } - vkResetFences(DeviceManager.GetDevice(), 1, &InFlightFences[CurrentFrame]); + vkResetFences(DeviceManager->GetDevice(), 1, &InFlightFences[CurrentFrame]); - vkResetCommandBuffer(CommandBuffers.GetCommandBuffer(CurrentFrame), 0); + vkResetCommandBuffer(Buffers->GetCommandBuffer(CurrentFrame), 0); - FRecordCommandBuffersParams Params{ - CommandBuffers.GetCommandBuffer(CurrentFrame), + FRecordBuffersParams Params{ + Buffers->GetCommandBuffer(CurrentFrame), ImageIndex, - VertexBuffer.GetVertexBuffer(), + Buffers->GetVertexBuffer(), InVerticesSize, - VertexBuffer.GetIndexBuffer(), + Buffers->GetIndexBuffer(), InIndexSize, - RenderPass.GetRenderPass(), - SwapChain.GetSwapChainExtent(), - GraphicsPipeline.GetGraphicsPipeline(), - Framebuffers.GetSwapChainFrameBuffers(), + RenderPass->GetRenderPass(), + SwapChain->GetSwapChainExtent(), + GraphicsPipeline->GetGraphicsPipeline(), + Framebuffers->GetSwapChainFrameBuffers(), DescriptorSets[CurrentFrame], - GraphicsPipeline.GetPipelineLayout(), + GraphicsPipeline->GetPipelineLayout(), bDrawImGui // DrawData }; - CommandBuffers.RecordCommandBuffer(Params); + Buffers->RecordCommandBuffer(Params); UpdateUniformBuffer(CurrentFrame); @@ -481,14 +698,20 @@ void VulkanContext::DrawFrame(bool bDrawImGui, uint32_t InVerticesSize, uint32_t SubmitInfo.pWaitDstStageMask = WaitStages; SubmitInfo.commandBufferCount = 1; - VkCommandBuffer CommandBuffer = CommandBuffers.GetCommandBuffer(CurrentFrame); + VkCommandBuffer CommandBuffer = Buffers->GetCommandBuffer(CurrentFrame); SubmitInfo.pCommandBuffers = &CommandBuffer; VkSemaphore SignalSemaphores[] = { RenderFinishedSemaphores[CurrentFrame] }; SubmitInfo.signalSemaphoreCount = 1; SubmitInfo.pSignalSemaphores = SignalSemaphores; - if (vkQueueSubmit(DeviceManager.GetGraphicsQueue(), 1, &SubmitInfo, InFlightFences[CurrentFrame]) != VK_SUCCESS) + if (vkQueueSubmit( + DeviceManager->GetGraphicsQueue(), + 1, + &SubmitInfo, + InFlightFences[CurrentFrame] + ) + != VK_SUCCESS) { Log::Error("Failed to submit draw command buffer!"); } @@ -498,14 +721,14 @@ void VulkanContext::DrawFrame(bool bDrawImGui, uint32_t InVerticesSize, uint32_t PresentInfo.waitSemaphoreCount = 1; PresentInfo.pWaitSemaphores = SignalSemaphores; - VkSwapchainKHR SwapChains[] = { SwapChain.GetSwapChain() }; + VkSwapchainKHR SwapChains[] = { SwapChain->GetSwapChain() }; PresentInfo.swapchainCount = 1; PresentInfo.pSwapchains = SwapChains; PresentInfo.pImageIndices = &ImageIndex; PresentInfo.pResults = nullptr; - result = vkQueuePresentKHR(DeviceManager.GetPresentQueue(), &PresentInfo); + result = vkQueuePresentKHR(DeviceManager->GetPresentQueue(), &PresentInfo); if (result == VK_ERROR_OUT_OF_DATE_KHR || result == VK_SUBOPTIMAL_KHR || bFramebufferResized) { @@ -526,15 +749,26 @@ void VulkanContext::UpdateUniformBuffer(uint32_t CurrentImage) auto CurrentTime = std::chrono::high_resolution_clock::now(); - float Time = std::chrono::duration(CurrentTime - StartTime).count(); + float Time = + std::chrono::duration(CurrentTime - StartTime).count(); UniformBufferObject Ubo{}; - Ubo.Model = glm::rotate(glm::mat4(1.0f), Time * glm::radians(90.0f), glm::vec3(0.0f, 0.0f, 1.0f)); - Ubo.View = glm::lookAt(glm::vec3(2.0f, 2.0f, 2.0f), glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, 0.0f, 1.0f)); - Ubo.Projection = glm::perspective(glm::radians(45.0f), SwapChain.GetSwapChainExtent().width / (float)SwapChain.GetSwapChainExtent().height, 0.1f, 10.0f); + Ubo.Model = + glm::rotate(glm::mat4(1.0f), Time * glm::radians(90.0f), glm::vec3(0.0f, 0.0f, 1.0f)); + Ubo.View = glm::lookAt( + glm::vec3(2.0f, 2.0f, 2.0f), + glm::vec3(0.0f, 0.0f, 0.0f), + glm::vec3(0.0f, 0.0f, 1.0f) + ); + Ubo.Projection = glm::perspective( + glm::radians(45.0f), + SwapChain->GetSwapChainExtent().width / (float)SwapChain->GetSwapChainExtent().height, + 0.1f, + 10.0f + ); Ubo.Projection[1][1] *= -1; - memcpy(VertexBuffer.GetUniformBuffersMapped()[CurrentImage], &Ubo, sizeof(Ubo)); + memcpy(Buffers->GetUniformBuffersMapped()[CurrentImage], &Ubo, sizeof(Ubo)); } void VulkanContext::RecreateSwapChain() @@ -548,30 +782,24 @@ void VulkanContext::RecreateSwapChain() } Log::Info("Recreating SwapChain..."); - vkDeviceWaitIdle(DeviceManager.GetDevice()); + vkDeviceWaitIdle(DeviceManager->GetDevice()); CleanupSwapChain(); - auto SwapChainSupport = DeviceManager.QuerySwapChainSupport(DeviceManager.GetPhysicalDevice()); + auto SwapChainSupport = + DeviceManager->QuerySwapChainSupport(DeviceManager->GetPhysicalDevice()); - SwapChain.Initialize(FSwapConfig( - DeviceManager.GetDevice(), - Surface, - Config.Window, - DeviceManager.GetPhysicalQueueFamilies().GraphicsFamily, - DeviceManager.GetPhysicalQueueFamilies().PresentFamily, - SwapChainSupport.Capabilities, - SwapChainSupport.Formats, - SwapChainSupport.PresentModes)); - SwapChain.CreateSwapChain(); - SwapChain.CreateImageViews(); + SwapChain->CreateSwapChain(); + SwapChain->CreateImageViews(); + Textures->CreateDepthResources(); - Framebuffers.Initialize(FFramebufferConfig( - DeviceManager.GetDevice(), - RenderPass.GetRenderPass(), - SwapChain.GetSwapChainImageViews(), - SwapChain.GetSwapChainExtent())); - Framebuffers.CreateFramebuffers(); + Framebuffers->Initialize(FFramebufferConfig( + DeviceManager->GetDevice(), + RenderPass->GetRenderPass(), + SwapChain->GetSwapChainImageViews(), + SwapChain->GetSwapChainExtent() + )); + Framebuffers->CreateFramebuffers(Textures->GetDepthImageView()); InitImGui(); } @@ -595,17 +823,18 @@ void VulkanContext::InitImGui() } ImGui_ImplVulkan_InitInfo ImGuiInitInfo = {}; - ImGuiInitInfo.Instance = InstanceManager.GetInstance(); - ImGuiInitInfo.PhysicalDevice = DeviceManager.GetPhysicalDevice(); - ImGuiInitInfo.Device = DeviceManager.GetDevice(); - ImGuiInitInfo.QueueFamily = DeviceManager.GetPhysicalQueueFamilies().GraphicsFamily.value_or(0); - ImGuiInitInfo.Queue = DeviceManager.GetGraphicsQueue(); + ImGuiInitInfo.Instance = InstanceManager->GetInstance(); + ImGuiInitInfo.PhysicalDevice = DeviceManager->GetPhysicalDevice(); + ImGuiInitInfo.Device = DeviceManager->GetDevice(); + ImGuiInitInfo.QueueFamily = + DeviceManager->GetPhysicalQueueFamilies().GraphicsFamily.value_or(0); + ImGuiInitInfo.Queue = DeviceManager->GetGraphicsQueue(); ImGuiInitInfo.PipelineCache = VK_NULL_HANDLE; ImGuiInitInfo.DescriptorPool = ImGuiPool; ImGuiInitInfo.MinImageCount = MAX_FRAMES_IN_FLIGHT; - ImGuiInitInfo.ImageCount = SwapChain.GetSwapChainImageViews().size(); + ImGuiInitInfo.ImageCount = SwapChain->GetSwapChainImageViews().size(); ImGuiInitInfo.Allocator = nullptr; - ImGuiInitInfo.PipelineInfoMain.RenderPass = RenderPass.GetRenderPass(); + ImGuiInitInfo.PipelineInfoMain.RenderPass = RenderPass->GetRenderPass(); ImGuiInitInfo.PipelineInfoMain.Subpass = 0; ImGuiInitInfo.PipelineInfoMain.MSAASamples = VK_SAMPLE_COUNT_1_BIT; ImGuiInitInfo.CheckVkResultFn = nullptr; @@ -621,6 +850,7 @@ void VulkanContext::InitImGui() void VulkanContext::CleanupSwapChain() { - Framebuffers.Cleanup(); - SwapChain.Cleanup(); + Textures->CleanupDepth(); + Framebuffers->Cleanup(); + SwapChain->Cleanup(); } diff --git a/src/private/VulkanDebugManager.cpp b/src/private/VulkanDebugManager.cpp index 0cfd9ae..74b97ea 100755 --- a/src/private/VulkanDebugManager.cpp +++ b/src/private/VulkanDebugManager.cpp @@ -1,4 +1,5 @@ #include "VulkanDebugManager.h" + #include "utilities/Logger.h" VulkanDebugManager::VulkanDebugManager() diff --git a/src/private/VulkanDeviceManager.cpp b/src/private/VulkanDeviceManager.cpp index 95fcdc1..faf5eb8 100755 --- a/src/private/VulkanDeviceManager.cpp +++ b/src/private/VulkanDeviceManager.cpp @@ -6,10 +6,19 @@ #include #include -#include "VulkanContext.h" +#include "VulkanContext.hpp" #include "utilities/Logger.h" -VulkanDeviceManager::VulkanDeviceManager() +const std::vector DeviceExtensions = { + VK_KHR_SWAPCHAIN_EXTENSION_NAME +}; + +VulkanDeviceManager::VulkanDeviceManager( + VkInstance Instance, + VkSurfaceKHR Surface, + GLFWwindow* Window, + bool bEnableValidationLayers) + : Instance(Instance), Surface(Surface), Window(Window), bEnableValidationLayers(bEnableValidationLayers) { } @@ -18,19 +27,6 @@ VulkanDeviceManager::~VulkanDeviceManager() // Cleanup(); } -void VulkanDeviceManager::Initialize(FDeviceConfig InConfig) -// VkInstance Instance, -// bool bEnableValidationLayers, -// VkSurfaceKHR Surface, -// GLFWwindow* Window) -{ - DeviceConfig = InConfig; - // this->Instance = Instance; - // this->Surface = Surface; - // this->bEnableValidationLayers = bEnableValidationLayers; - // this->Window = Window; -} - void VulkanDeviceManager::Cleanup() { vkDestroyDevice(Device, nullptr); @@ -39,7 +35,7 @@ void VulkanDeviceManager::Cleanup() void VulkanDeviceManager::PickPhysicalDevice() { uint32_t DeviceCount = 0; - vkEnumeratePhysicalDevices(DeviceConfig.Instance, &DeviceCount, nullptr); + vkEnumeratePhysicalDevices(Instance, &DeviceCount, nullptr); if (DeviceCount == 0) { @@ -47,7 +43,7 @@ void VulkanDeviceManager::PickPhysicalDevice() } std::vector Devices(DeviceCount); - vkEnumeratePhysicalDevices(DeviceConfig.Instance, &DeviceCount, Devices.data()); + vkEnumeratePhysicalDevices(Instance, &DeviceCount, Devices.data()); std::multimap Candidates; @@ -84,7 +80,10 @@ bool VulkanDeviceManager::IsDeviceSuitable(VkPhysicalDevice Device) bSwapChainAdequate = !SwapChainSupport.Formats.empty() && !SwapChainSupport.PresentModes.empty(); } - return Indices.IsComplete() && bExtensionsSupported && bSwapChainAdequate; + VkPhysicalDeviceFeatures SupportedFeatures; + vkGetPhysicalDeviceFeatures(Device, &SupportedFeatures); + + return Indices.IsComplete() && bExtensionsSupported && bSwapChainAdequate && SupportedFeatures.samplerAnisotropy; } int VulkanDeviceManager::RateDeviceSuitability(VkPhysicalDevice Device) @@ -149,7 +148,7 @@ QueueFamilyIndices VulkanDeviceManager::FindQueueFamilies(VkPhysicalDevice Devic } VkBool32 PresentSupport = false; - vkGetPhysicalDeviceSurfaceSupportKHR(Device, i, DeviceConfig.Surface, &PresentSupport); + vkGetPhysicalDeviceSurfaceSupportKHR(Device, i, Surface, &PresentSupport); if (PresentSupport) { @@ -185,6 +184,7 @@ void VulkanDeviceManager::CreateLogicalDevice() } VkPhysicalDeviceFeatures DeviceFeatures{}; + DeviceFeatures.samplerAnisotropy = VK_TRUE; VkDeviceCreateInfo CreateInfo{}; CreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO; @@ -195,7 +195,7 @@ void VulkanDeviceManager::CreateLogicalDevice() CreateInfo.enabledExtensionCount = static_cast(DeviceExtensions.size()); CreateInfo.ppEnabledExtensionNames = DeviceExtensions.data(); - if (DeviceConfig.bEnableValidationLayers) + if (bEnableValidationLayers) { CreateInfo.enabledLayerCount = static_cast(ValidationLayers.size()); CreateInfo.ppEnabledLayerNames = ValidationLayers.data(); @@ -222,24 +222,24 @@ SwapChainSupportDetails VulkanDeviceManager::QuerySwapChainSupport(VkPhysicalDev { SwapChainSupportDetails Details; - vkGetPhysicalDeviceSurfaceCapabilitiesKHR(Device, DeviceConfig.Surface, &Details.Capabilities); + vkGetPhysicalDeviceSurfaceCapabilitiesKHR(Device, Surface, &Details.Capabilities); uint32_t FormatCount; - vkGetPhysicalDeviceSurfaceFormatsKHR(Device, DeviceConfig.Surface, &FormatCount, nullptr); + vkGetPhysicalDeviceSurfaceFormatsKHR(Device, Surface, &FormatCount, nullptr); if (FormatCount != 0) { Details.Formats.resize(FormatCount); - vkGetPhysicalDeviceSurfaceFormatsKHR(Device, DeviceConfig.Surface, &FormatCount, Details.Formats.data()); + vkGetPhysicalDeviceSurfaceFormatsKHR(Device, Surface, &FormatCount, Details.Formats.data()); } uint32_t PresentModeCount; - vkGetPhysicalDeviceSurfacePresentModesKHR(Device, DeviceConfig.Surface, &PresentModeCount, nullptr); + vkGetPhysicalDeviceSurfacePresentModesKHR(Device, Surface, &PresentModeCount, nullptr); if (PresentModeCount != 0) { Details.PresentModes.resize(PresentModeCount); - vkGetPhysicalDeviceSurfacePresentModesKHR(Device, DeviceConfig.Surface, &PresentModeCount, Details.PresentModes.data()); + vkGetPhysicalDeviceSurfacePresentModesKHR(Device, Surface, &PresentModeCount, Details.PresentModes.data()); } return Details; diff --git a/src/private/VulkanFramebuffers.cpp b/src/private/VulkanFramebuffers.cpp index 64801f4..87bfacd 100644 --- a/src/private/VulkanFramebuffers.cpp +++ b/src/private/VulkanFramebuffers.cpp @@ -16,33 +16,39 @@ void VulkanFramebuffers::Cleanup() } } -// void VulkanFramebuffers::CreateFramebuffers(VkRenderPass RenderPass, std::vector SwapChainImageViews, VkExtent2D SwapChainExtent) -void VulkanFramebuffers::CreateFramebuffers() +// void VulkanFramebuffers::CreateFramebuffers(VkRenderPass RenderPass, std::vector +// SwapChainImageViews, VkExtent2D SwapChainExtent) +void VulkanFramebuffers::CreateFramebuffers(VkImageView DepthImageView) { SwapChainFramebuffers.resize(FramebufferConfig.SwapChainImageViews.size()); for (size_t i = 0; i < FramebufferConfig.SwapChainImageViews.size(); i++) { - VkImageView Attachments[] = { - FramebufferConfig.SwapChainImageViews[i] - }; + std::array Attachments = { FramebufferConfig.SwapChainImageViews[i], + DepthImageView }; VkFramebufferCreateInfo FramebufferInfo{}; FramebufferInfo.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO; FramebufferInfo.renderPass = FramebufferConfig.RenderPass; - FramebufferInfo.attachmentCount = 1; - FramebufferInfo.pAttachments = Attachments; + FramebufferInfo.attachmentCount = static_cast(Attachments.size()); + FramebufferInfo.pAttachments = Attachments.data(); FramebufferInfo.width = FramebufferConfig.SwapChainExtent.width; FramebufferInfo.height = FramebufferConfig.SwapChainExtent.height; FramebufferInfo.layers = 1; - if (vkCreateFramebuffer(FramebufferConfig.Device, &FramebufferInfo, nullptr, &SwapChainFramebuffers[i]) != VK_SUCCESS) + if (vkCreateFramebuffer( + FramebufferConfig.Device, + &FramebufferInfo, + nullptr, + &SwapChainFramebuffers[i] + ) + != VK_SUCCESS) { Log::Error("Failed to create frame buffer!"); } else { - // Log::Info("Successfully created framebuffers."); + Log::Info("Successfully created framebuffers."); } } } diff --git a/src/private/VulkanInstanceManager.cpp b/src/private/VulkanInstanceManager.cpp index c47ba16..0386f67 100755 --- a/src/private/VulkanInstanceManager.cpp +++ b/src/private/VulkanInstanceManager.cpp @@ -1,6 +1,6 @@ -#include "VulkanInstanceManager.h" +#include "VulkanInstanceManager.hpp" -#include "VulkanContext.h" +#include "VulkanContext.hpp" #include "utilities/Logger.h" #include diff --git a/src/private/VulkanPipeline.cpp b/src/private/VulkanPipeline.cpp index ef3701b..6d3e1fd 100755 --- a/src/private/VulkanPipeline.cpp +++ b/src/private/VulkanPipeline.cpp @@ -22,7 +22,11 @@ void VulkanPipeline::Cleanup() vkDestroyPipelineLayout(Device, PipelineLayout, nullptr); } -void VulkanPipeline::CreateGraphicsPipeline(VkExtent2D SwapChainExtent, VkRenderPass RenderPass, VkDescriptorSetLayout& DescriptorSetLayout) +void VulkanPipeline::CreateGraphicsPipeline( + VkExtent2D SwapChainExtent, + VkRenderPass RenderPass, + VkDescriptorSetLayout& DescriptorSetLayout +) { auto VertShaderCode = ReadFile("Shaders/vert.spv"); auto FragShaderCode = ReadFile("Shaders/frag.spv"); @@ -55,7 +59,8 @@ void VulkanPipeline::CreateGraphicsPipeline(VkExtent2D SwapChainExtent, VkRender VertexInputInfo.vertexBindingDescriptionCount = 1; VertexInputInfo.pVertexBindingDescriptions = &BindingDescription; - VertexInputInfo.vertexAttributeDescriptionCount = static_cast(AttributeDescriptions.size()); + VertexInputInfo.vertexAttributeDescriptionCount = + static_cast(AttributeDescriptions.size()); VertexInputInfo.pVertexAttributeDescriptions = AttributeDescriptions.data(); VkPipelineInputAssemblyStateCreateInfo InputAssembly{}; @@ -75,10 +80,8 @@ void VulkanPipeline::CreateGraphicsPipeline(VkExtent2D SwapChainExtent, VkRender Scissor.offset = { 0, 0 }; Scissor.extent = SwapChainExtent; - std::vector DynamicStates = { - VK_DYNAMIC_STATE_VIEWPORT, - VK_DYNAMIC_STATE_SCISSOR - }; + std::vector DynamicStates = { VK_DYNAMIC_STATE_VIEWPORT, + VK_DYNAMIC_STATE_SCISSOR }; VkPipelineDynamicStateCreateInfo DynamicState{}; DynamicState.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO; @@ -113,7 +116,8 @@ void VulkanPipeline::CreateGraphicsPipeline(VkExtent2D SwapChainExtent, VkRender Multisampling.alphaToOneEnable = VK_FALSE; VkPipelineColorBlendAttachmentState ColorBlendAttachement{}; - ColorBlendAttachement.colorWriteMask = VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT; + ColorBlendAttachement.colorWriteMask = VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT + | VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT; ColorBlendAttachement.blendEnable = VK_FALSE; ColorBlendAttachement.srcColorBlendFactor = VK_BLEND_FACTOR_ONE; ColorBlendAttachement.dstColorBlendFactor = VK_BLEND_FACTOR_ZERO; @@ -149,6 +153,18 @@ void VulkanPipeline::CreateGraphicsPipeline(VkExtent2D SwapChainExtent, VkRender Log::Info("Successfully created pipeline layout"); } + VkPipelineDepthStencilStateCreateInfo DepthStencil{}; + DepthStencil.sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO; + DepthStencil.depthTestEnable = VK_TRUE; + DepthStencil.depthWriteEnable = VK_TRUE; + DepthStencil.depthCompareOp = VK_COMPARE_OP_LESS; + DepthStencil.depthBoundsTestEnable = VK_FALSE; + DepthStencil.minDepthBounds = 0.0f; + DepthStencil.maxDepthBounds = 1.0f; + DepthStencil.stencilTestEnable = VK_FALSE; + DepthStencil.front = {}; + DepthStencil.back = {}; + VkGraphicsPipelineCreateInfo PipelineInfo{}; PipelineInfo.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO; PipelineInfo.stageCount = 2; @@ -158,7 +174,7 @@ void VulkanPipeline::CreateGraphicsPipeline(VkExtent2D SwapChainExtent, VkRender PipelineInfo.pViewportState = &ViewportState; PipelineInfo.pRasterizationState = &Rasterizer; PipelineInfo.pMultisampleState = &Multisampling; - PipelineInfo.pDepthStencilState = nullptr; + PipelineInfo.pDepthStencilState = &DepthStencil; PipelineInfo.pColorBlendState = &ColorBlending; PipelineInfo.pDynamicState = &DynamicState; PipelineInfo.layout = PipelineLayout; @@ -167,7 +183,15 @@ void VulkanPipeline::CreateGraphicsPipeline(VkExtent2D SwapChainExtent, VkRender PipelineInfo.basePipelineHandle = VK_NULL_HANDLE; PipelineInfo.basePipelineIndex = -1; - if (vkCreateGraphicsPipelines(Device, VK_NULL_HANDLE, 1, &PipelineInfo, nullptr, &GraphicsPipeline) != VK_SUCCESS) + if (vkCreateGraphicsPipelines( + Device, + VK_NULL_HANDLE, + 1, + &PipelineInfo, + nullptr, + &GraphicsPipeline + ) + != VK_SUCCESS) { Log::Error("Failed to create graphics pipeline!"); } @@ -248,7 +272,8 @@ VkShaderModule VulkanPipeline::CreateShaderModule(const std::vector& Code) // } // } -// void VulkanPipeline::CreateFramebuffers(std::vector SwapChainImageViews, VkExtent2D SwapChainExtent) +// void VulkanPipeline::CreateFramebuffers(std::vector SwapChainImageViews, VkExtent2D +// SwapChainExtent) // { // SwapChainFrameBuffers.resize(SwapChainImageViews.size()); // @@ -267,7 +292,8 @@ VkShaderModule VulkanPipeline::CreateShaderModule(const std::vector& Code) // FramebufferInfo.height = SwapChainExtent.height; // FramebufferInfo.layers = 1; // -// if (vkCreateFramebuffer(Device, &FramebufferInfo, nullptr, &SwapChainFrameBuffers[i]) != VK_SUCCESS) +// if (vkCreateFramebuffer(Device, &FramebufferInfo, nullptr, &SwapChainFrameBuffers[i]) != +// VK_SUCCESS) // { // Log::Error("Failed to create frame buffer!"); // } diff --git a/src/private/VulkanRenderPass.cpp b/src/private/VulkanRenderPass.cpp index 34482d2..2c7157e 100644 --- a/src/private/VulkanRenderPass.cpp +++ b/src/private/VulkanRenderPass.cpp @@ -1,5 +1,6 @@ #include "VulkanRenderPass.h" #include "utilities/Logger.h" +#include void VulkanRenderPass::Initialize(VkDevice InDevice) { @@ -11,7 +12,7 @@ void VulkanRenderPass::Cleanup() vkDestroyRenderPass(Device, RenderPass, nullptr); } -void VulkanRenderPass::CreateRenderPass(VkFormat SwapChainImageFormat) +void VulkanRenderPass::CreateRenderPass(VkFormat SwapChainImageFormat, VkFormat DepthFormat) { VkAttachmentDescription ColorAttachment{}; ColorAttachment.format = SwapChainImageFormat; @@ -27,25 +28,45 @@ void VulkanRenderPass::CreateRenderPass(VkFormat SwapChainImageFormat) ColorAttachmentRef.attachment = 0; ColorAttachmentRef.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + VkAttachmentDescription DepthAttachment{}; + DepthAttachment.format = DepthFormat; + DepthAttachment.samples = VK_SAMPLE_COUNT_1_BIT; + DepthAttachment.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; + DepthAttachment.storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; + DepthAttachment.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; + DepthAttachment.stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; + DepthAttachment.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; + DepthAttachment.finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; + + VkAttachmentReference DepthAttachmentRef{}; + DepthAttachmentRef.attachment = 1; + DepthAttachmentRef.layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; + VkSubpassDescription Subpass{}; Subpass.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS; Subpass.colorAttachmentCount = 1; Subpass.pColorAttachments = &ColorAttachmentRef; - - VkRenderPassCreateInfo RenderPassInfo{}; - RenderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO; - RenderPassInfo.attachmentCount = 1; - RenderPassInfo.pAttachments = &ColorAttachment; - RenderPassInfo.subpassCount = 1; - RenderPassInfo.pSubpasses = &Subpass; + Subpass.pDepthStencilAttachment = &DepthAttachmentRef; VkSubpassDependency Dependency{}; Dependency.srcSubpass = VK_SUBPASS_EXTERNAL; Dependency.dstSubpass = 0; - Dependency.srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; - Dependency.srcAccessMask = 0; - Dependency.dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; - Dependency.dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; + Dependency.srcStageMask = + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT; + Dependency.srcAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT; + Dependency.dstStageMask = + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT | VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT; + Dependency.dstAccessMask = + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT; + + std::array Attachments = { ColorAttachment, DepthAttachment }; + + VkRenderPassCreateInfo RenderPassInfo{}; + RenderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO; + RenderPassInfo.attachmentCount = static_cast(Attachments.size()); + RenderPassInfo.pAttachments = Attachments.data(); + RenderPassInfo.subpassCount = 1; + RenderPassInfo.pSubpasses = &Subpass; RenderPassInfo.dependencyCount = 1; RenderPassInfo.pDependencies = &Dependency; diff --git a/src/private/VulkanSwapChain.cpp b/src/private/VulkanSwapChain.cpp index 373551b..4d91169 100644 --- a/src/private/VulkanSwapChain.cpp +++ b/src/private/VulkanSwapChain.cpp @@ -8,7 +8,24 @@ #include "utilities/Logger.h" -VulkanSwapChain::VulkanSwapChain() +VulkanSwapChain::VulkanSwapChain( + VkDevice Device, + VkSurfaceKHR Surface, + GLFWwindow* Window, + uint32_t GraphicsFamily, + uint32_t PresentFamily, + const VkSurfaceCapabilitiesKHR& Capabilities, + const std::vector& Formats, + const std::vector& PresentModes +) + : Device(Device) + , Surface(Surface) + , Window(Window) + , GraphicsFamily(GraphicsFamily) + , PresentFamily(PresentFamily) + , Capabilities(Capabilities) + , Formats(Formats) + , PresentModes(PresentModes) { } @@ -17,25 +34,27 @@ VulkanSwapChain::~VulkanSwapChain() // Cleanup(); } -void VulkanSwapChain::Initialize(FSwapConfig InSwapConfig) -{ - SwapConfig = InSwapConfig; -} +// void VulkanSwapChain::Initialize(FIn +// { +// = In +// } void VulkanSwapChain::Cleanup() { for (auto ImageView : SwapChainImageViews) { - vkDestroyImageView(SwapConfig.Device, ImageView, nullptr); + vkDestroyImageView(Device, ImageView, nullptr); } - vkDestroySwapchainKHR(SwapConfig.Device, SwapChain, nullptr); + vkDestroySwapchainKHR(Device, SwapChain, nullptr); } -VkSurfaceFormatKHR VulkanSwapChain::ChooseSwapSurfaceFormat(const std::vector& AvailableFormats) +VkSurfaceFormatKHR +VulkanSwapChain::ChooseSwapSurfaceFormat(const std::vector& AvailableFormats) { for (const auto& AvailableFormat : AvailableFormats) { - if (AvailableFormat.format == VK_FORMAT_B8G8R8A8_SRGB && AvailableFormat.colorSpace == VK_COLOR_SPACE_SRGB_NONLINEAR_KHR) + if (AvailableFormat.format == VK_FORMAT_B8G8R8A8_SRGB + && AvailableFormat.colorSpace == VK_COLOR_SPACE_SRGB_NONLINEAR_KHR) { return AvailableFormat; } @@ -43,7 +62,8 @@ VkSurfaceFormatKHR VulkanSwapChain::ChooseSwapSurfaceFormat(const std::vector& AvailablePresentModes) +VkPresentModeKHR +VulkanSwapChain::ChooseSwapPresentMode(const std::vector& AvailablePresentModes) { for (const auto& AvailablePresentMode : AvailablePresentModes) { @@ -63,20 +83,25 @@ VkExtent2D VulkanSwapChain::ChooseSwapExtent(const VkSurfaceCapabilitiesKHR& Cap } else { - if (SwapConfig.Window == nullptr) + if (Window == nullptr) { Log::Error("GLFW window is null in CreateSwapChain!"); } int Width, Height; - glfwGetFramebufferSize(SwapConfig.Window, &Width, &Height); + glfwGetFramebufferSize(Window, &Width, &Height); - VkExtent2D ActualExtent = { - static_cast(Width), - static_cast(Height) - }; + VkExtent2D ActualExtent = { static_cast(Width), static_cast(Height) }; - ActualExtent.width = std::clamp(ActualExtent.width, Capabilities.minImageExtent.width, Capabilities.maxImageExtent.width); - ActualExtent.height = std::clamp(ActualExtent.height, Capabilities.minImageExtent.height, Capabilities.maxImageExtent.height); + ActualExtent.width = std::clamp( + ActualExtent.width, + Capabilities.minImageExtent.width, + Capabilities.maxImageExtent.width + ); + ActualExtent.height = std::clamp( + ActualExtent.height, + Capabilities.minImageExtent.height, + Capabilities.maxImageExtent.height + ); return ActualExtent; } @@ -84,32 +109,34 @@ VkExtent2D VulkanSwapChain::ChooseSwapExtent(const VkSurfaceCapabilitiesKHR& Cap void VulkanSwapChain::CreateSwapChain() { - VkSurfaceFormatKHR SurfaceFormat = ChooseSwapSurfaceFormat(SwapConfig.Formats); - VkPresentModeKHR PresentMode = ChooseSwapPresentMode(SwapConfig.PresentModes); - VkExtent2D Extent = ChooseSwapExtent(SwapConfig.Capabilities); + VkSurfaceFormatKHR SurfaceFormat = ChooseSwapSurfaceFormat(Formats); + VkPresentModeKHR PresentMode = ChooseSwapPresentMode(PresentModes); + VkExtent2D Extent = ChooseSwapExtent(Capabilities); - uint32_t ImageCount = SwapConfig.Capabilities.minImageCount + 1; + uint32_t ImageCount = Capabilities.minImageCount + 1; - if (SwapConfig.Capabilities.maxImageCount > 0 && ImageCount > SwapConfig.Capabilities.maxImageCount) + if (Capabilities.maxImageCount > 0 && ImageCount > Capabilities.maxImageCount) { - ImageCount = SwapConfig.Capabilities.maxImageCount; + ImageCount = Capabilities.maxImageCount; } VkSwapchainCreateInfoKHR CreateInfo{}; CreateInfo.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR; - CreateInfo.surface = SwapConfig.Surface; + CreateInfo.surface = Surface; CreateInfo.minImageCount = ImageCount; CreateInfo.imageFormat = SurfaceFormat.format; CreateInfo.imageColorSpace = SurfaceFormat.colorSpace; CreateInfo.imageExtent = Extent; CreateInfo.imageArrayLayers = 1; - CreateInfo.imageUsage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; // may need VK_IMAGE_USAGE_TRANSFER_DST_BIT for post processing https://vulkan-tutorial.com/Drawing_a_triangle/Presentation/Swap_chain#:~:text=VK%5FIMAGE%5FUSAGE%5FTRANSFER%5FDST%5FBIT + CreateInfo.imageUsage = + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; // may need VK_IMAGE_USAGE_TRANSFER_DST_BIT for post + // processing + // https://vulkan-tutorial.com/Drawing_a_triangle/Presentation/Swap_chain#:~:text=VK%5FIMAGE%5FUSAGE%5FTRANSFER%5FDST%5FBIT - uint32_t QueueFamilyIndices[] = { SwapConfig.GraphicsFamily.value(), - SwapConfig.PresentFamily.value() }; + uint32_t QueueFamilyIndices[] = { GraphicsFamily, PresentFamily }; - if (SwapConfig.GraphicsFamily != SwapConfig.PresentFamily) + if (GraphicsFamily != PresentFamily) { CreateInfo.imageSharingMode = VK_SHARING_MODE_CONCURRENT; CreateInfo.queueFamilyIndexCount = 2; @@ -122,13 +149,13 @@ void VulkanSwapChain::CreateSwapChain() CreateInfo.pQueueFamilyIndices = nullptr; } - CreateInfo.preTransform = SwapConfig.Capabilities.currentTransform; + CreateInfo.preTransform = Capabilities.currentTransform; CreateInfo.compositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR; CreateInfo.presentMode = PresentMode; CreateInfo.clipped = VK_TRUE; CreateInfo.oldSwapchain = VK_NULL_HANDLE; - if (vkCreateSwapchainKHR(SwapConfig.Device, &CreateInfo, nullptr, &SwapChain) != VK_SUCCESS) + if (vkCreateSwapchainKHR(Device, &CreateInfo, nullptr, &SwapChain) != VK_SUCCESS) { Log::Error("Failed to create swap chain."); } @@ -137,47 +164,49 @@ void VulkanSwapChain::CreateSwapChain() Log::Info("Successfully created swap chain."); } - vkGetSwapchainImagesKHR(SwapConfig.Device, SwapChain, &ImageCount, nullptr); + vkGetSwapchainImagesKHR(Device, SwapChain, &ImageCount, nullptr); SwapChainImages.resize(ImageCount); - vkGetSwapchainImagesKHR(SwapConfig.Device, SwapChain, &ImageCount, SwapChainImages.data()); + vkGetSwapchainImagesKHR(Device, SwapChain, &ImageCount, SwapChainImages.data()); SwapChainImageFormat = SurfaceFormat.format; SwapChainExtent = Extent; } +VkImageView +VulkanSwapChain::CreateImageView(VkImage Image, VkFormat Format, VkImageAspectFlags AspectFlags) +{ + VkImageViewCreateInfo ViewInfo{}; + ViewInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO; + ViewInfo.image = Image; + + ViewInfo.viewType = VK_IMAGE_VIEW_TYPE_2D; + ViewInfo.format = Format; + ViewInfo.subresourceRange.aspectMask = AspectFlags; + ViewInfo.subresourceRange.baseMipLevel = 0; + ViewInfo.subresourceRange.levelCount = 1; + ViewInfo.subresourceRange.baseArrayLayer = 0; + ViewInfo.subresourceRange.layerCount = 1; + + VkImageView ImageView; + if (vkCreateImageView(Device, &ViewInfo, nullptr, &ImageView) != VK_SUCCESS) + { + Log::Error("Failed to create image view!"); + } + else + { + Log::Info("Successfully created image view."); + } + + return ImageView; +} + void VulkanSwapChain::CreateImageViews() { SwapChainImageViews.resize(SwapChainImages.size()); - int CreatedViews = 0; for (size_t i = 0; i < SwapChainImages.size(); i++) { - VkImageViewCreateInfo CreateInfo{}; - CreateInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO; - CreateInfo.image = SwapChainImages[i]; - - CreateInfo.viewType = VK_IMAGE_VIEW_TYPE_2D; - CreateInfo.format = SwapChainImageFormat; - CreateInfo.components.r = VK_COMPONENT_SWIZZLE_IDENTITY; - CreateInfo.components.g = VK_COMPONENT_SWIZZLE_IDENTITY; - CreateInfo.components.b = VK_COMPONENT_SWIZZLE_IDENTITY; - CreateInfo.components.a = VK_COMPONENT_SWIZZLE_IDENTITY; - - CreateInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - CreateInfo.subresourceRange.baseMipLevel = 0; - CreateInfo.subresourceRange.levelCount = 1; - CreateInfo.subresourceRange.baseArrayLayer = 0; - CreateInfo.subresourceRange.layerCount = 1; - - if (vkCreateImageView(SwapConfig.Device, &CreateInfo, nullptr, &SwapChainImageViews[i]) != VK_SUCCESS) - { - Log::Error("Failed to create image views."); - } - else - { - CreatedViews++; - } + SwapChainImageViews[i] = + CreateImageView(SwapChainImages[i], SwapChainImageFormat, VK_IMAGE_ASPECT_COLOR_BIT); } - - Log::Info("Successfully created " + std::to_string(CreatedViews) + " image views."); } diff --git a/src/private/VulkanTexture.cpp b/src/private/VulkanTexture.cpp new file mode 100644 index 0000000..1a256b9 --- /dev/null +++ b/src/private/VulkanTexture.cpp @@ -0,0 +1,281 @@ +#include "VulkanTexture.hpp" + +#include "Logger.h" +#include "VulkanBuffers.h" +#include "VulkanSwapChain.h" + +#include + +VulkanTexture::VulkanTexture( + VkDevice Device, + VkPhysicalDevice PhysicalDevice, + VkQueue GraphicsQueue, + VulkanBuffers& Buffers, + VulkanSwapChain& SwapChain +) + : Device(Device) + , PhysicalDevice(PhysicalDevice) + , GraphicsQueue(GraphicsQueue) + , Buffers(Buffers) + , SwapChain(SwapChain) +{ +} + +VulkanTexture::~VulkanTexture() {} + +void VulkanTexture::Cleanup() +{ + CleanupTextures(); + CleanupDepth(); +} + +void VulkanTexture::CleanupTextures() +{ + vkDestroySampler(Device, Sampler, nullptr); + vkDestroyImageView(Device, ImageView, nullptr); + vkDestroyImage(Device, Image, nullptr); + vkFreeMemory(Device, ImageMemory, nullptr); +} + +void VulkanTexture::CleanupDepth() +{ + vkDestroyImageView(Device, DepthImageView, nullptr); + vkDestroyImage(Device, DepthImage, nullptr); + vkFreeMemory(Device, DepthImageMemory, nullptr); +} + +void VulkanTexture::LoadFromFile(const char* Filename) +{ + int TextureWidth, TextureHeight, TextureChannels; + stbi_uc* Pixels = + stbi_load(Filename, &TextureWidth, &TextureHeight, &TextureChannels, STBI_rgb_alpha); + VkDeviceSize ImageSize = TextureWidth * TextureHeight * 4; + + if (!Pixels) + { + Log::Error("Failed to load texture image!"); + } + else + { + Log::Info("Successfully loaded texture image."); + } + + VkBuffer StagingBuffer; + VkDeviceMemory StagingBufferMemory; + + Buffers.CreateBuffer( + ImageSize, + VK_BUFFER_USAGE_TRANSFER_SRC_BIT, + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, + StagingBuffer, + StagingBufferMemory + ); + + void* Data; + vkMapMemory(Device, StagingBufferMemory, 0, ImageSize, 0, &Data); + memcpy(Data, Pixels, static_cast(ImageSize)); + vkUnmapMemory(Device, StagingBufferMemory); + + stbi_image_free(Pixels); + + CreateImage( + TextureWidth, + TextureHeight, + VK_FORMAT_R8G8B8A8_SRGB, + VK_IMAGE_TILING_OPTIMAL, + VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, + Image, + ImageMemory + ); + + Buffers.TransitionImageLayout( + Image, + VK_FORMAT_R8G8B8A8_SRGB, + VK_IMAGE_LAYOUT_UNDEFINED, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + HasStencilComponent(VK_FORMAT_R8G8B8A8_SRGB) + ); + + Buffers.CopyBufferToImage( + StagingBuffer, + Image, + static_cast(TextureWidth), + static_cast(TextureHeight) + ); + + Buffers.TransitionImageLayout( + Image, + VK_FORMAT_R8G8B8A8_SRGB, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, + HasStencilComponent(VK_FORMAT_R8G8B8A8_SRGB) + ); + + vkDestroyBuffer(Device, StagingBuffer, nullptr); + vkFreeMemory(Device, StagingBufferMemory, nullptr); +} + +void VulkanTexture::CreateImageView() +{ + ImageView = + SwapChain.CreateImageView(Image, VK_FORMAT_R8G8B8A8_SRGB, VK_IMAGE_ASPECT_COLOR_BIT); +} + +void VulkanTexture::CreateSampler() +{ + VkSamplerCreateInfo SamplerInfo{}; + SamplerInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO; + SamplerInfo.magFilter = VK_FILTER_LINEAR; + SamplerInfo.minFilter = VK_FILTER_LINEAR; + SamplerInfo.addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT; + SamplerInfo.addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT; + SamplerInfo.addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT; + SamplerInfo.anisotropyEnable = VK_TRUE; + + VkPhysicalDeviceProperties Properties{}; + vkGetPhysicalDeviceProperties(PhysicalDevice, &Properties); + + SamplerInfo.maxAnisotropy = Properties.limits.maxSamplerAnisotropy; + SamplerInfo.borderColor = VK_BORDER_COLOR_INT_OPAQUE_BLACK; + SamplerInfo.unnormalizedCoordinates = VK_FALSE; + SamplerInfo.compareEnable = VK_FALSE; + SamplerInfo.compareOp = VK_COMPARE_OP_ALWAYS; + SamplerInfo.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR; + SamplerInfo.mipLodBias = 0.0f; + SamplerInfo.minLod = 0.0f; + SamplerInfo.maxLod = 0.0f; + + if (vkCreateSampler(Device, &SamplerInfo, nullptr, &Sampler) != VK_SUCCESS) + { + Log::Error("Failed to create texture sampler!"); + } + else + { + Log::Info("Successfully created texture sampler."); + } +} + +void VulkanTexture::CreateDepthResources() +{ + VkFormat DepthFormat = FindDepthFormat(); + VkExtent2D Extents = SwapChain.GetSwapChainExtent(); + + CreateImage( + Extents.width, + Extents.height, + DepthFormat, + VK_IMAGE_TILING_OPTIMAL, + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, + DepthImage, + DepthImageMemory + ); + + DepthImageView = SwapChain.CreateImageView(DepthImage, DepthFormat, VK_IMAGE_ASPECT_DEPTH_BIT); + + Buffers.TransitionImageLayout( + DepthImage, + DepthFormat, + VK_IMAGE_LAYOUT_UNDEFINED, + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, + HasStencilComponent(DepthFormat) + ); +} + +VkFormat VulkanTexture::FindSupportedFormat( + const std::vector& Candidates, + VkImageTiling Tiling, + VkFormatFeatureFlags Features +) +{ + for (VkFormat Format : Candidates) + { + VkFormatProperties Properties; + vkGetPhysicalDeviceFormatProperties(PhysicalDevice, Format, &Properties); + + if (Tiling == VK_IMAGE_TILING_LINEAR + && (Properties.linearTilingFeatures & Features) == Features) + { + return Format; + } + else if (Tiling == VK_IMAGE_TILING_OPTIMAL + && (Properties.optimalTilingFeatures & Features) == Features) + { + return Format; + } + } + + Log::Error("Failed to find supported format!"); +} + +VkFormat VulkanTexture::FindDepthFormat() +{ + return FindSupportedFormat( + { VK_FORMAT_D32_SFLOAT, VK_FORMAT_D32_SFLOAT_S8_UINT, VK_FORMAT_D24_UNORM_S8_UINT }, + VK_IMAGE_TILING_OPTIMAL, + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT + ); +} + +bool VulkanTexture::HasStencilComponent(VkFormat Format) +{ + return Format == VK_FORMAT_D32_SFLOAT_S8_UINT || Format == VK_FORMAT_D24_UNORM_S8_UINT; +} + +void VulkanTexture::CreateImage( + uint32_t Width, + uint32_t Height, + VkFormat Format, + VkImageTiling Tiling, + VkImageUsageFlags Usage, + VkMemoryPropertyFlags Properties, + VkImage& Image, + VkDeviceMemory& ImageMemory +) +{ + + VkImageCreateInfo ImageInfo{}; + ImageInfo.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO; + ImageInfo.imageType = VK_IMAGE_TYPE_2D; + ImageInfo.extent.width = Width; + ImageInfo.extent.height = Height; + ImageInfo.extent.depth = 1; + ImageInfo.mipLevels = 1; + ImageInfo.arrayLayers = 1; + ImageInfo.format = Format; + ImageInfo.tiling = Tiling; + ImageInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; + ImageInfo.usage = Usage; + ImageInfo.samples = VK_SAMPLE_COUNT_1_BIT; + ImageInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; + + if (vkCreateImage(Device, &ImageInfo, nullptr, &Image) != VK_SUCCESS) + { + Log::Error("Failed to create image!"); + } + else + { + Log::Info("Successfully created image."); + } + + VkMemoryRequirements MemoryRequirements; + vkGetImageMemoryRequirements(Device, Image, &MemoryRequirements); + + VkMemoryAllocateInfo AllocateInfo{}; + AllocateInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; + AllocateInfo.allocationSize = MemoryRequirements.size; + AllocateInfo.memoryTypeIndex = + Buffers.FindMemoryType(MemoryRequirements.memoryTypeBits, Properties); + + if (vkAllocateMemory(Device, &AllocateInfo, nullptr, &ImageMemory) != VK_SUCCESS) + { + Log::Error("Failed to allocate image memory!"); + } + else + { + Log::Info("Successfully allocated imaged memory."); + } + + vkBindImageMemory(Device, Image, ImageMemory, 0); +} diff --git a/src/private/VulkanVertexBuffer.cpp b/src/private/VulkanVertexBuffer.cpp deleted file mode 100644 index 31328dc..0000000 --- a/src/private/VulkanVertexBuffer.cpp +++ /dev/null @@ -1,176 +0,0 @@ -#include "VulkanVertexBuffer.h" -#include "utilities/Logger.h" -#include -#include -#include - -void VulkanVertexBuffer::Initialize(FVertexBufferConfig InConfig) -{ - Config = InConfig; -} - -void VulkanVertexBuffer::Cleanup(const uint32_t MAX_FRAMES_IN_FLIGHT) -{ - for (size_t i = 0; i < MAX_FRAMES_IN_FLIGHT; i++) - { - vkDestroyBuffer(Config.Device, UniformBuffers[i], nullptr); - vkFreeMemory(Config.Device, UniformBuffersMemory[i], nullptr); - } - - vkDestroyBuffer(Config.Device, IndexBuffer, nullptr); - vkFreeMemory(Config.Device, IndexBufferMemory, nullptr); - - vkDestroyBuffer(Config.Device, VertexBuffer, nullptr); - vkFreeMemory(Config.Device, VertexBufferMemory, nullptr); -} - -void VulkanVertexBuffer::CreateBuffer(VkDeviceSize Size, VkBufferUsageFlags Usage, VkMemoryPropertyFlags Properties, VkBuffer& Buffer, VkDeviceMemory& BufferMemory) -{ - VkBufferCreateInfo BufferInfo{}; - BufferInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; - BufferInfo.size = Size; - BufferInfo.usage = Usage; - BufferInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; - - if (vkCreateBuffer(Config.Device, &BufferInfo, nullptr, &Buffer) != VK_SUCCESS) - { - Log::Error("Failed to create buffer!"); - } - else - { - Log::Info("Successfully created buffer."); - } - - VkMemoryRequirements MemoryRequirements; - vkGetBufferMemoryRequirements(Config.Device, Buffer, &MemoryRequirements); - - VkMemoryAllocateInfo AllocateInfo{}; - AllocateInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; - AllocateInfo.allocationSize = MemoryRequirements.size; - AllocateInfo.memoryTypeIndex = FindMemoryType(MemoryRequirements.memoryTypeBits, Properties); - - if (vkAllocateMemory(Config.Device, &AllocateInfo, nullptr, &BufferMemory) != VK_SUCCESS) - { - Log::Error("Failed to allocate vertex buffer memory!"); - } - else - { - Log::Info("Successfully allocated vertex buffer memory."); - } - - vkBindBufferMemory(Config.Device, Buffer, BufferMemory, 0); -} - -void VulkanVertexBuffer::CopyBuffer(VkBuffer SrcBuffer, VkBuffer DstBuffer, VkDeviceSize Size) -{ - VkCommandBufferAllocateInfo AllocateInfo{}; - AllocateInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO; - AllocateInfo.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY; - AllocateInfo.commandPool = Config.CommandPool; - AllocateInfo.commandBufferCount = 1; - - VkCommandBuffer CommandBuffer; - vkAllocateCommandBuffers(Config.Device, &AllocateInfo, &CommandBuffer); - - VkCommandBufferBeginInfo BeginInfo{}; - BeginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; - BeginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT; - - vkBeginCommandBuffer(CommandBuffer, &BeginInfo); - - VkBufferCopy CopyRegion{}; - CopyRegion.srcOffset = 0; - CopyRegion.dstOffset = 0; - CopyRegion.size = Size; - vkCmdCopyBuffer(CommandBuffer, SrcBuffer, DstBuffer, 1, &CopyRegion); - - vkEndCommandBuffer(CommandBuffer); - - VkSubmitInfo SubmitInfo{}; - SubmitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; - SubmitInfo.commandBufferCount = 1; - SubmitInfo.pCommandBuffers = &CommandBuffer; - - vkQueueSubmit(Config.GraphicsQueue, 1, &SubmitInfo, VK_NULL_HANDLE); - vkQueueWaitIdle(Config.GraphicsQueue); - - vkFreeCommandBuffers(Config.Device, Config.CommandPool, 1, &CommandBuffer); -} - -void VulkanVertexBuffer::CreateVertexBuffer(const std::vector& InVertices) -{ - VkDeviceSize BufferSize = sizeof(InVertices[0]) * InVertices.size(); - - VkBuffer StagingBuffer; - VkDeviceMemory StagingBufferMemory; - CreateBuffer(BufferSize, VK_BUFFER_USAGE_TRANSFER_SRC_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, StagingBuffer, StagingBufferMemory); - Log::Info("Starting buffer copy..."); - - void* Data; - vkMapMemory(Config.Device, StagingBufferMemory, 0, BufferSize, 0, &Data); - memcpy(Data, InVertices.data(), (size_t)BufferSize); - vkUnmapMemory(Config.Device, StagingBufferMemory); - - Log::Info("Finished buffer copy..."); - CreateBuffer(BufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, VertexBuffer, VertexBufferMemory); - - CopyBuffer(StagingBuffer, VertexBuffer, BufferSize); - - vkDestroyBuffer(Config.Device, StagingBuffer, nullptr); - vkFreeMemory(Config.Device, StagingBufferMemory, nullptr); -} - -void VulkanVertexBuffer::CreateIndexBuffer(const std::vector& InIndices) -{ - VkDeviceSize BufferSize = sizeof(InIndices[0]) * InIndices.size(); - - VkBuffer StagingBuffer; - VkDeviceMemory StagingBufferMemory; - CreateBuffer(BufferSize, VK_BUFFER_USAGE_TRANSFER_SRC_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, StagingBuffer, StagingBufferMemory); - Log::Info("Starting buffer copy..."); - - void* Data; - vkMapMemory(Config.Device, StagingBufferMemory, 0, BufferSize, 0, &Data); - memcpy(Data, InIndices.data(), (size_t)BufferSize); - vkUnmapMemory(Config.Device, StagingBufferMemory); - - Log::Info("Finished buffer copy..."); - CreateBuffer(BufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_INDEX_BUFFER_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, IndexBuffer, IndexBufferMemory); - - CopyBuffer(StagingBuffer, IndexBuffer, BufferSize); - - vkDestroyBuffer(Config.Device, StagingBuffer, nullptr); - vkFreeMemory(Config.Device, StagingBufferMemory, nullptr); -} - -void VulkanVertexBuffer::CreateUniformBuffers(const uint32_t MAX_FRAMES_IN_FLIGHT) -{ - VkDeviceSize BufferSize = sizeof(UniformBufferObject); - - UniformBuffers.resize(MAX_FRAMES_IN_FLIGHT); - UniformBuffersMemory.resize(MAX_FRAMES_IN_FLIGHT); - UniformBuffersMapped.resize(MAX_FRAMES_IN_FLIGHT); - - for (size_t i = 0; i < MAX_FRAMES_IN_FLIGHT; i++) - { - CreateBuffer(BufferSize, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, UniformBuffers[i], UniformBuffersMemory[i]); - vkMapMemory(Config.Device, UniformBuffersMemory[i], 0, BufferSize, 0, &UniformBuffersMapped[i]); - } -} - -uint32_t VulkanVertexBuffer::FindMemoryType(uint32_t TypeFilter, VkMemoryPropertyFlags Properties) -{ - VkPhysicalDeviceMemoryProperties MemoryProperties; - vkGetPhysicalDeviceMemoryProperties(Config.PhysicalDevice, &MemoryProperties); - - for (uint32_t i = 0; i < MemoryProperties.memoryTypeCount; i++) - { - if ((TypeFilter & (1 << i)) && (MemoryProperties.memoryTypes[i].propertyFlags & Properties) == Properties) - { - return i; - } - } - - Log::Error("Failed to find suitable memory type!"); - return 0; -} diff --git a/src/public/VulkanBuffers.h b/src/public/VulkanBuffers.h new file mode 100644 index 0000000..d431934 --- /dev/null +++ b/src/public/VulkanBuffers.h @@ -0,0 +1,109 @@ +#pragma once + +#include +#define GLFW_INCLUDE_VULKAN +#include + +#include +#include +#include + +#include "Primitives.h" + +struct FBufferConfig +{ + VkDevice Device; + VkRenderPass RenderPass; + VkPhysicalDevice PhysicalDevice; + VkQueue GraphicsQueue; +}; + +struct FRecordBuffersParams +{ + VkCommandBuffer InCommandBuffer; + uint32_t ImageIndex; + VkBuffer InVertexBuffer; + uint32_t InVerticesSize; + VkBuffer InIndexBuffer; + uint32_t InIndexSize; + VkRenderPass RenderPass; + VkExtent2D SwapChainExtent; + VkPipeline GraphicsPipeline; + std::vector SwapChainFramebuffers; + VkDescriptorSet DescriptorSet; + VkPipelineLayout PipelineLayout; + bool bDrawImGui = false; + // std::vector InVertices; + // ImDrawData* DrawData = nullptr; +}; + +class VulkanBuffers +{ +public: + void Initialize(FBufferConfig InConfig); + // VkDevice InDevice, + // VkRenderPass InRenderPass); + + void Cleanup(size_t MAX_FRAMES_IN_FLIGHT); + + void CreateCommandPool(std::optional GraphicsFamily); + + void CreateCommandBuffers(int FramesInFlight); + + void RecordCommandBuffer(FRecordBuffersParams& Params); + + VkCommandBuffer BeginSingleTimeCommands(); + void EndSingleTimeCommands(VkCommandBuffer InCommandBuffer, VkQueue GraphicsQueue); + + void TransitionImageLayout( + VkImage Image, + VkFormat Format, + VkImageLayout OldLayout, + VkImageLayout NewLayout, + bool bHasStencilComponent + ); + + void CopyBufferToImage(VkBuffer Buffer, VkImage Image, uint32_t Width, uint32_t Height); + + void + CopyBuffer(VkQueue GraphicsQueue, VkBuffer SrcBuffer, VkBuffer DstBuffer, VkDeviceSize Size); + void CreateBuffer( + VkDeviceSize Size, + VkBufferUsageFlags Usage, + VkMemoryPropertyFlags Properties, + VkBuffer& Buffer, + VkDeviceMemory& BufferMemory + ); + void CreateVertexBuffer(const std::vector& InVertices); + void CreateIndexBuffer(const std::vector& InIndices); + void CreateUniformBuffers(const uint32_t MAX_FRAMES_IN_FLIGHT); + + uint32_t FindMemoryType(uint32_t TypeFilter, VkMemoryPropertyFlags Properties); + + std::vector GetCommandBuffers() { return CommandBuffers; } + VkCommandBuffer GetCommandBuffer(int i) { return CommandBuffers[i]; } + VkCommandPool GetCommandPool() { return CommandPool; } + VkBuffer GetVertexBuffer() { return VertexBuffer; } + VkBuffer GetIndexBuffer() { return IndexBuffer; } + std::vector GetUniformBuffers() { return UniformBuffers; } + std::vector GetUniformBuffersMapped() { return UniformBuffersMapped; } + +private: + // VkDevice Device; + // VkRenderPass RenderPass; + // VkQueue GraphicsQueue; + FBufferConfig Config; + + std::vector CommandBuffers; + VkCommandPool CommandPool; + + VkBuffer VertexBuffer; + VkDeviceMemory VertexBufferMemory; + + VkBuffer IndexBuffer; + VkDeviceMemory IndexBufferMemory; + + std::vector UniformBuffers; + std::vector UniformBuffersMemory; + std::vector UniformBuffersMapped; +}; diff --git a/src/public/VulkanCommandBuffers.h b/src/public/VulkanCommandBuffers.h deleted file mode 100644 index 499bca6..0000000 --- a/src/public/VulkanCommandBuffers.h +++ /dev/null @@ -1,58 +0,0 @@ - -#pragma once - -#include "VulkanVertexBuffer.h" -#include -#include -#define GLFW_INCLUDE_VULKAN -#include - -#include -#include - -struct FRecordCommandBuffersParams -{ - VkCommandBuffer InCommandBuffer; - uint32_t ImageIndex; - VkBuffer InVertexBuffer; - uint32_t InVerticesSize; - VkBuffer InIndexBuffer; - uint32_t InIndexSize; - VkRenderPass RenderPass; - VkExtent2D SwapChainExtent; - VkPipeline GraphicsPipeline; - std::vector SwapChainFramebuffers; - VkDescriptorSet DescriptorSet; - VkPipelineLayout PipelineLayout; - bool bDrawImGui = false; - // std::vector InVertices; - // ImDrawData* DrawData = nullptr; -}; - -class VulkanCommandBuffers -{ -public: - void Initialize( - VkDevice InDevice, - VkRenderPass InRenderPass); - - void Cleanup(); - - void CreateCommandPool(std::optional GraphicsFamily); - - void CreateCommandBuffers(int FramesInFlight); - - void RecordCommandBuffer(FRecordCommandBuffersParams& Params); - - std::vector GetCommandBuffers() { return CommandBuffers; } - VkCommandBuffer GetCommandBuffer(int i) { return CommandBuffers[i]; } - VkCommandPool GetCommandPool() { return CommandPool; } - -private: - VkDevice Device; - VkRenderPass RenderPass; - // VkQueue GraphicsQueue; - - std::vector CommandBuffers; - VkCommandPool CommandPool; -}; diff --git a/src/public/VulkanContext.h b/src/public/VulkanContext.hpp similarity index 52% rename from src/public/VulkanContext.h rename to src/public/VulkanContext.hpp index 64b771c..469ff7a 100755 --- a/src/public/VulkanContext.h +++ b/src/public/VulkanContext.hpp @@ -1,26 +1,26 @@ #pragma once -#include "VulkanCommandBuffers.h" -#include "VulkanFramebuffers.h" -#include "VulkanInstanceManager.h" -#include "VulkanDeviceManager.h" -#include "VulkanDebugManager.h" -#include "VulkanPipeline.h" -#include "VulkanRenderPass.h" -#include "VulkanSwapChain.h" -#include "VulkanVertexBuffer.h" +class VulkanInstanceManager; +class VulkanDebugManager; +class VulkanDeviceManager; +class VulkanSwapChain; +class VulkanPipeline; +class VulkanRenderPass; +class VulkanBuffers; +class VulkanFramebuffers; +class VulkanTexture; +class Vertex; #include -#include +#include #include #include #define GLFW_INCLUDE_VULKAN #include -static const std::vector ValidationLayers = { - "VK_LAYER_KHRONOS_validation" -}; +static const std::vector ValidationLayers = { "VK_LAYER_KHRONOS_validation" }; +static size_t MAX_FRAMES_IN_FLIGHT = 2; struct FVulkanConfig { @@ -36,17 +36,22 @@ public: VulkanContext(); ~VulkanContext(); - VulkanInstanceManager InstanceManager; - VulkanDebugManager DebugManager; - VulkanDeviceManager DeviceManager; - VulkanSwapChain SwapChain; - VulkanPipeline GraphicsPipeline; - VulkanRenderPass RenderPass; - VulkanFramebuffers Framebuffers; - VulkanVertexBuffer VertexBuffer; - VulkanCommandBuffers CommandBuffers; + std::unique_ptr InstanceManager; + std::unique_ptr DebugManager; + std::unique_ptr DeviceManager; + std::unique_ptr SwapChain; + std::unique_ptr GraphicsPipeline; + std::unique_ptr RenderPass; + std::unique_ptr Framebuffers; + std::unique_ptr Buffers; + std::unique_ptr Textures; + // std::unique_ptr DepthPass; - void Initialize(FVulkanConfig& InConfig, const std::vector& InVertices, const std::vector& InIndices); + void Initialize( + FVulkanConfig& InConfig, + const std::vector& InVertices, + const std::vector& InIndices + ); void Cleanup(); void CreateSurface(GLFWwindow* Window); @@ -55,20 +60,10 @@ public: void CreateDescriptorPool(); void CreateDescriptorSets(); - void CreateImage( - uint32_t Width, - uint32_t Height, - VkFormat Format, - VkImageTiling Tiling, - VkImageUsageFlags Usage, - VkMemoryPropertyFlags Properties, - VkImage& Image, - VkDeviceMemory& ImageMemory); - void CreateTextureImage(const char* FileName); - void CreateSyncObjects(); void DrawFrame(bool bDrawImGui, uint32_t InVerticesSize, uint32_t InIndexSize); + void UpdateUniformBuffer(uint32_t CurrentImage); void RecreateSwapChain(); @@ -95,13 +90,18 @@ private: VkDescriptorPool DescriptorPool; std::vector DescriptorSets; - VkImage TextureImage; - VkDeviceMemory TextureImageMemory; + // VkImage TextureImage; + // VkDeviceMemory TextureImageMemory; + // VkImageView TextureImageView; + // VkSampler TextureSampler; + // + // VkImage DepthImage; + // VkDeviceMemory DepthImageMemory; + // VkImageView DepthImageView; bool bFramebufferResized = false; bool bImGuiGlfwInitialized = false; bool bImGuiVulkanInitialized = false; - const size_t MAX_FRAMES_IN_FLIGHT = 2; - uint32_t CurrentFrame = 0; + uint32_t CurrentFrame = 0; }; diff --git a/src/public/VulkanDepthPass.hpp b/src/public/VulkanDepthPass.hpp new file mode 100644 index 0000000..0dedd5c --- /dev/null +++ b/src/public/VulkanDepthPass.hpp @@ -0,0 +1,73 @@ +#pragma once + +#include "Logger.h" +#include "VulkanContext.hpp" + +#include + +#include + +struct FDepthConfig +{ + VkPhysicalDevice PhysicalDevice; +}; + +class VulkanDepthPass +{ +public: + void Initialize(FDepthConfig& InConfig) { Config = InConfig; } + + void CreateDepthResources() { VkFormat DepthFormat = FindDepthFormat(); } + + VkFormat FindSupportedFormat( + const std::vector& Candidates, + VkImageTiling Tiling, + VkFormatFeatureFlags Features + ) + { + for (VkFormat Format : Candidates) + { + VkFormatProperties Properties; + vkGetPhysicalDeviceFormatProperties(Config.PhysicalDevice, Format, &Properties); + + if (Tiling == VK_IMAGE_TILING_LINEAR + && (Properties.linearTilingFeatures & Features) == Features) + { + return Format; + } + else if (Tiling == VK_IMAGE_TILING_OPTIMAL + && (Properties.optimalTilingFeatures & Features) == Features) + { + return Format; + } + } + + Log::Error("Failed to find supported format!"); + } + + VkFormat FindDepthFormat() + { + return FindSupportedFormat( + { VK_FORMAT_D32_SFLOAT, VK_FORMAT_D32_SFLOAT_S8_UINT, VK_FORMAT_D24_UNORM_S8_UINT }, + VK_IMAGE_TILING_OPTIMAL, + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT + ); + } + + bool HasStencilComponent(VkFormat Format) + { + return Format == VK_FORMAT_D32_SFLOAT_S8_UINT || Format == VK_FORMAT_D24_UNORM_S8_UINT; + } + + VkImage& GetDepthImage() { return DepthImage; } + VkDeviceMemory& GetDepthImageMemory() { return DepthImageMemory; } + VkImageView& GetDepthImageView() { return DepthImageView; } + void SetDepthImageView(VkImageView ImageView) { DepthImageView = ImageView; } + +private: + FDepthConfig Config; + + VkImage DepthImage; + VkDeviceMemory DepthImageMemory; + VkImageView DepthImageView; +}; diff --git a/src/public/VulkanDeviceManager.h b/src/public/VulkanDeviceManager.h index 1275548..d7378c1 100755 --- a/src/public/VulkanDeviceManager.h +++ b/src/public/VulkanDeviceManager.h @@ -7,14 +7,6 @@ #define GLFW_INCLUDE_VULKAN #include -struct FDeviceConfig -{ - VkInstance Instance; - bool bEnableValidationLayers; - VkSurfaceKHR Surface; - GLFWwindow* Window; -}; - struct QueueFamilyIndices { std::optional GraphicsFamily; @@ -36,14 +28,13 @@ struct SwapChainSupportDetails class VulkanDeviceManager { public: - VulkanDeviceManager(); - ~VulkanDeviceManager(); + VulkanDeviceManager( + VkInstance Instance, + VkSurfaceKHR Surface, + GLFWwindow* Window, + bool bEnableValidationLayers); - void Initialize(FDeviceConfig InConfig); - // VkInstance Instance, - // bool EnableValidationLayers, - // VkSurfaceKHR Surface, - // GLFWwindow* Window); + ~VulkanDeviceManager(); void Cleanup(); @@ -58,7 +49,10 @@ public: VkQueue GetPresentQueue() { return PresentQueue; } private: - FDeviceConfig DeviceConfig; + VkInstance Instance; + VkSurfaceKHR Surface; + GLFWwindow* Window; + bool bEnableValidationLayers; VkDevice Device = VK_NULL_HANDLE; VkPhysicalDevice PhysicalDevice = VK_NULL_HANDLE; diff --git a/src/public/VulkanFramebuffers.h b/src/public/VulkanFramebuffers.h index b9a6045..602b355 100644 --- a/src/public/VulkanFramebuffers.h +++ b/src/public/VulkanFramebuffers.h @@ -21,17 +21,10 @@ public: void Cleanup(); - void CreateFramebuffers(); - // void CreateFramebuffers(VkRenderPass RenderPass, std::vector SwapChainImageViews, VkExtent2D SwapChainExtent); + void CreateFramebuffers(VkImageView DepthImageView); std::vector GetSwapChainFrameBuffers() { return SwapChainFramebuffers; } - // void CreateCommandPool(std::optional GraphicsFamily); - // - // void CreateCommandBuffer(); - // - // void RecordCommandBuffer(VkCommandBuffer CommandBuffer, uint32_t imageIndex, VkRenderPass RenderPass, VkExtent2D SwapChainExtent, VkPipeline GraphicsPipeline); - private: FFramebufferConfig FramebufferConfig; diff --git a/src/public/VulkanInstanceManager.h b/src/public/VulkanInstanceManager.hpp similarity index 76% rename from src/public/VulkanInstanceManager.h rename to src/public/VulkanInstanceManager.hpp index 18fbf12..ecd78b5 100755 --- a/src/public/VulkanInstanceManager.h +++ b/src/public/VulkanInstanceManager.hpp @@ -15,8 +15,8 @@ public: void Cleanup(); - void CreateInstance(VulkanDebugManager* DebugManager = nullptr); - const VkInstance GetInstance() const { return Instance; } + void CreateInstance(VulkanDebugManager* DebugManager = nullptr); + VkInstance GetInstance() const { return Instance; } private: VkInstance Instance = VK_NULL_HANDLE; diff --git a/src/public/VulkanRenderPass.h b/src/public/VulkanRenderPass.h index 9aa9a87..380b192 100644 --- a/src/public/VulkanRenderPass.h +++ b/src/public/VulkanRenderPass.h @@ -10,7 +10,7 @@ public: void Cleanup(); - void CreateRenderPass(VkFormat SwapChainImageFormat); + void CreateRenderPass(VkFormat SwapChainImageFormat, VkFormat DepthFormat); VkRenderPass GetRenderPass() { return RenderPass; } diff --git a/src/public/VulkanSwapChain.h b/src/public/VulkanSwapChain.h index 5182e74..87df66d 100644 --- a/src/public/VulkanSwapChain.h +++ b/src/public/VulkanSwapChain.h @@ -1,93 +1,64 @@ #pragma once -#include +#include #include -#include +#include #define GLFW_INCLUDE_VULKAN #include -const std::vector DeviceExtensions = { - VK_KHR_SWAPCHAIN_EXTENSION_NAME -}; -// -// struct SwapChainSupportDetails -// { -// VkSurfaceCapabilitiesKHR Capabilities; -// std::vector Formats; -// std::vector PresentModes; -// }; - -struct FSwapConfig -{ - VkDevice Device; - VkSurfaceKHR Surface; - GLFWwindow* Window; - std::optional GraphicsFamily; - std::optional PresentFamily; - VkSurfaceCapabilitiesKHR Capabilities; - std::vector Formats; - std::vector PresentModes; -}; +const std::vector DeviceExtensions = { VK_KHR_SWAPCHAIN_EXTENSION_NAME }; class VulkanSwapChain { public: - VulkanSwapChain(); + VulkanSwapChain( + VkDevice Device, + VkSurfaceKHR Surface, + GLFWwindow* Window, + uint32_t GraphicsFamily, + uint32_t PresentFamily, + const VkSurfaceCapabilitiesKHR& Capabilities, + const std::vector& Formats, + const std::vector& PresentModes + ); + ~VulkanSwapChain(); - void Initialize(FSwapConfig InConfig); + VulkanSwapChain(const VulkanSwapChain&) = delete; + VulkanSwapChain& operator=(const VulkanSwapChain&) = delete; - // void Initialize( - // VkDevice InDevice, - // VkSurfaceKHR InSurface, - // GLFWwindow* InWindow); + void CreateSwapChain(); + void CreateImageViews(); void Cleanup(); - void CreateSwapChain(); - // void CreateSwapChain( - // std::optional GraphicsFamily, - // std::optional PresentFamily, - // VkSurfaceCapabilitiesKHR Capabilities, - // std::vector Formats, - // std::vector PresentModes); - - void CreateImageViews(); - - // void RecreateSwapChain(); - - VkSwapchainKHR GetSwapChain() { return SwapChain; } - VkFormat GetSwapChainImageFormat() { return SwapChainImageFormat; } - VkExtent2D GetSwapChainExtent() { return SwapChainExtent; } - std::vector GetSwapChainImageViews() { return SwapChainImageViews; } + VkImageView CreateImageView(VkImage Image, VkFormat Format, VkImageAspectFlags AspectFlags); + VkSwapchainKHR GetSwapChain() { return SwapChain; } + VkFormat GetSwapChainImageFormat() { return SwapChainImageFormat; } + VkExtent2D GetSwapChainExtent() { return SwapChainExtent; } + std::vector& GetSwapChainImageViews() { return SwapChainImageViews; } + size_t GetSwapChainImagesCount() { return SwapChainImages.size(); } private: - FSwapConfig SwapConfig; - // VkPhysicalDevice PhysicalDevice; - // VkDevice Device; - // VkSurfaceKHR Surface; - // - // GLFWwindow* Window = nullptr; - - std::vector SwapChainImages; - VkSwapchainKHR SwapChain = VK_NULL_HANDLE; - VkFormat SwapChainImageFormat; - VkExtent2D SwapChainExtent; + VkDevice Device; + VkSurfaceKHR Surface; + GLFWwindow* Window; + uint32_t GraphicsFamily; + uint32_t PresentFamily; + VkSurfaceCapabilitiesKHR Capabilities; + std::vector Formats; + std::vector PresentModes; + std::vector SwapChainImages; + VkSwapchainKHR SwapChain = VK_NULL_HANDLE; + VkFormat SwapChainImageFormat; + VkExtent2D SwapChainExtent; std::vector SwapChainImageViews; - // bool IsDeviceSuitable(VkPhysicalDevice Device); - // - // int RateDeviceSuitability(VkPhysicalDevice Device); - // - // bool CheckDeviceExtensionSupport(VkPhysicalDevice Device); - - // SwapChainSupportDetails QuerySwapChainSupport(VkPhysicalDevice Device); - - VkSurfaceFormatKHR ChooseSwapSurfaceFormat(const std::vector& AvailableFormats); - - VkPresentModeKHR ChooseSwapPresentMode(const std::vector& AvailablePresentModes); - + VkSurfaceFormatKHR + ChooseSwapSurfaceFormat(const std::vector& AvailableFormats); + VkPresentModeKHR + ChooseSwapPresentMode(const std::vector& AvailablePresentModes); VkExtent2D ChooseSwapExtent(const VkSurfaceCapabilitiesKHR& Capabilities); }; diff --git a/src/public/VulkanTexture.hpp b/src/public/VulkanTexture.hpp new file mode 100644 index 0000000..4710391 --- /dev/null +++ b/src/public/VulkanTexture.hpp @@ -0,0 +1,68 @@ +#pragma once + +#include + +class VulkanBuffers; +class VulkanSwapChain; + +class VulkanTexture +{ +public: + VulkanTexture( + VkDevice Device, + VkPhysicalDevice PhysicalDevice, + VkQueue GraphicsQueue, + VulkanBuffers& Buffers, + VulkanSwapChain& SwapChain + ); + + ~VulkanTexture(); + + void Cleanup(); + void CleanupTextures(); + void CleanupDepth(); + + void LoadFromFile(const char* Filename); + void CreateImageView(); + void CreateSampler(); + + void CreateDepthResources(); + VkFormat FindSupportedFormat( + const std::vector& Candidates, + VkImageTiling Tiling, + VkFormatFeatureFlags Features + ); + VkFormat FindDepthFormat(); + bool HasStencilComponent(VkFormat Format); + + VkImageView GetImageView() const { return ImageView; } + VkSampler GetSampler() const { return Sampler; } + VkImageView GetDepthImageView() const { return DepthImageView; } + +private: + VkDevice Device; + VkPhysicalDevice PhysicalDevice; + VkQueue GraphicsQueue; + VulkanBuffers& Buffers; + VulkanSwapChain& SwapChain; + + VkImage Image; + VkDeviceMemory ImageMemory; + VkImageView ImageView; + VkSampler Sampler; + + VkImage DepthImage; + VkDeviceMemory DepthImageMemory; + VkImageView DepthImageView; + + void CreateImage( + uint32_t Width, + uint32_t Height, + VkFormat Format, + VkImageTiling Tiling, + VkImageUsageFlags Usage, + VkMemoryPropertyFlags Properties, + VkImage& Image, + VkDeviceMemory& ImageMemory + ); +}; diff --git a/src/public/VulkanVertexBuffer.h b/src/public/VulkanVertexBuffer.h deleted file mode 100644 index 822cda6..0000000 --- a/src/public/VulkanVertexBuffer.h +++ /dev/null @@ -1,55 +0,0 @@ -#pragma once - -#include "Primitives.h" - -#include -#include - -#define GLFW_INCLUDE_VULKAN -#include - -struct FVertexBufferConfig -{ - VkDevice Device; - VkPhysicalDevice PhysicalDevice; - VkCommandPool CommandPool; - VkQueue GraphicsQueue; -}; - -class VulkanVertexBuffer -{ -public: - void Initialize(FVertexBufferConfig InConfig); - - void Cleanup(const uint32_t MAX_FRAMES_IN_FLIGHT); - - void CreateBuffer(VkDeviceSize Size, VkBufferUsageFlags Usage, VkMemoryPropertyFlags Properties, VkBuffer& Buffer, VkDeviceMemory& BufferMemory); - - void CopyBuffer(VkBuffer SrcBuffer, VkBuffer DstBuffer, VkDeviceSize Size); - - void CreateVertexBuffer(const std::vector& InVertices); - - void CreateIndexBuffer(const std::vector& InIndices); - - void CreateUniformBuffers(const uint32_t MAX_FRAMES_IN_FLIGHT); - - uint32_t FindMemoryType(uint32_t TypeFilter, VkMemoryPropertyFlags Properties); - - VkBuffer GetVertexBuffer() { return VertexBuffer; } - VkBuffer GetIndexBuffer() { return IndexBuffer; } - std::vector GetUniformBuffers() { return UniformBuffers; } - std::vector GetUniformBuffersMapped() { return UniformBuffersMapped; } - -private: - FVertexBufferConfig Config; - - VkBuffer VertexBuffer; - VkDeviceMemory VertexBufferMemory; - - VkBuffer IndexBuffer; - VkDeviceMemory IndexBufferMemory; - - std::vector UniformBuffers; - std::vector UniformBuffersMemory; - std::vector UniformBuffersMapped; -}; diff --git a/src/utilities/Primitives.h b/src/utilities/Primitives.h index 4135fac..737b2a1 100644 --- a/src/utilities/Primitives.h +++ b/src/utilities/Primitives.h @@ -1,3 +1,4 @@ +#include #include #include @@ -5,8 +6,9 @@ struct Vertex { - glm::vec2 Position; + glm::vec3 Position; glm::vec3 Color; + glm::vec2 TextureCoordinates; static VkVertexInputBindingDescription GetBindingDescription() { @@ -18,12 +20,12 @@ struct Vertex return BindingDescription; } - static std::array GetAttributeDescriptions() + static std::array GetAttributeDescriptions() { - std::array AttributeDescriptions{}; + std::array AttributeDescriptions{}; AttributeDescriptions[0].binding = 0; AttributeDescriptions[0].location = 0; - AttributeDescriptions[0].format = VK_FORMAT_R32G32_SFLOAT; + AttributeDescriptions[0].format = VK_FORMAT_R32G32B32_SFLOAT; AttributeDescriptions[0].offset = offsetof(Vertex, Position); AttributeDescriptions[1].binding = 0; @@ -31,6 +33,11 @@ struct Vertex AttributeDescriptions[1].format = VK_FORMAT_R32G32B32_SFLOAT; AttributeDescriptions[1].offset = offsetof(Vertex, Color); + AttributeDescriptions[2].binding = 0; + AttributeDescriptions[2].location = 2; + AttributeDescriptions[2].format = VK_FORMAT_R32G32_SFLOAT; + AttributeDescriptions[2].offset = offsetof(Vertex, TextureCoordinates); + return AttributeDescriptions; } };

    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 z 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 z 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