Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions appendices/boilerplate.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,28 @@ current Vulkan headers with their project in this case.
endif::VKSC_VERSION_1_0[]
--

==== Vulkan Helper Macros

[open,refpage='VK_CPP11_DEFAULT',desc='Function macro to allow optional C++11 default member initializers',type='defines']
--
dname:VK_CPP11_DEFAULT defines a function macro to allow optional structure default
member initializers when compiling the Vulkan headers with a C++11 capable compiler.

include::{generated}/api/defines/VK_CPP11_DEFAULT.adoc[]

* pname:value is the literal default value for the struct member.

By default the dname:VK_CPP11_DEFAULT will define the default member initializers
when compiling the header with a C++ version of C++11 and above.
The Vulkan headers allow the application to override the default definition of
this macro to either disable the functionality, or modify how it
behaves.

With default member initializers active applications can avoid assigning the
pname:sType, pname:pNext and some other member values when initializing new
objects of the Vulkan structures.
--


[[boilerplate-wsi-header]]
== Window System-Specific Header Control (Informative)
Expand Down
8 changes: 4 additions & 4 deletions build_tests/expectations/all-1.0.html
Original file line number Diff line number Diff line change
Expand Up @@ -326,8 +326,8 @@ <h3 id="lorem-subchapter"><a class="anchor" href="#lorem-subchapter"></a>2.1. Lo
<div id="VkCopyBufferToImageInfo2" class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="c++"><span class="k">typedef</span> <span class="k">struct</span> <span class="nc">VkCopyBufferToImageInfo2</span> <span class="p">{</span>
<span class="n">VkStructureType</span> <span class="n">sType</span><span class="p">;</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span><span class="p">;</span>
<span class="n">VkStructureType</span> <span class="n">sType</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="n">VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2</span><span class="p">);</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="nb">nullptr</span><span class="p">);</span>
<span class="n">VkBuffer</span> <span class="n">srcBuffer</span><span class="p">;</span>
<span class="n">VkImage</span> <span class="n">dstImage</span><span class="p">;</span>
<span class="n">VkImageLayout</span> <span class="n">dstImageLayout</span><span class="p">;</span>
Expand Down Expand Up @@ -524,8 +524,8 @@ <h3 id="lorem-subchapter"><a class="anchor" href="#lorem-subchapter"></a>2.1. Lo
<div id="VkBufferImageCopy2" class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="c++"><span class="k">typedef</span> <span class="k">struct</span> <span class="nc">VkBufferImageCopy2</span> <span class="p">{</span>
<span class="n">VkStructureType</span> <span class="n">sType</span><span class="p">;</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span><span class="p">;</span>
<span class="n">VkStructureType</span> <span class="n">sType</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="n">VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2</span><span class="p">);</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="nb">nullptr</span><span class="p">);</span>
<span class="n">VkDeviceSize</span> <span class="n">bufferOffset</span><span class="p">;</span>
<span class="kt">uint32_t</span> <span class="n">bufferRowLength</span><span class="p">;</span>
<span class="kt">uint32_t</span> <span class="n">bufferImageHeight</span><span class="p">;</span>
Expand Down
8 changes: 4 additions & 4 deletions build_tests/expectations/all.html
Original file line number Diff line number Diff line change
Expand Up @@ -357,8 +357,8 @@ <h3 id="lorem-subchapter"><a class="anchor" href="#lorem-subchapter"></a>2.1. Lo
<div class="content">
<pre class="rouge highlight"><code data-lang="c++"><span class="c1">// Provided by VK_VERSION_1_3</span>
<span class="k">typedef</span> <span class="k">struct</span> <span class="nc">VkCopyBufferToImageInfo2</span> <span class="p">{</span>
<span class="n">VkStructureType</span> <span class="n">sType</span><span class="p">;</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span><span class="p">;</span>
<span class="n">VkStructureType</span> <span class="n">sType</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="n">VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2</span><span class="p">);</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="nb">nullptr</span><span class="p">);</span>
<span class="n">VkBuffer</span> <span class="n">srcBuffer</span><span class="p">;</span>
<span class="n">VkImage</span> <span class="n">dstImage</span><span class="p">;</span>
<span class="n">VkImageLayout</span> <span class="n">dstImageLayout</span><span class="p">;</span>
Expand Down Expand Up @@ -556,8 +556,8 @@ <h3 id="lorem-subchapter"><a class="anchor" href="#lorem-subchapter"></a>2.1. Lo
<div class="content">
<pre class="rouge highlight"><code data-lang="c++"><span class="c1">// Provided by VK_VERSION_1_3</span>
<span class="k">typedef</span> <span class="k">struct</span> <span class="nc">VkBufferImageCopy2</span> <span class="p">{</span>
<span class="n">VkStructureType</span> <span class="n">sType</span><span class="p">;</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span><span class="p">;</span>
<span class="n">VkStructureType</span> <span class="n">sType</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="n">VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2</span><span class="p">);</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="nb">nullptr</span><span class="p">);</span>
<span class="n">VkDeviceSize</span> <span class="n">bufferOffset</span><span class="p">;</span>
<span class="kt">uint32_t</span> <span class="n">bufferRowLength</span><span class="p">;</span>
<span class="kt">uint32_t</span> <span class="n">bufferImageHeight</span><span class="p">;</span>
Expand Down
8 changes: 4 additions & 4 deletions build_tests/expectations/copy2-1.0.html
Original file line number Diff line number Diff line change
Expand Up @@ -305,8 +305,8 @@ <h3 id="lorem-subchapter"><a class="anchor" href="#lorem-subchapter"></a>2.1. Lo
<div id="VkCopyBufferToImageInfo2" class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="c++"><span class="k">typedef</span> <span class="k">struct</span> <span class="nc">VkCopyBufferToImageInfo2</span> <span class="p">{</span>
<span class="n">VkStructureType</span> <span class="n">sType</span><span class="p">;</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span><span class="p">;</span>
<span class="n">VkStructureType</span> <span class="n">sType</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="n">VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2</span><span class="p">);</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="nb">nullptr</span><span class="p">);</span>
<span class="n">VkBuffer</span> <span class="n">srcBuffer</span><span class="p">;</span>
<span class="n">VkImage</span> <span class="n">dstImage</span><span class="p">;</span>
<span class="n">VkImageLayout</span> <span class="n">dstImageLayout</span><span class="p">;</span>
Expand Down Expand Up @@ -484,8 +484,8 @@ <h3 id="lorem-subchapter"><a class="anchor" href="#lorem-subchapter"></a>2.1. Lo
<div id="VkBufferImageCopy2" class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="c++"><span class="k">typedef</span> <span class="k">struct</span> <span class="nc">VkBufferImageCopy2</span> <span class="p">{</span>
<span class="n">VkStructureType</span> <span class="n">sType</span><span class="p">;</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span><span class="p">;</span>
<span class="n">VkStructureType</span> <span class="n">sType</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="n">VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2</span><span class="p">);</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="nb">nullptr</span><span class="p">);</span>
<span class="n">VkDeviceSize</span> <span class="n">bufferOffset</span><span class="p">;</span>
<span class="kt">uint32_t</span> <span class="n">bufferRowLength</span><span class="p">;</span>
<span class="kt">uint32_t</span> <span class="n">bufferImageHeight</span><span class="p">;</span>
Expand Down
8 changes: 4 additions & 4 deletions build_tests/expectations/core.html
Original file line number Diff line number Diff line change
Expand Up @@ -331,8 +331,8 @@ <h3 id="lorem-subchapter"><a class="anchor" href="#lorem-subchapter"></a>2.1. Lo
<div class="content">
<pre class="rouge highlight"><code data-lang="c++"><span class="c1">// Provided by VK_VERSION_1_3</span>
<span class="k">typedef</span> <span class="k">struct</span> <span class="nc">VkCopyBufferToImageInfo2</span> <span class="p">{</span>
<span class="n">VkStructureType</span> <span class="n">sType</span><span class="p">;</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span><span class="p">;</span>
<span class="n">VkStructureType</span> <span class="n">sType</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="n">VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2</span><span class="p">);</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="nb">nullptr</span><span class="p">);</span>
<span class="n">VkBuffer</span> <span class="n">srcBuffer</span><span class="p">;</span>
<span class="n">VkImage</span> <span class="n">dstImage</span><span class="p">;</span>
<span class="n">VkImageLayout</span> <span class="n">dstImageLayout</span><span class="p">;</span>
Expand Down Expand Up @@ -505,8 +505,8 @@ <h3 id="lorem-subchapter"><a class="anchor" href="#lorem-subchapter"></a>2.1. Lo
<div class="content">
<pre class="rouge highlight"><code data-lang="c++"><span class="c1">// Provided by VK_VERSION_1_3</span>
<span class="k">typedef</span> <span class="k">struct</span> <span class="nc">VkBufferImageCopy2</span> <span class="p">{</span>
<span class="n">VkStructureType</span> <span class="n">sType</span><span class="p">;</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span><span class="p">;</span>
<span class="n">VkStructureType</span> <span class="n">sType</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="n">VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2</span><span class="p">);</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="nb">nullptr</span><span class="p">);</span>
<span class="n">VkDeviceSize</span> <span class="n">bufferOffset</span><span class="p">;</span>
<span class="kt">uint32_t</span> <span class="n">bufferRowLength</span><span class="p">;</span>
<span class="kt">uint32_t</span> <span class="n">bufferImageHeight</span><span class="p">;</span>
Expand Down
8 changes: 4 additions & 4 deletions build_tests/expectations/hic-1.0.html
Original file line number Diff line number Diff line change
Expand Up @@ -307,8 +307,8 @@ <h3 id="lorem-subchapter"><a class="anchor" href="#lorem-subchapter"></a>2.1. Lo
<div id="VkCopyBufferToImageInfo2" class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="c++"><span class="k">typedef</span> <span class="k">struct</span> <span class="nc">VkCopyBufferToImageInfo2</span> <span class="p">{</span>
<span class="n">VkStructureType</span> <span class="n">sType</span><span class="p">;</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span><span class="p">;</span>
<span class="n">VkStructureType</span> <span class="n">sType</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="n">VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2</span><span class="p">);</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="nb">nullptr</span><span class="p">);</span>
<span class="n">VkBuffer</span> <span class="n">srcBuffer</span><span class="p">;</span>
<span class="n">VkImage</span> <span class="n">dstImage</span><span class="p">;</span>
<span class="n">VkImageLayout</span> <span class="n">dstImageLayout</span><span class="p">;</span>
Expand Down Expand Up @@ -486,8 +486,8 @@ <h3 id="lorem-subchapter"><a class="anchor" href="#lorem-subchapter"></a>2.1. Lo
<div id="VkBufferImageCopy2" class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="c++"><span class="k">typedef</span> <span class="k">struct</span> <span class="nc">VkBufferImageCopy2</span> <span class="p">{</span>
<span class="n">VkStructureType</span> <span class="n">sType</span><span class="p">;</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span><span class="p">;</span>
<span class="n">VkStructureType</span> <span class="n">sType</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="n">VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2</span><span class="p">);</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="nb">nullptr</span><span class="p">);</span>
<span class="n">VkDeviceSize</span> <span class="n">bufferOffset</span><span class="p">;</span>
<span class="kt">uint32_t</span> <span class="n">bufferRowLength</span><span class="p">;</span>
<span class="kt">uint32_t</span> <span class="n">bufferImageHeight</span><span class="p">;</span>
Expand Down
8 changes: 4 additions & 4 deletions build_tests/expectations/hic.html
Original file line number Diff line number Diff line change
Expand Up @@ -342,8 +342,8 @@ <h3 id="lorem-subchapter"><a class="anchor" href="#lorem-subchapter"></a>2.1. Lo
<div class="content">
<pre class="rouge highlight"><code data-lang="c++"><span class="c1">// Provided by VK_VERSION_1_3</span>
<span class="k">typedef</span> <span class="k">struct</span> <span class="nc">VkCopyBufferToImageInfo2</span> <span class="p">{</span>
<span class="n">VkStructureType</span> <span class="n">sType</span><span class="p">;</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span><span class="p">;</span>
<span class="n">VkStructureType</span> <span class="n">sType</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="n">VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2</span><span class="p">);</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="nb">nullptr</span><span class="p">);</span>
<span class="n">VkBuffer</span> <span class="n">srcBuffer</span><span class="p">;</span>
<span class="n">VkImage</span> <span class="n">dstImage</span><span class="p">;</span>
<span class="n">VkImageLayout</span> <span class="n">dstImageLayout</span><span class="p">;</span>
Expand Down Expand Up @@ -523,8 +523,8 @@ <h3 id="lorem-subchapter"><a class="anchor" href="#lorem-subchapter"></a>2.1. Lo
<div class="content">
<pre class="rouge highlight"><code data-lang="c++"><span class="c1">// Provided by VK_VERSION_1_3</span>
<span class="k">typedef</span> <span class="k">struct</span> <span class="nc">VkBufferImageCopy2</span> <span class="p">{</span>
<span class="n">VkStructureType</span> <span class="n">sType</span><span class="p">;</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span><span class="p">;</span>
<span class="n">VkStructureType</span> <span class="n">sType</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="n">VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2</span><span class="p">);</span>
<span class="k">const</span> <span class="kt">void</span><span class="o">*</span> <span class="n">pNext</span> <span class="n">VK_CPP11_DEFAULT</span><span class="p">(</span><span class="nb">nullptr</span><span class="p">);</span>
<span class="n">VkDeviceSize</span> <span class="n">bufferOffset</span><span class="p">;</span>
<span class="kt">uint32_t</span> <span class="n">bufferRowLength</span><span class="p">;</span>
<span class="kt">uint32_t</span> <span class="n">bufferImageHeight</span><span class="p">;</span>
Expand Down
8 changes: 8 additions & 0 deletions scripts/generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -1143,6 +1143,14 @@ def makeCParamDecl(self, param, aligncol):
paramdecl += f"{prefix.replace('const ', '') + text} const{tail}"
else:
paramdecl += prefix + text + tail

