diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index b7b775219..7b04eae16 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -88,9 +88,9 @@ jobs: choco install ccache if: matrix.os == 'windows-latest' - - name: Set up SDL 2.30.9 (ubuntu-22.04) + - name: Set up SDL 2.30.11 (ubuntu-22.04) run: | - SDL2VER=2.30.9 + SDL2VER=2.30.11 if [[ ! -e ~/.ccache ]]; then mkdir ~/.ccache fi diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 475bf1c61..ca0ba8947 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -49,9 +49,9 @@ jobs: with: submodules: recursive - - name: Set up SDL 2.30.9 (ubuntu-latest) + - name: Set up SDL 2.30.11 (ubuntu-latest) run: | - SDL2VER=2.30.9 + SDL2VER=2.30.11 if [[ ! -e ~/.ccache ]]; then mkdir ~/.ccache fi diff --git a/.gitmodules b/.gitmodules index 83486efc2..bbade4f76 100644 --- a/.gitmodules +++ b/.gitmodules @@ -62,10 +62,7 @@ url = https://github.com/vitasdk/vita-toolchain.git [submodule "external/VulkanMemoryAllocator-Hpp"] path = external/VulkanMemoryAllocator-Hpp - url = https://github.com/Macdu/VulkanMemoryAllocator-Hpp -[submodule "external/Vulkan-Headers"] - path = external/Vulkan-Headers - url = https://github.com/KhronosGroup/Vulkan-Headers.git + url = https://github.com/YaaZ/VulkanMemoryAllocator-Hpp [submodule "external/yaml-cpp"] path = external/yaml-cpp url = https://github.com/jbeder/yaml-cpp diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index 6c0b6e4da..336243555 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -236,7 +236,7 @@ add_library(CLI11 INTERFACE) target_include_directories(CLI11 INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/cli11") add_library(vulkan INTERFACE) -target_include_directories(vulkan INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/Vulkan-Headers/include") +target_include_directories(vulkan INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/VulkanMemoryAllocator-Hpp/Vulkan-Headers/include") if(APPLE) if(NOT EXISTS "${CMAKE_BINARY_DIR}/external/MoltenVK-macos.tar") message(STATUS "Downloading MoltenVK...") diff --git a/external/Vulkan-Headers b/external/Vulkan-Headers deleted file mode 160000 index d192041a2..000000000 --- a/external/Vulkan-Headers +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d192041a2fc9c9fd8ae67d8ae3f32c5511541f04 diff --git a/external/VulkanMemoryAllocator-Hpp b/external/VulkanMemoryAllocator-Hpp index 9bd4173e9..2059f0fdd 160000 --- a/external/VulkanMemoryAllocator-Hpp +++ b/external/VulkanMemoryAllocator-Hpp @@ -1 +1 @@ -Subproject commit 9bd4173e9f52763f719f45c7cff3d8ea2811f4b4 +Subproject commit 2059f0fdd73492b03d60a90c73e5038224b99093 diff --git a/external/capstone b/external/capstone index 097c04d94..accf4df62 160000 --- a/external/capstone +++ b/external/capstone @@ -1 +1 @@ -Subproject commit 097c04d9413c59a58b00d4d1c8d5dc0ac158ffaa +Subproject commit accf4df62f1fba6f92cae692985d27063552601c diff --git a/external/cubeb b/external/cubeb index bbbe5bb0b..f8633c0c9 160000 --- a/external/cubeb +++ b/external/cubeb @@ -1 +1 @@ -Subproject commit bbbe5bb0b29ed64cc7dd191d7a72fe24bba0d284 +Subproject commit f8633c0c9217ed5499fdda391946d416c52e6809 diff --git a/external/fmt b/external/fmt index b50e685db..123913715 160000 --- a/external/fmt +++ b/external/fmt @@ -1 +1 @@ -Subproject commit b50e685db996c167e6c831dcef582aba6e14276a +Subproject commit 123913715afeb8a437e6388b4473fcc4753e1c9a diff --git a/external/googletest b/external/googletest index e39786088..6910c9d91 160000 --- a/external/googletest +++ b/external/googletest @@ -1 +1 @@ -Subproject commit e39786088138f2749d64e9e90e0f9902daa77c40 +Subproject commit 6910c9d9165801d8827d628cb72eb7ea9dd538c5 diff --git a/external/imgui b/external/imgui index 1dfbb100d..cb16568fc 160000 --- a/external/imgui +++ b/external/imgui @@ -1 +1 @@ -Subproject commit 1dfbb100d6ca6e7d813102e979c07f66a56546bb +Subproject commit cb16568fca5297512ff6a8f3b877f461c4323fbe diff --git a/external/imgui_club b/external/imgui_club index 63c7fed4b..53a2df3dd 160000 --- a/external/imgui_club +++ b/external/imgui_club @@ -1 +1 @@ -Subproject commit 63c7fed4b31c50c8a529b6c15ae7d7d9e89812a6 +Subproject commit 53a2df3dd1b19dd321beb0897a0d1b9f87e5429c diff --git a/external/libfat16 b/external/libfat16 index 14ec30733..d9a890b71 160000 --- a/external/libfat16 +++ b/external/libfat16 @@ -1 +1 @@ -Subproject commit 14ec3073358544c70b77702ff6394f09ce349c59 +Subproject commit d9a890b712dcdb46d3d33230997efc59f5ad8d62 diff --git a/external/nativefiledialog-extended b/external/nativefiledialog-extended index c099aaee9..86d5f2005 160000 --- a/external/nativefiledialog-extended +++ b/external/nativefiledialog-extended @@ -1 +1 @@ -Subproject commit c099aaee9a24a35ad93e06513b41aeb503d848d0 +Subproject commit 86d5f2005fe1c00747348a12070fec493ea2407e diff --git a/external/pugixml b/external/pugixml index db78afc2b..ee86beb30 160000 --- a/external/pugixml +++ b/external/pugixml @@ -1 +1 @@ -Subproject commit db78afc2b7d8f043b4bc6b185635d949ea2ed2a8 +Subproject commit ee86beb30e4973f5feffe3ce63bfa4fbadf72f38 diff --git a/external/sdl b/external/sdl index f9593a17c..6d973c851 160000 --- a/external/sdl +++ b/external/sdl @@ -1 +1 @@ -Subproject commit f9593a17cc0e8bb61199d691329e1798b79bbab6 +Subproject commit 6d973c85105c8e4a9e5458e4504e712cecec6aa9 diff --git a/external/spdlog b/external/spdlog index 27cb4c767..48bcf39a6 160000 --- a/external/spdlog +++ b/external/spdlog @@ -1 +1 @@ -Subproject commit 27cb4c76708608465c413f6d0e6b8d99a4d84302 +Subproject commit 48bcf39a661a13be22666ac64db8a7f886f2637e diff --git a/external/stb b/external/stb index f7f20f39f..f0569113c 160000 --- a/external/stb +++ b/external/stb @@ -1 +1 @@ -Subproject commit f7f20f39fe4f206c6f19e26ebfef7b261ee59ee4 +Subproject commit f0569113c93ad095470c54bf34a17b36646bbbb5 diff --git a/external/vita-toolchain b/external/vita-toolchain index 61a943c67..77f17b979 160000 --- a/external/vita-toolchain +++ b/external/vita-toolchain @@ -1 +1 @@ -Subproject commit 61a943c67da5008b100bdcabff812ecd7816425d +Subproject commit 77f17b979678e7af0acfe708dc97a45ca6fd55e2 diff --git a/external/xxHash b/external/xxHash index bbb27a5ef..e626a72bc 160000 --- a/external/xxHash +++ b/external/xxHash @@ -1 +1 @@ -Subproject commit bbb27a5efb85b92a0486cf361a8635715a53f6ba +Subproject commit e626a72bc2321cd320e953a0ccf1584cad60f363 diff --git a/vita3k/renderer/include/renderer/vulkan/gxm_to_vulkan.h b/vita3k/renderer/include/renderer/vulkan/gxm_to_vulkan.h index 3f2d4dbaf..2cb00eb31 100644 --- a/vita3k/renderer/include/renderer/vulkan/gxm_to_vulkan.h +++ b/vita3k/renderer/include/renderer/vulkan/gxm_to_vulkan.h @@ -17,6 +17,9 @@ #pragma once +#ifdef __APPLE__ +#define VK_ENABLE_BETA_EXTENSIONS +#endif #define VK_NO_PROTOTYPES #define VULKAN_HPP_NO_CONSTRUCTORS #define VULKAN_HPP_NO_SPACESHIP_OPERATOR diff --git a/vita3k/renderer/src/vulkan/renderer.cpp b/vita3k/renderer/src/vulkan/renderer.cpp index 665770efc..267eee6eb 100644 --- a/vita3k/renderer/src/vulkan/renderer.cpp +++ b/vita3k/renderer/src/vulkan/renderer.cpp @@ -32,15 +32,14 @@ #ifdef __APPLE__ #include -#include #endif static vk::DebugUtilsMessengerEXT debug_messenger; -static VKAPI_ATTR VkBool32 VKAPI_CALL debug_callback( - VkDebugUtilsMessageSeverityFlagBitsEXT message_severity, - VkDebugUtilsMessageTypeFlagsEXT message_type, - const VkDebugUtilsMessengerCallbackDataEXT *callback_data, +static VKAPI_ATTR vk::Bool32 VKAPI_CALL debug_callback( + vk::DebugUtilsMessageSeverityFlagBitsEXT message_severity, + vk::DebugUtilsMessageTypeFlagsEXT message_type, + const vk::DebugUtilsMessengerCallbackDataEXT *callback_data, void *pUserData) { static const char *ignored_errors[] = { "VUID-vkCmdDrawIndexed-None-02721", // using r8g8b8a8 with non-multiple of 4 stride @@ -51,9 +50,9 @@ static VKAPI_ATTR VkBool32 VKAPI_CALL debug_callback( "VUID-vkAcquireNextImageKHR-semaphore-01779" // Semaphore misuse, to fix }; - if (message_severity >= VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT - // for now we are not interested by performance warnings - && (message_type & ~VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT)) { + if (message_severity >= vk::DebugUtilsMessageSeverityFlagBitsEXT::eWarning + // for now, we are not interested in performance warnings + && (message_type & ~vk::DebugUtilsMessageTypeFlagBitsEXT::ePerformance)) { std::string_view message = callback_data->pMessage; bool log_error = true; for (auto ignored_error : ignored_errors) { @@ -70,11 +69,11 @@ static VKAPI_ATTR VkBool32 VKAPI_CALL debug_callback( } const static std::vector required_device_extensions = { - VK_KHR_SWAPCHAIN_EXTENSION_NAME, + vk::KHRSwapchainExtensionName, // needed in order to use storage buffers - VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME, + vk::KHRStorageBufferStorageClassExtensionName, // needed in order to use negative viewport height - VK_KHR_MAINTENANCE1_EXTENSION_NAME + vk::KHRMaintenance1ExtensionName }; namespace renderer::vulkan { @@ -184,8 +183,7 @@ bool VKState::init() { bool VKState::create(SDL_Window *window, std::unique_ptr &state, const Config &config) { // Create Instance { - PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = reinterpret_cast(SDL_Vulkan_GetVkGetInstanceProcAddr()); - VULKAN_HPP_DEFAULT_DISPATCHER.init(vkGetInstanceProcAddr); + VULKAN_HPP_DEFAULT_DISPATCHER.init(); vk::ApplicationInfo app_info{ .pApplicationName = app_name, // App Name @@ -206,12 +204,12 @@ bool VKState::create(SDL_Window *window, std::unique_ptr &state SDL_Vulkan_GetInstanceExtensions(window, &instance_req_ext_count, instance_extensions.data()); const std::set optional_instance_extensions = { - VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, - VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME, - VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME, + vk::KHRGetPhysicalDeviceProperties2ExtensionName, + vk::KHRExternalMemoryCapabilitiesExtensionName, + vk::KHRDeviceGroupCreationExtensionName, #ifdef __APPLE__ - VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME, - VK_EXT_LAYER_SETTINGS_EXTENSION_NAME, + vk::KHRPortabilityEnumerationExtensionName, + vk::EXTLayerSettingsExtensionName, #endif }; for (const vk::ExtensionProperties &prop : vk::enumerateInstanceExtensionProperties()) { @@ -224,7 +222,7 @@ bool VKState::create(SDL_Window *window, std::unique_ptr &state // look if we can use the validation layer bool has_debug_extension = false; bool has_validation_layer = false; - const std::string debug_extension = VK_EXT_DEBUG_UTILS_EXTENSION_NAME; + const std::string debug_extension = vk::EXTDebugUtilsExtensionName; for (const vk::ExtensionProperties &prop : vk::enumerateInstanceExtensionProperties()) { if (std::string(prop.extensionName.data()) == debug_extension) { has_debug_extension = true; @@ -370,28 +368,28 @@ bool VKState::create(SDL_Window *window, std::unique_ptr &state bool support_external_memory = false; bool support_shader_interlock = false; const std::map optional_extensions = { - { VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME, &temp_bool }, + { vk::KHRGetMemoryRequirements2ExtensionName, &temp_bool }, // can be used by vma to improve performance - { VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME, &support_dedicated_allocations }, + { vk::KHRDedicatedAllocationExtensionName, &support_dedicated_allocations }, // used to tell the driver this application is high priority - { VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME, &support_global_priority }, + { vk::EXTGlobalPriorityExtensionName, &support_global_priority }, // can be used to specify which format will be used by mutable images - { VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME, &surface_cache.support_image_format_specifier }, - { VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME, &temp_bool }, - { VK_KHR_DEVICE_GROUP_EXTENSION_NAME, &temp_bool }, + { vk::KHRImageFormatListExtensionName, &surface_cache.support_image_format_specifier }, + { vk::KHRExternalMemoryExtensionName, &temp_bool }, + { vk::KHRDeviceGroupExtensionName, &temp_bool }, // can host memory directly be used for gxm memory - { VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME, &support_external_memory }, + { vk::EXTExternalMemoryHostExtensionName, &support_external_memory }, // also needed for reading mapped memory in the shader - { VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, &support_buffer_device_address }, + { vk::KHRBufferDeviceAddressExtensionName, &support_buffer_device_address }, // needed for uniform uvec2 arrays not to take twice the size - { VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME, &support_standard_layout }, + { vk::KHRUniformBufferStandardLayoutExtensionName, &support_standard_layout }, // needed for FSR - { VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME, &support_fsr }, + { vk::KHRShaderFloat16Int8ExtensionName, &support_fsr }, // used for accurate programmable blending on desktop GPUs - { VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME, &support_shader_interlock }, + { vk::EXTFragmentShaderInterlockExtensionName, &support_shader_interlock }, #ifdef __APPLE__ // Needed to create the MoltenVK device - { VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME, &temp_bool }, + { vk::KHRPortabilitySubsetExtensionName, &temp_bool }, #endif }; @@ -504,7 +502,7 @@ bool VKState::create(SDL_Window *window, std::unique_ptr &state try { device = physical_device.createDevice(device_info.get()); - } catch (vk::NotPermittedKHRError &) { + } catch (vk::NotPermittedError &) { // according to the vk spec, when using a priority higher than medium // we can get this error (although I think it will only possibly happen // for realtime priority) diff --git a/vita3k/vkutil/include/vkutil/vkutil.h b/vita3k/vkutil/include/vkutil/vkutil.h index 4bf71d6f0..36abd9032 100644 --- a/vita3k/vkutil/include/vkutil/vkutil.h +++ b/vita3k/vkutil/include/vkutil/vkutil.h @@ -17,6 +17,9 @@ #pragma once +#ifdef __APPLE__ +#define VK_ENABLE_BETA_EXTENSIONS +#endif #define VK_NO_PROTOTYPES #define VULKAN_HPP_NO_CONSTRUCTORS #define VULKAN_HPP_NO_SPACESHIP_OPERATOR