Compare commits

...

5 Commits

Author SHA1 Message Date
Sharadh Rajaraman 52b17c07a4 Change readme module name 2025-11-14 00:11:35 +00:00
Sharadh Rajaraman 6f989179a8 Use corrected module name in all tests 2025-11-14 00:09:49 +00:00
Sharadh Rajaraman 86a1a2dbcf Add vulkan-video to main module instead of separately 2025-11-14 00:08:26 +00:00
Sharadh Rajaraman a191c11a6d Export-import video module partition
- Also rename the main module as `vulkan`
2025-11-14 00:08:26 +00:00
Sharadh Rajaraman 2d4f3cb6a3 Export vulkan-video as module partition of `vulkan` 2025-11-14 00:07:44 +00:00
28 changed files with 296 additions and 288 deletions

View File

@ -341,12 +341,10 @@ if( VULKAN_HPP_BUILD_CXX_MODULE )
# create targets providing VulkanHpp and VulkanVideoHpp as C++ named modules # create targets providing VulkanHpp and VulkanVideoHpp as C++ named modules
vulkan_hpp__setup_vulkan_module( NAME VulkanHppModule vulkan_hpp__setup_vulkan_module( NAME VulkanHppModule
FILE_SET_NAME vulkan_module_file FILE_SET_NAME vulkan_module_file
FILE_SET vulkan/vulkan.cppm FILE_SET
vulkan/vulkan.cppm
vulkan/vulkan_video.cppm
ALIAS Vulkan::HppModule ) # TODO: respect VULKAN_HPP_BUILD_WITH_LOCAL_VULKAN_HPP ALIAS Vulkan::HppModule ) # TODO: respect VULKAN_HPP_BUILD_WITH_LOCAL_VULKAN_HPP
vulkan_hpp__setup_vulkan_module( NAME VulkanVideoHppModule
FILE_SET_NAME vulkan_video_module_file
FILE_SET vulkan/vulkan_video.cppm
ALIAS Vulkan::VideoHppModule )
endif() endif()
function( vulkan_hpp__setup_platform ) function( vulkan_hpp__setup_platform )

View File

@ -797,7 +797,7 @@ Some functions might provide information that depends on the vulkan version. As
#### Overview <a id='named_module_overview'> #### Overview <a id='named_module_overview'>
Vulkan-Hpp provides a [C++ named module](https://en.cppreference.com/w/cpp/language/modules), `vulkan_hpp` in [`vulkan.cppm`](vulkan/vulkan.cppm). Vulkan-Hpp provides a [C++ named module](https://en.cppreference.com/w/cpp/language/modules), `vulkan` in [`vulkan.cppm`](vulkan/vulkan.cppm).
C++ modules are intended to supersede header files. Modules have potential to drastically improve compilation times for large projects, as declarations and definitions may be easily shared across translation units without repeatedly parsing headers. C++ modules are intended to supersede header files. Modules have potential to drastically improve compilation times for large projects, as declarations and definitions may be easily shared across translation units without repeatedly parsing headers.
Vulkan-Hpp has some extremely long headers (e.g. [`vulkan_structs.hpp`](vulkan/vulkan_structs.hpp)), and the C++ module is likely to shorten compile times for projects currently using it. Vulkan-Hpp has some extremely long headers (e.g. [`vulkan_structs.hpp`](vulkan/vulkan_structs.hpp)), and the C++ module is likely to shorten compile times for projects currently using it.
@ -882,7 +882,7 @@ target_link_libraries( VulkanHppModule PUBLIC Vulkan::Headers )
Finally, supply the macro `VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE` exactly once in your source code, just as in the non-module case. In order to have that macro available, include [`vulkan_hpp_macros.hpp`](vulkan/vulkan_hpp_macros.hpp), a lightweight header providing all Vulkan-Hpp related macros and defines. And as explained above, you need to initialize that dispatcher in two or three steps: Finally, supply the macro `VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE` exactly once in your source code, just as in the non-module case. In order to have that macro available, include [`vulkan_hpp_macros.hpp`](vulkan/vulkan_hpp_macros.hpp), a lightweight header providing all Vulkan-Hpp related macros and defines. And as explained above, you need to initialize that dispatcher in two or three steps:
```cpp ```cpp
import vulkan_hpp; import vulkan;
#include <vulkan/vulkan_hpp_macros.hpp> #include <vulkan/vulkan_hpp_macros.hpp>

View File

@ -8,10 +8,9 @@ module;
#if !defined( VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING ) #if !defined( VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING )
# define VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING \ # define VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING \
"The Vulkan-Hpp C++ named module is experimental. " \ "\n\tThe Vulkan-Hpp C++ named module is experimental. It is subject to change without prior notice.\n" \
"It is subject to change without prior notice.\n" \ "\tTo silence this warning, define the VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING macro.\n" \
"To silence this warning, define the VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING macro.\n\n" \ "\tFor feedback, go to: https://github.com/KhronosGroup/Vulkan-Hpp/issues"
"For feedback, go to: https://github.com/KhronosGroup/Vulkan-Hpp/issues"
VULKAN_HPP_COMPILE_WARNING( VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING ) VULKAN_HPP_COMPILE_WARNING( VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING )
#endif #endif
@ -23,7 +22,8 @@ module;
#include <vulkan/${api}_raii.hpp> #include <vulkan/${api}_raii.hpp>
#include <vulkan/${api}_shared.hpp> #include <vulkan/${api}_shared.hpp>
export module ${api}_hpp; export module ${api};
export import :video;
export import std; export import std;
export namespace VULKAN_HPP_NAMESPACE export namespace VULKAN_HPP_NAMESPACE

View File

@ -1,20 +1,25 @@
${copyrightMessage} ${copyrightMessage}
// Note: This module is still in an experimental state.
// Any feedback is welcome on https://github.com/KhronosGroup/Vulkan-Hpp/issues.
module; module;
#define VULKAN_HPP_CXX_MODULE 1
#include <vulkan/vulkan_hpp_macros.hpp> #include <vulkan/vulkan_hpp_macros.hpp>
#if !defined( VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING )
# define VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING \
"\n\tThe Vulkan-Hpp C++ named module is experimental. It is subject to change without prior notice.\n" \
"\tTo silence this warning, define the VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING macro.\n" \
"\tFor feedback, go to: https://github.com/KhronosGroup/Vulkan-Hpp/issues"
VULKAN_HPP_COMPILE_WARNING( VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING )
#endif
#include <vulkan/vulkan_video.hpp> #include <vulkan/vulkan_video.hpp>
export module vulkan_video_hpp; export module vulkan:video;
export namespace VULKAN_HPP_NAMESPACE export namespace VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE
{
namespace VULKAN_HPP_VIDEO_NAMESPACE
{ {
${usings} ${usings}
} // namespace VULKAN_HPP_VIDEO_NAMESPACE } // namespace VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE
} // namespace VULKAN_HPP_NAMESPACE

View File

@ -35,7 +35,7 @@
# ifdef VULKAN_HPP_SUPPORT_SPAN # ifdef VULKAN_HPP_SUPPORT_SPAN
# include <span> # include <span>
# endif # endif
import vulkan_hpp; import vulkan;
#else #else
# include <vulkan/vulkan.hpp> # include <vulkan/vulkan.hpp>
#endif #endif

View File

@ -32,7 +32,7 @@
#include <iostream> #include <iostream>
#ifdef VULKAN_HPP_USE_CXX_MODULE #ifdef VULKAN_HPP_USE_CXX_MODULE
# include <vulkan/vulkan_hpp_macros.hpp> # include <vulkan/vulkan_hpp_macros.hpp>
import vulkan_hpp; import vulkan;
#else #else
# include <vulkan/vulkan.hpp> # include <vulkan/vulkan.hpp>
#endif #endif

View File

@ -25,7 +25,7 @@
#endif #endif
#ifdef VULKAN_HPP_USE_CXX_MODULE #ifdef VULKAN_HPP_USE_CXX_MODULE
import vulkan_hpp; import vulkan;
#else #else
# include <vulkan/vulkan.hpp> # include <vulkan/vulkan.hpp>
#endif #endif

View File

@ -19,7 +19,7 @@
#include <string> // std::string #include <string> // std::string
#include <iostream> // std::cout #include <iostream> // std::cout
import vulkan_hpp; import vulkan;
static std::string AppName = "Cpp20Modules"; static std::string AppName = "Cpp20Modules";
static std::string EngineName = "Vulkan.cppm"; static std::string EngineName = "Vulkan.cppm";

View File

@ -16,7 +16,7 @@
// Compile test on using c++20 modules // Compile test on using c++20 modules
import std; import std;
import vulkan_hpp; import vulkan;
#if defined( _MSC_VER ) #if defined( _MSC_VER )
# pragma warning( disable : 4189 ) // local variable is initialized but not referenced # pragma warning( disable : 4189 ) // local variable is initialized but not referenced

View File

@ -20,7 +20,7 @@
#ifdef VULKAN_HPP_USE_CXX_MODULE #ifdef VULKAN_HPP_USE_CXX_MODULE
# include <vulkan/vulkan.h> # include <vulkan/vulkan.h>
# include <vulkan/vulkan_hpp_macros.hpp> # include <vulkan/vulkan_hpp_macros.hpp>
import vulkan_hpp; import vulkan;
#else #else
# include <vulkan/vulkan.hpp> # include <vulkan/vulkan.hpp>
# include <vulkan/vulkan_raii.hpp> # include <vulkan/vulkan_raii.hpp>

View File

@ -20,7 +20,7 @@
#include <vector> #include <vector>
#ifdef VULKAN_HPP_USE_CXX_MODULE #ifdef VULKAN_HPP_USE_CXX_MODULE
# include <vulkan/vulkan_hpp_macros.hpp> # include <vulkan/vulkan_hpp_macros.hpp>
import vulkan_hpp; import vulkan;
#else #else
# include <vulkan/vulkan.hpp> # include <vulkan/vulkan.hpp>
#endif #endif

View File

@ -33,7 +33,7 @@
#include <iostream> #include <iostream>
#include <algorithm> #include <algorithm>
#ifdef VULKAN_HPP_USE_CXX_MODULE #ifdef VULKAN_HPP_USE_CXX_MODULE
import vulkan_hpp; import vulkan;
#else #else
# include <vulkan/vulkan.hpp> # include <vulkan/vulkan.hpp>
#endif #endif

View File

@ -20,7 +20,7 @@
#include <cassert> #include <cassert>
#include <iostream> #include <iostream>
#ifdef VULKAN_HPP_USE_CXX_MODULE #ifdef VULKAN_HPP_USE_CXX_MODULE
import vulkan_hpp; import vulkan;
#else #else
# include <vulkan/vulkan.hpp> # include <vulkan/vulkan.hpp>
#endif #endif

View File

@ -29,7 +29,7 @@
#endif #endif
#ifdef VULKAN_HPP_USE_CXX_MODULE #ifdef VULKAN_HPP_USE_CXX_MODULE
import vulkan_hpp; import vulkan;
#else #else
# include <vulkan/vulkan.hpp> # include <vulkan/vulkan.hpp>
#endif #endif

View File

@ -29,7 +29,7 @@
#endif #endif
#ifdef VULKAN_HPP_USE_CXX_MODULE #ifdef VULKAN_HPP_USE_CXX_MODULE
import vulkan_hpp; import vulkan;
#else #else
# include <vulkan/vulkan_extension_inspection.hpp> # include <vulkan/vulkan_extension_inspection.hpp>
#endif #endif

View File

@ -35,7 +35,7 @@
#ifdef VULKAN_HPP_USE_CXX_MODULE #ifdef VULKAN_HPP_USE_CXX_MODULE
# include <compare> // necessary due to MSVC "design": https://developercommunity.visualstudio.com/t/Template-exports-requiring-importing-of-/1425979#T-N1435887 # include <compare> // necessary due to MSVC "design": https://developercommunity.visualstudio.com/t/Template-exports-requiring-importing-of-/1425979#T-N1435887
# include <vulkan/vulkan_core.h> # include <vulkan/vulkan_core.h>
import vulkan_hpp; import vulkan;
#else #else
# include <vulkan/vulkan.hpp> # include <vulkan/vulkan.hpp>
#endif #endif

View File

@ -21,7 +21,7 @@
#include <map> #include <map>
#include <set> #include <set>
#ifdef VULKAN_HPP_USE_CXX_MODULE #ifdef VULKAN_HPP_USE_CXX_MODULE
import vulkan_hpp; import vulkan;
#else #else
# include <vulkan/vulkan_format_traits.hpp> # include <vulkan/vulkan_format_traits.hpp>
#endif #endif

View File

@ -19,7 +19,7 @@
#include <iostream> #include <iostream>
#ifdef VULKAN_HPP_USE_CXX_MODULE #ifdef VULKAN_HPP_USE_CXX_MODULE
#include <vulkan/vulkan.h> #include <vulkan/vulkan.h>
import vulkan_hpp; import vulkan;
#else #else
# include <vulkan/vulkan_raii.hpp> # include <vulkan/vulkan_raii.hpp>
#endif #endif

View File

@ -15,7 +15,7 @@
#include <cassert> #include <cassert>
#include <iostream> #include <iostream>
#ifdef VULKAN_HPP_USE_CXX_MODULE #ifdef VULKAN_HPP_USE_CXX_MODULE
import vulkan_hpp; import vulkan;
#else #else
# include <vulkan/vulkan.hpp> # include <vulkan/vulkan.hpp>
#endif #endif

View File

@ -32,7 +32,7 @@
#include <unordered_set> #include <unordered_set>
#ifdef VULKAN_HPP_USE_CXX_MODULE #ifdef VULKAN_HPP_USE_CXX_MODULE
#include <vulkan/vulkan_hpp_macros.hpp> #include <vulkan/vulkan_hpp_macros.hpp>
import vulkan_hpp; import vulkan;
#else #else
# include "vulkan/vulkan_hash.hpp" # include "vulkan/vulkan_hash.hpp"
#endif #endif

View File

@ -18,7 +18,7 @@
#define VULKAN_HPP_NO_DEFAULT_DISPATCHER #define VULKAN_HPP_NO_DEFAULT_DISPATCHER
#ifdef VULKAN_HPP_USE_CXX_MODULE #ifdef VULKAN_HPP_USE_CXX_MODULE
import vulkan_hpp; import vulkan;
#else #else
# include <vulkan/vulkan.hpp> # include <vulkan/vulkan.hpp>
# include <vulkan/vulkan_raii.hpp> # include <vulkan/vulkan_raii.hpp>

View File

@ -22,7 +22,7 @@
#include <iostream> #include <iostream>
#include <algorithm> #include <algorithm>
#ifdef VULKAN_HPP_USE_CXX_MODULE #ifdef VULKAN_HPP_USE_CXX_MODULE
import vulkan_hpp; import vulkan;
#else #else
# include "vulkan/vulkan.hpp" # include "vulkan/vulkan.hpp"
#endif #endif

View File

@ -21,7 +21,7 @@
#include <cstdint> #include <cstdint>
#include <algorithm> #include <algorithm>
#ifdef VULKAN_HPP_USE_CXX_MODULE #ifdef VULKAN_HPP_USE_CXX_MODULE
import vulkan_hpp; import vulkan;
#else #else
# include "vulkan/vulkan_raii.hpp" # include "vulkan/vulkan_raii.hpp"
#endif #endif

View File

@ -30,7 +30,7 @@
#include <iostream> #include <iostream>
#ifdef VULKAN_HPP_USE_CXX_MODULE #ifdef VULKAN_HPP_USE_CXX_MODULE
# include <vulkan/vulkan_hpp_macros.hpp> # include <vulkan/vulkan_hpp_macros.hpp>
import vulkan_hpp; import vulkan;
#else #else
# include "vulkan/vulkan.hpp" # include "vulkan/vulkan.hpp"
#endif #endif

View File

@ -30,7 +30,7 @@
#include <cassert> #include <cassert>
#include <iostream> #include <iostream>
#ifdef VULKAN_HPP_USE_CXX_MODULE #ifdef VULKAN_HPP_USE_CXX_MODULE
import vulkan_hpp; import vulkan;
#else #else
# include "vulkan/vulkan.hpp" # include "vulkan/vulkan.hpp"
#endif #endif

View File

@ -18,7 +18,7 @@
#ifdef VULKAN_HPP_USE_CXX_MODULE #ifdef VULKAN_HPP_USE_CXX_MODULE
#include <vulkan/vulkan.h> #include <vulkan/vulkan.h>
import vulkan_hpp; import vulkan;
#else #else
# include "vulkan/vulkan.hpp" # include "vulkan/vulkan.hpp"
#endif #endif

View File

@ -13,10 +13,9 @@ module;
#if !defined( VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING ) #if !defined( VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING )
# define VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING \ # define VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING \
"The Vulkan-Hpp C++ named module is experimental. " \ "\n\tThe Vulkan-Hpp C++ named module is experimental. It is subject to change without prior notice.\n" \
"It is subject to change without prior notice.\n" \ "\tTo silence this warning, define the VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING macro.\n" \
"To silence this warning, define the VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING macro.\n\n" \ "\tFor feedback, go to: https://github.com/KhronosGroup/Vulkan-Hpp/issues"
"For feedback, go to: https://github.com/KhronosGroup/Vulkan-Hpp/issues"
VULKAN_HPP_COMPILE_WARNING( VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING ) VULKAN_HPP_COMPILE_WARNING( VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING )
#endif #endif
@ -28,7 +27,8 @@ VULKAN_HPP_COMPILE_WARNING( VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING )
#include <vulkan/vulkan_raii.hpp> #include <vulkan/vulkan_raii.hpp>
#include <vulkan/vulkan_shared.hpp> #include <vulkan/vulkan_shared.hpp>
export module vulkan_hpp; export module vulkan;
export import :video;
export import std; export import std;
export namespace VULKAN_HPP_NAMESPACE export namespace VULKAN_HPP_NAMESPACE
@ -9388,8 +9388,7 @@ export namespace std
#endif #endif
} // namespace std } // namespace std
export export {
{
// This VkFlags type is used as part of a bitfield in some structures. // This VkFlags type is used as part of a bitfield in some structures.
// As it can't be mimicked by vk-data types, we need to export just that. // As it can't be mimicked by vk-data types, we need to export just that.
using ::VkGeometryInstanceFlagsKHR; using ::VkGeometryInstanceFlagsKHR;

View File

@ -4,19 +4,26 @@
// This header is generated from the Khronos Vulkan XML API Registry. // This header is generated from the Khronos Vulkan XML API Registry.
// Note: This module is still in an experimental state.
// Any feedback is welcome on https://github.com/KhronosGroup/Vulkan-Hpp/issues.
module; module;
#define VULKAN_HPP_CXX_MODULE 1
#include <vulkan/vulkan_hpp_macros.hpp> #include <vulkan/vulkan_hpp_macros.hpp>
#if !defined( VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING )
# define VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING \
"\n\tThe Vulkan-Hpp C++ named module is experimental. It is subject to change without prior notice.\n" \
"\tTo silence this warning, define the VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING macro.\n" \
"\tFor feedback, go to: https://github.com/KhronosGroup/Vulkan-Hpp/issues"
VULKAN_HPP_COMPILE_WARNING( VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING )
#endif
#include <vulkan/vulkan_video.hpp> #include <vulkan/vulkan_video.hpp>
export module vulkan_video_hpp; export module vulkan:video;
export namespace VULKAN_HPP_NAMESPACE export namespace VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE
{
namespace VULKAN_HPP_VIDEO_NAMESPACE
{ {
//================= //=================
@ -314,5 +321,4 @@ export namespace VULKAN_HPP_NAMESPACE
using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeAV1ReferenceInfoFlags; using VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeAV1ReferenceInfoFlags;
#endif #endif
} // namespace VULKAN_HPP_VIDEO_NAMESPACE } // namespace VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE
} // namespace VULKAN_HPP_NAMESPACE