if elem.tag == 'name':
if elem.text == 'sType' and param.attrib.get('values') != None:
paramdecl += ' VK_CPP11_DEFAULT(' + param.attrib['values'] + ')'
elif elem.text == 'pNext':
paramdecl += ' VK_CPP11_DEFAULT(nullptr)'
elif param.attrib.get('default') != None:
paramdecl += ' VK_CPP11_DEFAULT(' + param.attrib['default'] + ')'

# Clear prefix for subsequent iterations
prefix = ''
Expand Down
1 change: 1 addition & 0 deletions scripts/genvk.py
Original file line number Diff line number Diff line change
Expand Up @@ -449,6 +449,7 @@ def makeGenOpts(args):
'VK_AMDX_dense_geometry_format',
'VK_AMDX_shader_enqueue',
'VK_NV_cuda_kernel_launch',
'VK_NV_present_metering',
]

betaSuppressExtensions = [
Expand Down
2 changes: 1 addition & 1 deletion xml/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ $(VULKAN)/vk_platform.h: $(STATIC)/vk_platform.h
# Python and XML files on which vulkan_core.h depends
GENSCRIPT = $(SCRIPTS)/genvk.py
VKXML = vk.xml
VKH_DEPENDS = $(VKXML) $(GENSCRIPT) $(SCRIPTS)/reg.py $(SCRIPTS)/generator.py
VKH_DEPENDS = $(VKXML) $(GENSCRIPT) $(SCRIPTS)/reg.py $(SCRIPTS)/generator.py $(SCRIPTS)/cgenerator.py

$(HEADERS_H): $(VKH_DEPENDS)
$(MKDIR) $(VULKAN)
Expand Down
Loading