Renamed from VkCpp to VulkanHpp

This commit is contained in:
Andreas Süßenbach 2016-06-21 10:35:47 +02:00
parent 3b96c38a41
commit d2aea04b6c
4 changed files with 17105 additions and 17105 deletions

View File

@ -26,21 +26,21 @@
cmake_minimum_required(VERSION 3.2)
project(VkCppGenerator)
project(VulkanHppGenerator)
file(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Vulkan-Docs/src/spec/vk.xml vk_spec)
string(REPLACE "\\" "\\\\" vk_spec ${vk_spec})
add_definitions(-DVK_SPEC="${vk_spec}")
file(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/vulkan/vk_cpp.hpp vk_cpp)
string(REPLACE "\\" "\\\\" vk_cpp ${vk_cpp})
add_definitions(-DVK_CPP="${vk_cpp}")
file(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/vulkan/vulkan.hpp vulkan_hpp)
string(REPLACE "\\" "\\\\" vulkan_hpp ${vulkan_hpp})
add_definitions(-DVULKAN_HPP="${vulkan_hpp}")
set(HEADERS
)
set(SOURCES
VkCppGenerator.cpp
VulkanHppGenerator.cpp
)
set(TINYXML2_SOURCES
@ -57,13 +57,13 @@ source_group(sources FILES ${SOURCES})
source_group(TinyXML2\\headers FILES ${TINYXML2_HEADERS})
source_group(TinyXML2\\sources FILES ${TINYXML2_SOURCES})
add_executable(VkCppGenerator
add_executable(VulkanHppGenerator
${HEADERS}
${SOURCES}
${TINYXML2_SOURCES}
${TINYXML2_HEADERS}
)
set_property(TARGET VkCppGenerator PROPERTY CXX_STANDARD 11)
set_property(TARGET VulkanHppGenerator PROPERTY CXX_STANDARD 11)
target_include_directories(VkCppGenerator PRIVATE "${CMAKE_SOURCE_DIR}/tinyxml2")
target_include_directories(VulkanHppGenerator PRIVATE "${CMAKE_SOURCE_DIR}/tinyxml2")

View File

@ -135,7 +135,7 @@ device.createImage(&ci, allocator, &image);
# Enhancements beyond native Vulkan
To provide a more object oriented feeling we're providing classes for each handle which include all Vulkan functions where the first
parameter matches the handle. In addition to this we made a few changes to the signatures of the member functions
* To disable the enhanced mode put ```#define VKCPP_DISABLE_ENHANCED_MODE``` before including ```vk_cpp.h```
* To disable the enhanced mode put ```#define VULKAN_HPP_DISABLE_ENHANCED_MODE``` before including ```vulkan.hpp```
* ```(count, T*)``` has been replaced by ```vk::ArrayProxy<T>```, which can be created out of a single T, a (count, T*) pair, a std::array<T,N>, a vector<T>, or an initializer_list<T>.
* ```const char *``` has been replaced by ```const std::string &```
* ```const T *``` has been replaced by ```const T &``` to allow temporary objects. This is useful to pass small structures like ```vk::ClearColorValue``` or ```vk::Extent*```
@ -147,7 +147,7 @@ Here are a few code examples:
try {
VkInstance nativeInstance = nullptr; // Fetch the instance from a favorite toolkit
// create a vkcpp handle from a native handle
// create a vk::Instance handle from a native handle
vk::Instance i(nativeInstance);
// operator=(VkInstance const &) is also supported
@ -177,7 +177,7 @@ Here are a few code examples:
```
# Exceptions and return types
The wrapper functions will throw a ```std::system_error``` if the result of the wrapped function is not a success code.
By defining ```VK_CPP_NO_EXCEPTIONS``` before include vk_cpp.hpp, this can be disabled.
By defining ```VULKAN_HPP_NO_EXCEPTIONS``` before include vulkan.hpp, this can be disabled.
Depending on exceptions being enabled or disabled, the return type of some functions change.
With exceptions enabled (the default) there are four different cases on the return types:
@ -196,27 +196,27 @@ Note: With exceptions disabled, it is the user's responsibility to check for err
# Usage
To start with the C++ version of the Vulkan API download header from GIT, put it in a vulkan subdirectory and add
```#include <vulkan/vk_cpp.h>``` to your source code.
```#include <vulkan/vulkan.hpp>``` to your source code.
To build the header for a given vk.xml specification continue with the following steps:
* Build VkCppGenerator
* Build VulkanHppGenerator
* Grab your favourite version vk.xml from Khronos
* Excute ```VkCppGenerator <vk.xml>``` to generate ```vk_cpp.h``` in the current working directory.
* Excute ```VulkanHppGenerator <vk.xml>``` to generate ```vulkan.hpp``` in the current working directory.
# Build instructions for VkCppGenerator
# Build instructions for VulkanHppGenerator
* Clone the repository: ```git clone https://github.com/nvpro-pipeline/vkcpp.git```
* Clone the repository: ```git clone https://github.com/KhronosGroup/vkcpp```
* Update submodules: ```git submodule update --init --recursive```
* Use CMake to generate a solution or makefile for your favourite build environment
* Launch the build
# Samples
Brad Davis started to port Sascha Willems Samples to vkcpp. You can find his work in his [repository](https://github.com/jherico/Vulkan).
Brad Davis started to port Sascha Willems Samples to vulkan.hpp. You can find his work in his [repository](https://github.com/jherico/Vulkan).
# Providing Pull Requests
NVIDIA is happy to review and consider pull requests for merging into the main tree of vkcpp for bug fixes and features. Before providing a pull request to NVIDIA, please note the following:
NVIDIA is happy to review and consider pull requests for merging into the main tree of vulkan.hpp for bug fixes and features. Before providing a pull request to NVIDIA, please note the following:
* A pull request provided to this repo by a developer constitutes permission from the developer for NVIDIA to merge the provided
changes or any NVIDIA modified version of these changes to the repo. NVIDIA may remove or change the code at any time and in any

View File

@ -300,19 +300,19 @@ std::string const arrayProxyHeader = (
);
std::string const versionCheckHeader = (
"#if !defined(VK_CPP_HAS_UNRESTRICTED_UNIONS)\n"
"#if !defined(VULKAN_HPP_HAS_UNRESTRICTED_UNIONS)\n"
"# if defined(__clang__)\n"
"# if __has_feature(cxx_unrestricted_unions)\n"
"# define VK_CPP_HAS_UNRESTRICTED_UNIONS\n"
"# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS\n"
"# endif\n"
"# elif defined(__GNUC__)\n"
"# define GCC_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)\n"
"# if 40600 <= GCC_VERSION\n"
"# define VK_CPP_HAS_UNRESTRICTED_UNIONS\n"
"# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS\n"
"# endif\n"
"# elif defined(_MSC_VER)\n"
"# if 1900 <= _MSC_VER\n"
"# define VK_CPP_HAS_UNRESTRICTED_UNIONS\n"
"# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS\n"
"# endif\n"
"# endif\n"
"#endif\n"
@ -335,7 +335,7 @@ std::string const resultValueHeader = (
" template <typename T>\n"
" struct ResultValueType\n"
" {\n"
"#ifdef VK_CPP_NO_EXCEPTIONS\n"
"#ifdef VULKAN_HPP_NO_EXCEPTIONS\n"
" typedef ResultValue<T> type;\n"
"#else\n"
" typedef T type;\n"
@ -345,7 +345,7 @@ std::string const resultValueHeader = (
" template <>"
" struct ResultValueType<void>\n"
" {\n"
"#ifdef VK_CPP_NO_EXCEPTIONS\n"
"#ifdef VULKAN_HPP_NO_EXCEPTIONS\n"
" typedef Result type;\n"
"#else\n"
" typedef void type;\n"
@ -357,7 +357,7 @@ std::string const resultValueHeader = (
std::string const createResultValueHeader = (
" inline ResultValueType<void>::type createResultValue( Result result, char const * message )\n"
" {\n"
"#ifdef VK_CPP_NO_EXCEPTIONS\n"
"#ifdef VULKAN_HPP_NO_EXCEPTIONS\n"
" assert( result == Result::eSuccess );\n"
" return result;\n"
"#else\n"
@ -371,7 +371,7 @@ std::string const createResultValueHeader = (
" template <typename T>\n"
" inline typename ResultValueType<T>::type createResultValue( Result result, T & data, char const * message )\n"
" {\n"
"#ifdef VK_CPP_NO_EXCEPTIONS\n"
"#ifdef VULKAN_HPP_NO_EXCEPTIONS\n"
" assert( result == Result::eSuccess );\n"
" return ResultValue<T>( result, data );\n"
"#else\n"
@ -385,7 +385,7 @@ std::string const createResultValueHeader = (
"\n"
" inline Result createResultValue( Result result, char const * message, std::initializer_list<Result> successCodes )\n"
" {\n"
"#ifdef VK_CPP_NO_EXCEPTIONS\n"
"#ifdef VULKAN_HPP_NO_EXCEPTIONS\n"
" assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );\n"
"#else\n"
" if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )\n"
@ -399,7 +399,7 @@ std::string const createResultValueHeader = (
" template <typename T>\n"
" inline ResultValue<T> createResultValue( Result result, T & data, char const * message, std::initializer_list<Result> successCodes )\n"
" {\n"
"#ifdef VK_CPP_NO_EXCEPTIONS\n"
"#ifdef VULKAN_HPP_NO_EXCEPTIONS\n"
" assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );\n"
"#else\n"
" if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )\n"
@ -795,7 +795,7 @@ size_t findTemplateIndex(CommandData const& commandData, std::map<size_t, size_t
return ~0;
}
std::string getEnumName(std::string const& name) // get vkcpp enum name from vk enum name
std::string getEnumName(std::string const& name) // get vulkan.hpp enum name from vk enum name
{
return strip(name, "Vk");
}
@ -1924,14 +1924,14 @@ void writeFunctionBody(std::ofstream & ofs, std::string const& indentation, std:
{
if ((it1->first != returnIndex) && (it0->second == it1->second))
{
ofs << "#ifdef VK_CPP_NO_EXCEPTIONS" << std::endl
ofs << "#ifdef VULKAN_HPP_NO_EXCEPTIONS" << std::endl
<< indentation << " assert( " << reduceName(commandData.arguments[it0->first].name) << ".size() == " << reduceName(commandData.arguments[it1->first].name) << ".size() );" << std::endl
<< "#else" << std::endl
<< indentation << " if ( " << reduceName(commandData.arguments[it0->first].name) << ".size() != " << reduceName(commandData.arguments[it1->first].name) << ".size() )" << std::endl
<< indentation << " {" << std::endl
<< indentation << " throw std::logic_error( \"vk::" << className << "::" << functionName << ": " << reduceName(commandData.arguments[it0->first].name) << ".size() != " << reduceName(commandData.arguments[it1->first].name) << ".size()\" );" << std::endl
<< indentation << " }" << std::endl
<< "#endif // VK_CPP_NO_EXCEPTIONS" << std::endl;
<< "#endif // VULKAN_HPP_NO_EXCEPTIONS" << std::endl;
}
}
}
@ -2397,9 +2397,9 @@ void writeTypeCommand(std::ofstream & ofs, VkData const& vkData, DependencyData
writeTypeCommandStandard(ofs, " ", dependencyData.name, dependencyData, commandData, vkData.vkTypes);
ofs << std::endl
<< "#ifndef VKCPP_DISABLE_ENHANCED_MODE" << std::endl;
<< "#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE" << std::endl;
writeTypeCommandEnhanced(ofs, vkData, " ", "", dependencyData.name, dependencyData, commandData);
ofs << "#endif /*VKCPP_DISABLE_ENHANCED_MODE*/" << std::endl
ofs << "#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/" << std::endl
<< std::endl;
}
}
@ -2602,7 +2602,7 @@ void writeTypeHandle(std::ofstream & ofs, VkData const& vkData, DependencyData c
<< " : m_" << memberName << "(VK_NULL_HANDLE)" << std::endl
<< " {}" << std::endl
<< std::endl
<< "#if defined(VK_CPP_TYPESAFE_CONVERSION)" << std::endl
<< "#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)" << std::endl
// construct from native handle
<< " " << dependencyData.name << "(Vk" << dependencyData.name << " " << memberName << ")" << std::endl
<< " : m_" << memberName << "(" << memberName << ")" << std::endl
@ -2632,18 +2632,18 @@ void writeTypeHandle(std::ofstream & ofs, VkData const& vkData, DependencyData c
bool hasPointers = hasPointerArguments(cit->second);
if (!hasPointers)
{
ofs << "#ifdef VKCPP_DISABLE_ENHANCED_MODE" << std::endl;
ofs << "#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE" << std::endl;
}
writeTypeCommandStandard(ofs, " ", functionName, *dep, cit->second, vkData.vkTypes);
if (!hasPointers)
{
ofs << "#endif /*!VKCPP_DISABLE_ENHANCED_MODE*/" << std::endl;
ofs << "#endif /*!VULKAN_HPP_DISABLE_ENHANCED_MODE*/" << std::endl;
}
ofs << std::endl
<< "#ifndef VKCPP_DISABLE_ENHANCED_MODE" << std::endl;
<< "#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE" << std::endl;
writeTypeCommandEnhanced(ofs, vkData, " ", className, functionName, *dep, cit->second);
ofs << "#endif /*VKCPP_DISABLE_ENHANCED_MODE*/" << std::endl;
ofs << "#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/" << std::endl;
if (i < handle.commands.size() - 1)
{
@ -2652,7 +2652,7 @@ void writeTypeHandle(std::ofstream & ofs, VkData const& vkData, DependencyData c
}
ofs << std::endl;
}
ofs << "#if !defined(VK_CPP_TYPESAFE_CONVERSION)" << std::endl
ofs << "#if !defined(VULKAN_HPP_TYPESAFE_CONVERSION)" << std::endl
<< " explicit" << std::endl
<< "#endif" << std::endl
<< " operator Vk" << dependencyData.name << "() const" << std::endl
@ -2819,7 +2819,7 @@ void writeTypeUnion( std::ofstream & ofs, VkData const& vkData, DependencyData c
}
if (needsUnrestrictedUnions)
{
ofs << "#ifdef VK_CPP_HAS_UNRESTRICTED_UNIONS" << std::endl;
ofs << "#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS" << std::endl;
for (size_t i = 0; i < unionData.members.size(); i++)
{
ofs << " " << unionData.members[i].type << " " << unionData.members[i].name;
@ -2847,7 +2847,7 @@ void writeTypeUnion( std::ofstream & ofs, VkData const& vkData, DependencyData c
}
if (needsUnrestrictedUnions)
{
ofs << "#endif // VK_CPP_HAS_UNRESTRICTED_UNIONS" << std::endl;
ofs << "#endif // VULKAN_HPP_HAS_UNRESTRICTED_UNIONS" << std::endl;
}
ofs << " };" << std::endl
<< std::endl;
@ -2904,9 +2904,9 @@ void writeVersionCheck(std::ofstream & ofs, std::string const& version)
void writeTypesafeCheck(std::ofstream & ofs, std::string const& typesafeCheck)
{
ofs << "// 32-bit vulkan is not typesafe for handles, so don't allow copy constructors on this platform by default." << std::endl
<< "// To enable this feature on 32-bit platforms please define VK_CPP_TYPESAFE_CONVERSION" << std::endl
<< "// To enable this feature on 32-bit platforms please define VULKAN_HPP_TYPESAFE_CONVERSION" << std::endl
<< typesafeCheck << std::endl
<< "#define VK_CPP_TYPESAFE_CONVERSION 1" << std::endl
<< "#define VULKAN_HPP_TYPESAFE_CONVERSION 1" << std::endl
<< "#endif" << std::endl
<< std::endl;
}
@ -2918,7 +2918,7 @@ int main( int argc, char **argv )
std::string filename = (argc == 1) ? VK_SPEC : argv[1];
std::cout << "Loading vk.xml from " << filename << std::endl;
std::cout << "Writing vk_cpp.hpp to " << VK_CPP << std::endl;
std::cout << "Writing vulkan.hpp to " << VULKAN_HPP << std::endl;
tinyxml2::XMLError error = doc.LoadFile(filename.c_str());
if (error != tinyxml2::XML_SUCCESS)
@ -2973,13 +2973,13 @@ int main( int argc, char **argv )
std::map<std::string, std::string> defaultValues;
createDefaults(vkData, defaultValues);
std::ofstream ofs(VK_CPP);
std::ofstream ofs(VULKAN_HPP);
ofs << nvidiaLicenseHeader << std::endl
<< vkData.vulkanLicenseHeader << std::endl
<< std::endl
<< std::endl
<< "#ifndef VK_CPP_H_" << std::endl
<< "#define VK_CPP_H_" << std::endl
<< "#ifndef VULKAN_HPP" << std::endl
<< "#define VULKAN_HPP" << std::endl
<< std::endl
<< "#include <array>" << std::endl
<< "#include <cassert>" << std::endl
@ -2988,9 +2988,9 @@ int main( int argc, char **argv )
<< "#include <string>" << std::endl
<< "#include <system_error>" << std::endl
<< "#include <vulkan/vulkan.h>" << std::endl
<< "#ifndef VKCPP_DISABLE_ENHANCED_MODE" << std::endl
<< "#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE" << std::endl
<< "# include <vector>" << std::endl
<< "#endif /*VKCPP_DISABLE_ENHANCED_MODE*/" << std::endl
<< "#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/" << std::endl
<< std::endl;
writeVersionCheck(ofs, vkData.version);

File diff suppressed because it is too large Load Diff