Move the vk_typemap_helper.h file in Vulkan-ValidationLayers over to this
repo with a different name to reflect the use of it
Changes from that include:
* Rename the functions to be more obvious as to what they do
* Placing them in the `vku` namespace
* Adding the `InitStructHelper` class which deduces the type based on the
variable that is being initialized
* Compiler error if there is no corresponding sType
The library originates from Vulkan-ValidationLayers, but is being moved
into this repo to make it easier for others to use it.
The library has also been modified to be header only and C compatible,
which allows more developers to be able to use it. This does require some
changes, but only affects the vkuFormatElementSize and vkuFormatTexelSize
functions which used default parameters. Two new functions,
vkuFormatElementSizeWithAspect and vkuFormatTexelSizeWithAspect have been
added to handle the non-default image aspect case (the default was COLOR_BIT).
Renaming was done using the following convention:
* public header files begin with `vk_`
* enums begin with VKU_FORMAT_
* functions begin with vku
CI will fail now if we ship a .h / .hpp file that doesn't use
the correct prefix.
I also documented the precedent for this prefix and the existing
integration testing.
Use TCHAR/TEXT macros for strings when interfacing with the Win32 API.
Use native Win32 GetFileAttributes call to check if a file exists. Pass
the layer settings file path around as a std::filesystem::path to avoid
the need for an encoding conversion on Windows.
After VK_EXT_layer_settings spec review, this new type
was judge unnecessary because it could be express by
three uint32. However, it still remains useful for the
layer settings library to correctly interpret formated
strings that represent "framesets".
The code did not follow the provided clang-format file, which causes
conflict when a developer runs clang-format on the repo. This commit fixes
the generator so that the output is what clang-format would generate.
One issue is that clang-format's ColumnLimit will wrap long lines, and is
very difficult to replicate in python code without excessive changes. The
chosen solution is to use a custom clang-format file for the Utilities
folder which ignores the ColumnLimit.
Fixes the vk_layer_dispatch_table.h header file so that they can be used
in other projects. The contents of this header and
vk_dispatch_table_helper.h have been moved into a new header
vul_dispatch_table.h.
The structs VulDeviceDispatchTable and VulInstanceDispatchTable
struct contain function pointers for the device and instance, respectively.
The functions vul_init_device_dispatch_table and
vul_init_instance_dispatch_table fill out the aforementioned structs,
making the task of setting up the disptach table in a layer much simpler.
- Static library
- Add overrides, not necessary yet but it will be when other parts of
this repo wants to find Vulkan-Headers
- Remove unused dependency on Vulkan-Headers from the settings library
- Remove unreachable return flagged by clang