diff --git a/.gitignore b/.gitignore index ae5f6c81..7aa1ab40 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,5 @@ ads.txt build_ebook.log temp_ebook.md ebook/*.pdf -ebook/*.epub \ No newline at end of file +ebook/*.epub +/build \ No newline at end of file diff --git a/code/01_instance_creation.cpp b/code/01_instance_creation.cpp index 2bad54e7..6cea1745 100644 --- a/code/01_instance_creation.cpp +++ b/code/01_instance_creation.cpp @@ -60,6 +60,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; uint32_t glfwExtensionCount = 0; diff --git a/code/02_validation_layers.cpp b/code/02_validation_layers.cpp index 8e7fac42..aed6c1fe 100644 --- a/code/02_validation_layers.cpp +++ b/code/02_validation_layers.cpp @@ -98,6 +98,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -151,6 +152,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/03_physical_device_selection.cpp b/code/03_physical_device_selection.cpp index 3ccba31b..0208b60a 100644 --- a/code/03_physical_device_selection.cpp +++ b/code/03_physical_device_selection.cpp @@ -110,6 +110,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -217,6 +218,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/04_logical_device.cpp b/code/04_logical_device.cpp index 7fe1d157..d929a703 100644 --- a/code/04_logical_device.cpp +++ b/code/04_logical_device.cpp @@ -116,6 +116,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -260,6 +261,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/05_window_surface.cpp b/code/05_window_surface.cpp index 2fc94016..26068150 100644 --- a/code/05_window_surface.cpp +++ b/code/05_window_surface.cpp @@ -122,6 +122,8 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -288,6 +290,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/06_swap_chain_creation.cpp b/code/06_swap_chain_creation.cpp index cbca98ad..7425dcf6 100644 --- a/code/06_swap_chain_creation.cpp +++ b/code/06_swap_chain_creation.cpp @@ -142,6 +142,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -446,6 +447,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/07_image_views.cpp b/code/07_image_views.cpp index 26c20fac..7f316087 100644 --- a/code/07_image_views.cpp +++ b/code/07_image_views.cpp @@ -148,6 +148,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -477,6 +478,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/08_graphics_pipeline.cpp b/code/08_graphics_pipeline.cpp index 4c337f75..f1545169 100644 --- a/code/08_graphics_pipeline.cpp +++ b/code/08_graphics_pipeline.cpp @@ -149,6 +149,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -482,6 +483,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/09_shader_modules.cpp b/code/09_shader_modules.cpp index 9de7078c..37f00184 100644 --- a/code/09_shader_modules.cpp +++ b/code/09_shader_modules.cpp @@ -150,6 +150,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -518,6 +519,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/10_fixed_functions.cpp b/code/10_fixed_functions.cpp index 7abe5003..108b0008 100644 --- a/code/10_fixed_functions.cpp +++ b/code/10_fixed_functions.cpp @@ -154,6 +154,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -585,6 +586,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/11_render_passes.cpp b/code/11_render_passes.cpp index 3310eb00..4fdce8fc 100644 --- a/code/11_render_passes.cpp +++ b/code/11_render_passes.cpp @@ -157,6 +157,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -620,6 +621,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/12_graphics_pipeline_complete.cpp b/code/12_graphics_pipeline_complete.cpp index a30f38be..a5edbbde 100644 --- a/code/12_graphics_pipeline_complete.cpp +++ b/code/12_graphics_pipeline_complete.cpp @@ -159,6 +159,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -642,6 +643,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/13_framebuffers.cpp b/code/13_framebuffers.cpp index 95192d66..77dc21c4 100644 --- a/code/13_framebuffers.cpp +++ b/code/13_framebuffers.cpp @@ -165,6 +165,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -671,6 +672,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/14_command_buffers.cpp b/code/14_command_buffers.cpp index 8332b5b1..c66350de 100644 --- a/code/14_command_buffers.cpp +++ b/code/14_command_buffers.cpp @@ -172,6 +172,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -749,6 +750,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/15_hello_triangle.cpp b/code/15_hello_triangle.cpp index 4d9f04f3..4c6da6c5 100644 --- a/code/15_hello_triangle.cpp +++ b/code/15_hello_triangle.cpp @@ -186,6 +186,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -834,6 +835,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/16_frames_in_flight.cpp b/code/16_frames_in_flight.cpp index c5746983..33098dbd 100644 --- a/code/16_frames_in_flight.cpp +++ b/code/16_frames_in_flight.cpp @@ -189,6 +189,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -846,6 +847,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/17_swap_chain_recreation.cpp b/code/17_swap_chain_recreation.cpp index 05854eff..c6455c2d 100644 --- a/code/17_swap_chain_recreation.cpp +++ b/code/17_swap_chain_recreation.cpp @@ -220,6 +220,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -890,6 +891,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/18_vertex_input.cpp b/code/18_vertex_input.cpp index 34aae683..faaf454e 100644 --- a/code/18_vertex_input.cpp +++ b/code/18_vertex_input.cpp @@ -258,6 +258,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -934,6 +935,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/19_vertex_buffer.cpp b/code/19_vertex_buffer.cpp index 89b20051..7ac55a7e 100644 --- a/code/19_vertex_buffer.cpp +++ b/code/19_vertex_buffer.cpp @@ -266,6 +266,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -990,6 +991,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/20_staging_buffer.cpp b/code/20_staging_buffer.cpp index ac0f9b20..b1541456 100644 --- a/code/20_staging_buffer.cpp +++ b/code/20_staging_buffer.cpp @@ -266,6 +266,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -1038,6 +1039,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/21_index_buffer.cpp b/code/21_index_buffer.cpp index 23fcf264..0b939e88 100644 --- a/code/21_index_buffer.cpp +++ b/code/21_index_buffer.cpp @@ -277,6 +277,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -1071,6 +1072,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/22_descriptor_set_layout.cpp b/code/22_descriptor_set_layout.cpp index 3d54aa6a..59ed7624 100644 --- a/code/22_descriptor_set_layout.cpp +++ b/code/22_descriptor_set_layout.cpp @@ -300,6 +300,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -1143,6 +1144,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/23_descriptor_sets.cpp b/code/23_descriptor_sets.cpp index b690bd93..a85a172b 100644 --- a/code/23_descriptor_sets.cpp +++ b/code/23_descriptor_sets.cpp @@ -307,6 +307,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -1201,6 +1202,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/24_texture_image.cpp b/code/24_texture_image.cpp index 44c15bc5..01d90dcb 100644 --- a/code/24_texture_image.cpp +++ b/code/24_texture_image.cpp @@ -317,6 +317,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -1356,6 +1357,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/25_sampler.cpp b/code/25_sampler.cpp index c5f4f59d..8eaad148 100644 --- a/code/25_sampler.cpp +++ b/code/25_sampler.cpp @@ -324,6 +324,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -1397,6 +1398,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/26_texture_mapping.cpp b/code/26_texture_mapping.cpp index 51168ec1..419cdf8c 100644 --- a/code/26_texture_mapping.cpp +++ b/code/26_texture_mapping.cpp @@ -330,6 +330,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -1427,6 +1428,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/27_depth_buffering.cpp b/code/27_depth_buffering.cpp index 5e0452c2..c45a9223 100644 --- a/code/27_depth_buffering.cpp +++ b/code/27_depth_buffering.cpp @@ -347,6 +347,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -1507,6 +1508,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/28_model_loading.cpp b/code/28_model_loading.cpp index 319e4f7f..8abd45f5 100644 --- a/code/28_model_loading.cpp +++ b/code/28_model_loading.cpp @@ -354,6 +354,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -1553,6 +1554,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/29_mipmapping.cpp b/code/29_mipmapping.cpp index ae0cadf5..9e5d5061 100644 --- a/code/29_mipmapping.cpp +++ b/code/29_mipmapping.cpp @@ -355,6 +355,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -1647,6 +1648,8 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/30_multisampling.cpp b/code/30_multisampling.cpp index 638c2219..05468367 100644 --- a/code/30_multisampling.cpp +++ b/code/30_multisampling.cpp @@ -366,6 +366,7 @@ class HelloTriangleApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -1697,6 +1698,7 @@ class HelloTriangleApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); return extensions; } diff --git a/code/31_compute_shader.cpp b/code/31_compute_shader.cpp index e6901670..27dfecb5 100644 --- a/code/31_compute_shader.cpp +++ b/code/31_compute_shader.cpp @@ -322,6 +322,7 @@ class ComputeShaderApplication { VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + createInfo.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; createInfo.pApplicationInfo = &appInfo; auto extensions = getRequiredExtensions(); @@ -1346,6 +1347,8 @@ class ComputeShaderApplication { if (enableValidationLayers) { extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); } + extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME); + return extensions; } diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index 4c409f92..ce98f981 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -1,21 +1,44 @@ -cmake_minimum_required (VERSION 3.8) +cmake_minimum_required (VERSION 3.18) project (VulkanTutorial) -find_package (glfw3 REQUIRED) -find_package (glm REQUIRED) +# find_package (glfw3 REQUIRED) +# find_package (glm REQUIRED) find_package (Vulkan REQUIRED) -find_package (tinyobjloader REQUIRED) - -find_package (PkgConfig) -pkg_get_variable (STB_INCLUDEDIR stb includedir) -if (NOT STB_INCLUDEDIR) - unset (STB_INCLUDEDIR) - find_path (STB_INCLUDEDIR stb_image.h PATH_SUFFIXES stb) -endif () -if (NOT STB_INCLUDEDIR) - message (FATAL_ERROR "stb_image.h not found") -endif () + +set(CMAKE_CXX_STANDARD 20) +include(FetchContent) + +FetchContent_Declare( + tinyobjloader + GIT_REPOSITORY https://github.com/tinyobjloader/tinyobjloader.git + GIT_TAG 3bb554c +) + +FetchContent_MakeAvailable(tinyobjloader) + +FetchContent_Declare( + stb + GIT_REPOSITORY https://github.com/nothings/stb.git + GIT_TAG f056911 +) + +FetchContent_MakeAvailable(stb) + +FetchContent_Declare( + glfw + GIT_REPOSITORY https://github.com/glfw/glfw.git + GIT_TAG e7ea71b +) + +FetchContent_MakeAvailable(glfw) +FetchContent_Declare( + glm + GIT_REPOSITORY https://github.com/g-truc/glm.git + GIT_TAG 2d4c4b4 +) + +FetchContent_MakeAvailable(glm) add_executable (glslang::validator IMPORTED) find_program (GLSLANG_VALIDATOR "glslangValidator" HINTS $ENV{VULKAN_SDK}/bin REQUIRED) @@ -55,7 +78,12 @@ function (add_chapter CHAPTER_NAME) RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CHAPTER_NAME}) set_target_properties (${CHAPTER_NAME} PROPERTIES CXX_STANDARD 17) target_link_libraries (${CHAPTER_NAME} Vulkan::Vulkan glfw) - target_include_directories (${CHAPTER_NAME} PRIVATE ${STB_INCLUDEDIR}) + target_include_directories (${CHAPTER_NAME} PRIVATE ${stb_SOURCE_DIR}) + +# # 设置包含目录 +# target_include_directories(your_target PRIVATE +# ${stb_SOURCE_DIR} +# ) if (DEFINED CHAPTER_SHADER) set (CHAPTER_SHADER_TARGET ${CHAPTER_NAME}_shader) @@ -167,19 +195,19 @@ add_chapter (28_model_loading SHADER 27_shader_depth MODELS ../resources/viking_room.obj TEXTURES ../resources/viking_room.png - LIBS glm::glm tinyobjloader::tinyobjloader) + LIBS glm::glm tinyobjloader) add_chapter (29_mipmapping SHADER 27_shader_depth MODELS ../resources/viking_room.obj TEXTURES ../resources/viking_room.png - LIBS glm::glm tinyobjloader::tinyobjloader) + LIBS glm::glm tinyobjloader) add_chapter (30_multisampling SHADER 27_shader_depth MODELS ../resources/viking_room.obj TEXTURES ../resources/viking_room.png - LIBS glm::glm tinyobjloader::tinyobjloader) + LIBS glm::glm tinyobjloader) add_chapter (31_compute_shader SHADER 31_shader_compute