Update for Vulkan-Docs 1.4.

This commit is contained in:
Jon Leech 2025-07-12 01:10:36 +01:00 committed by Jon Leech
parent 4fcc684c7e
commit 7cff847503
9 changed files with 18687 additions and 21831 deletions

View file

@ -19,6 +19,9 @@ HPP = $(SPEC)/Vulkan-Hpp
REGISTRY = $(GIT)/registry/vulkan REGISTRY = $(GIT)/registry/vulkan
update: revision-check create-branch update-files push-branch update: revision-check create-branch update-files push-branch
echo "Verify that Vulkan-Headers is on a branch with the new header updates."
echo "Then push them to github and create an MR there with:"
echo " make -f Makefile.release REVISION=$REVISION push-branch"
# Working branch for the update, and a test if it exists # Working branch for the update, and a test if it exists
BRANCH = update-$(REVISION) BRANCH = update-$(REVISION)
@ -39,6 +42,19 @@ create-branch: revision-check
# Update headers and scripts in the new branch # Update headers and scripts in the new branch
update-files: remove-files update-headers update-scripts update-files: remove-files update-headers update-scripts
# To ensure updates are caught, old versions of installed files are
# removed.
# Files in include/ to keep
HEADERS_KEEP = \
include/vulkan/vk_icd.h \
include/vulkan/vk_layer.h
remove-files:
rm -rf $(filter-out $(HEADERS_KEEP), $(wildcard include/vulkan/*))
rm -rf include/vk_video
rm -rf registry
mkdir include/vk_video registry registry/profiles registry/spec_tools
# Vulkan SC Vulkan-Hpp headers not published in the Vulkan-Headers repository # Vulkan SC Vulkan-Hpp headers not published in the Vulkan-Headers repository
SCHPPFILES = \ SCHPPFILES = \
include/vulkan/vulkansc.hpp \ include/vulkan/vulkansc.hpp \
@ -87,28 +103,22 @@ update-scripts:
cp $(PROFILES) registry/profiles/ cp $(PROFILES) registry/profiles/
cp $(SCRIPT_TOOLS) registry/spec_tools/ cp $(SCRIPT_TOOLS) registry/spec_tools/
# To ensure updates are caught, old versions of installed files are # Once the branch is updated, push it to upstream and create an MR
# removed. # This should be used cautiously after verifying the branch contents are
# indeed correct and updates.
# Files in include/ to keep
HEADERS_KEEP = \
include/vulkan/vk_icd.h \
include/vulkan/vk_layer.h
remove-files:
rm -rf $(filter-out $(HEADERS_KEEP), $(wildcard include/vulkan/*))
rm -rf include/vk_video
rm -rf registry
mkdir include/vk_video registry registry/profiles registry/spec_tools
# Once the branch is updated, push it to upstream
# This does not actually push it for safety reasons
push-branch: revision-check push-branch: revision-check
@echo Verify that all new files are 'git add'ed and obsolete files removed, then: git switch $(BRANCH)
@echo " " git commit -m \"Update for Vulkan-Docs 1.4.$(REVISION)\" git add -u
@echo " " git push --set-upstream origin $(BRANCH) echo "Detect new files and add them. This may not always succeed."
@echo " " git switch main echo "Adding new files:" `git diff --name-only main`
@echo " " git branch -d $(BRANCH) git add `git diff --name-only main`
git commit -m "Update for Vulkan-Docs 1.4.$(REVISION)"
git push --force --set-upstream origin $(BRANCH) \
-o merge_request.create -o merge_request.target=main -o merge_request.remove_source_branch \
-o merge_request.title="Update for Vulkan-Docs 1.4.$(REVISION)" \
-o merge_request.assign=oddhack
git switch main
git branch -d $(BRANCH)
revision-check: revision-check:
@if test $(REVISION) = 999 ; then echo "Must specify explicit REVISION= in make invocation" ; exit 1 ; fi @if test $(REVISION) = 999 ; then echo "Must specify explicit REVISION= in make invocation" ; exit 1 ; fi

View file

@ -42,10 +42,8 @@ export namespace VULKAN_HPP_NAMESPACE
{ {
using VULKAN_HPP_NAMESPACE::detail::DispatchLoaderBase; using VULKAN_HPP_NAMESPACE::detail::DispatchLoaderBase;
using VULKAN_HPP_NAMESPACE::detail::DispatchLoaderDynamic; using VULKAN_HPP_NAMESPACE::detail::DispatchLoaderDynamic;
#if !defined( VULKAN_HPP_DEFAULT_DISPATCHER ) #if VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1
# if VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1
using VULKAN_HPP_NAMESPACE::detail::defaultDispatchLoaderDynamic; using VULKAN_HPP_NAMESPACE::detail::defaultDispatchLoaderDynamic;
# endif
#endif #endif
#if !defined( VK_NO_PROTOTYPES ) #if !defined( VK_NO_PROTOTYPES )
using VULKAN_HPP_NAMESPACE::detail::DispatchLoaderStatic; using VULKAN_HPP_NAMESPACE::detail::DispatchLoaderStatic;

View file

@ -56,7 +56,7 @@ extern "C" __declspec( dllimport ) FARPROC __stdcall GetProcAddress( HINSTANCE h
# endif # endif
#endif #endif
static_assert( VK_HEADER_VERSION == 321, "Wrong VK_HEADER_VERSION!" ); static_assert( VK_HEADER_VERSION == 322, "Wrong VK_HEADER_VERSION!" );
// <tuple> includes <sys/sysmacros.h> through some other header // <tuple> includes <sys/sysmacros.h> through some other header
// this results in major(x) being resolved to gnu_dev_major(x) // this results in major(x) being resolved to gnu_dev_major(x)

View file

@ -69,7 +69,7 @@ extern "C" {
#define VK_API_VERSION_1_0 VK_MAKE_API_VERSION(0, 1, 0, 0)// Patch version should always be set to 0 #define VK_API_VERSION_1_0 VK_MAKE_API_VERSION(0, 1, 0, 0)// Patch version should always be set to 0
// Version of this file // Version of this file
#define VK_HEADER_VERSION 321 #define VK_HEADER_VERSION 322
// Complete version of this file // Complete version of this file
#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 4, VK_HEADER_VERSION) #define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 4, VK_HEADER_VERSION)

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -24,7 +24,7 @@ vulkanConventions = VulkanConventions()
# Helpers to keep things cleaner # Helpers to keep things cleaner
def splitIfGet(elem, name): def splitIfGet(elem, name):
return elem.get(name).split(',') if elem.get(name) is not None and elem.get(name) != '' else None return elem.get(name).split(',') if elem.get(name) is not None and elem.get(name) != '' else []
def textIfFind(elem, name): def textIfFind(elem, name):
return elem.find(name).text if elem.find(name) is not None else None return elem.find(name).text if elem.find(name) is not None else None
@ -62,7 +62,7 @@ def externSyncGet(elem):
def getQueues(elem) -> Queues: def getQueues(elem) -> Queues:
queues = 0 queues = 0
queues_list = splitIfGet(elem, 'queues') queues_list = splitIfGet(elem, 'queues')
if queues_list is not None: if len(queues_list) > 0:
queues |= Queues.TRANSFER if 'transfer' in queues_list else 0 queues |= Queues.TRANSFER if 'transfer' in queues_list else 0
queues |= Queues.GRAPHICS if 'graphics' in queues_list else 0 queues |= Queues.GRAPHICS if 'graphics' in queues_list else 0
queues |= Queues.COMPUTE if 'compute' in queues_list else 0 queues |= Queues.COMPUTE if 'compute' in queues_list else 0
@ -526,7 +526,7 @@ class BaseGenerator(OutputGenerator):
obsoletedby = interface.get('obsoletedby') obsoletedby = interface.get('obsoletedby')
specialuse = splitIfGet(interface, 'specialuse') specialuse = splitIfGet(interface, 'specialuse')
ratifiedApis = splitIfGet(interface, 'ratified') ratifiedApis = splitIfGet(interface, 'ratified')
ratified = True if ratifiedApis is not None and self.genOpts.apiname in ratifiedApis else False ratified = True if len(ratifiedApis) > 0 and self.genOpts.apiname in ratifiedApis else False
# Not sure if better way to get this info # Not sure if better way to get this info
specVersion = self.featureDictionary[name]['enumconstant'][None][None][0] specVersion = self.featureDictionary[name]['enumconstant'][None][None][0]
@ -585,8 +585,8 @@ class BaseGenerator(OutputGenerator):
# See Member::optional code for details of this # See Member::optional code for details of this
optionalValues = splitIfGet(param, 'optional') optionalValues = splitIfGet(param, 'optional')
optional = optionalValues is not None and optionalValues[0].lower() == "true" optional = len(optionalValues) > 0 and optionalValues[0].lower() == "true"
optionalPointer = optionalValues is not None and len(optionalValues) > 1 and optionalValues[1].lower() == "true" optionalPointer = len(optionalValues) > 1 and optionalValues[1].lower() == "true"
# externsync will be 'true', 'maybe', '<expression>' or 'maybe:<expression>' # externsync will be 'true', 'maybe', '<expression>' or 'maybe:<expression>'
(externSync, externSyncPointer) = externSyncGet(param) (externSync, externSyncPointer) = externSyncGet(param)
@ -737,7 +737,7 @@ class BaseGenerator(OutputGenerator):
typeElem = typeInfo.elem typeElem = typeInfo.elem
protect = self.currentExtension.protect if hasattr(self.currentExtension, 'protect') and self.currentExtension.protect is not None else None protect = self.currentExtension.protect if hasattr(self.currentExtension, 'protect') and self.currentExtension.protect is not None else None
extension = [self.currentExtension] if self.currentExtension is not None else [] extension = [self.currentExtension.name] if self.currentExtension is not None else []
category = typeElem.get('category') category = typeElem.get('category')
if (category == 'struct' or category == 'union'): if (category == 'struct' or category == 'union'):
if alias is not None: if alias is not None:
@ -750,7 +750,7 @@ class BaseGenerator(OutputGenerator):
allowDuplicate = boolGet(typeElem, 'allowduplicate') allowDuplicate = boolGet(typeElem, 'allowduplicate')
extends = splitIfGet(typeElem, 'structextends') extends = splitIfGet(typeElem, 'structextends')
extendedBy = self.registry.validextensionstructs[typeName] if len(self.registry.validextensionstructs[typeName]) > 0 else None extendedBy = self.registry.validextensionstructs[typeName] if len(self.registry.validextensionstructs[typeName]) > 0 else []
membersElem = typeInfo.elem.findall('.//member') membersElem = typeInfo.elem.findall('.//member')
members = [] members = []
@ -795,8 +795,8 @@ class BaseGenerator(OutputGenerator):
# the first is if the variable itself is optional # the first is if the variable itself is optional
# the second is the value of the pointer is optional; # the second is the value of the pointer is optional;
optionalValues = splitIfGet(member, 'optional') optionalValues = splitIfGet(member, 'optional')
optional = optionalValues is not None and optionalValues[0].lower() == "true" optional = len(optionalValues) > 0 and optionalValues[0].lower() == "true"
optionalPointer = optionalValues is not None and len(optionalValues) > 1 and optionalValues[1].lower() == "true" optionalPointer = len(optionalValues) > 1 and optionalValues[1].lower() == "true"
members.append(Member(name, type, fullType, noautovalidity, limittype, members.append(Member(name, type, fullType, noautovalidity, limittype,
const, length, nullTerminated, pointer, fixedSizeArray, const, length, nullTerminated, pointer, fixedSizeArray,
@ -916,16 +916,16 @@ class BaseGenerator(OutputGenerator):
if supportElem is not None: if supportElem is not None:
queues = getQueues(supportElem) queues = getQueues(supportElem)
stageNames = splitIfGet(supportElem, 'stage') stageNames = splitIfGet(supportElem, 'stage')
stages = [x for x in self.vk.bitmasks['VkPipelineStageFlagBits2'].flags if x.name in stageNames] if stageNames is not None else None stages = [x for x in self.vk.bitmasks['VkPipelineStageFlagBits2'].flags if x.name in stageNames] if len(stageNames) > 0 else None
support = SyncSupport(queues, stages, False) support = SyncSupport(queues, stages, False)
equivalent = maxSyncEquivalent equivalent = maxSyncEquivalent
equivalentElem = syncElem.find('syncequivalent') equivalentElem = syncElem.find('syncequivalent')
if equivalentElem is not None: if equivalentElem is not None:
stageNames = splitIfGet(equivalentElem, 'stage') stageNames = splitIfGet(equivalentElem, 'stage')
stages = [x for x in self.vk.bitmasks['VkPipelineStageFlagBits2'].flags if x.name in stageNames] if stageNames is not None else None stages = [x for x in self.vk.bitmasks['VkPipelineStageFlagBits2'].flags if x.name in stageNames] if len(stageNames) > 0 else None
accessNames = splitIfGet(equivalentElem, 'access') accessNames = splitIfGet(equivalentElem, 'access')
accesses = [x for x in self.vk.bitmasks['VkAccessFlagBits2'].flags if x.name in accessNames] if accessNames is not None else None accesses = [x for x in self.vk.bitmasks['VkAccessFlagBits2'].flags if x.name in accessNames] if len(accessNames) > 0 else None
equivalent = SyncEquivalent(stages, accesses, False) equivalent = SyncEquivalent(stages, accesses, False)
flagName = syncElem.get('name') flagName = syncElem.get('name')
@ -943,16 +943,16 @@ class BaseGenerator(OutputGenerator):
if supportElem is not None: if supportElem is not None:
queues = getQueues(supportElem) queues = getQueues(supportElem)
stageNames = splitIfGet(supportElem, 'stage') stageNames = splitIfGet(supportElem, 'stage')
stages = [x for x in self.vk.bitmasks['VkPipelineStageFlagBits2'].flags if x.name in stageNames] if stageNames is not None else None stages = [x for x in self.vk.bitmasks['VkPipelineStageFlagBits2'].flags if x.name in stageNames] if len(stageNames) > 0 else None
support = SyncSupport(queues, stages, False) support = SyncSupport(queues, stages, False)
equivalent = maxSyncEquivalent equivalent = maxSyncEquivalent
equivalentElem = syncElem.find('syncequivalent') equivalentElem = syncElem.find('syncequivalent')
if equivalentElem is not None: if equivalentElem is not None:
stageNames = splitIfGet(equivalentElem, 'stage') stageNames = splitIfGet(equivalentElem, 'stage')
stages = [x for x in self.vk.bitmasks['VkPipelineStageFlagBits2'].flags if x.name in stageNames] if stageNames is not None else None stages = [x for x in self.vk.bitmasks['VkPipelineStageFlagBits2'].flags if x.name in stageNames] if len(stageNames) > 0 else None
accessNames = splitIfGet(equivalentElem, 'access') accessNames = splitIfGet(equivalentElem, 'access')
accesses = [x for x in self.vk.bitmasks['VkAccessFlagBits2'].flags if x.name in accessNames] if accessNames is not None else None accesses = [x for x in self.vk.bitmasks['VkAccessFlagBits2'].flags if x.name in accessNames] if len(accessNames) > 0 else None
equivalent = SyncEquivalent(stages, accesses, False) equivalent = SyncEquivalent(stages, accesses, False)
flagName = syncElem.get('name') flagName = syncElem.get('name')

File diff suppressed because it is too large Load diff

View file

@ -182,7 +182,7 @@ branch of the member gitlab server.
#define <name>VKSC_API_VERSION_1_0</name> <type>VK_MAKE_API_VERSION</type>(VKSC_API_VARIANT, 1, 0, 0)// Patch version should always be set to 0</type> #define <name>VKSC_API_VERSION_1_0</name> <type>VK_MAKE_API_VERSION</type>(VKSC_API_VARIANT, 1, 0, 0)// Patch version should always be set to 0</type>
<type api="vulkan" category="define">// Version of this file <type api="vulkan" category="define">// Version of this file
#define <name>VK_HEADER_VERSION</name> 321</type> #define <name>VK_HEADER_VERSION</name> 322</type>
<type api="vulkan" category="define" requires="VK_HEADER_VERSION">// Complete version of this file <type api="vulkan" category="define" requires="VK_HEADER_VERSION">// Complete version of this file
#define <name>VK_HEADER_VERSION_COMPLETE</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 4, VK_HEADER_VERSION)</type> #define <name>VK_HEADER_VERSION_COMPLETE</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 4, VK_HEADER_VERSION)</type>
<type api="vulkansc" category="define">// Version of this file <type api="vulkansc" category="define">// Version of this file
@ -21480,6 +21480,9 @@ typedef void* <name>MTLSharedEvent_id</name>;
<enum bitpos="10" extends="VkShaderCreateFlagBitsEXT" name="VK_SHADER_CREATE_RESERVED_10_BIT_KHR"/> <enum bitpos="10" extends="VkShaderCreateFlagBitsEXT" name="VK_SHADER_CREATE_RESERVED_10_BIT_KHR"/>
<enum bitpos="11" extends="VkShaderCreateFlagBitsEXT" name="VK_SHADER_CREATE_RESERVED_11_BIT_KHR"/> <enum bitpos="11" extends="VkShaderCreateFlagBitsEXT" name="VK_SHADER_CREATE_RESERVED_11_BIT_KHR"/>
</require> </require>
<require depends="VK_ARM_tensors">
<enum bitpos="3" extends="VkTensorCreateFlagBitsARM" name="VK_TENSOR_CREATE_RESERVED_3_BIT_ARM"/>
</require>
</extension> </extension>
<extension name="VK_AMD_mixed_attachment_samples" number="137" type="device" author="AMD" contact="Matthaeus G. Chajdas @anteru" supported="vulkan" nofeatures="true"> <extension name="VK_AMD_mixed_attachment_samples" number="137" type="device" author="AMD" contact="Matthaeus G. Chajdas @anteru" supported="vulkan" nofeatures="true">
<require> <require>
@ -28699,6 +28702,12 @@ typedef void* <name>MTLSharedEvent_id</name>;
<feature name="pipelineCacheIncrementalMode" struct="VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC"/> <feature name="pipelineCacheIncrementalMode" struct="VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC"/>
</require> </require>
</extension> </extension>
<extension name="VK_EXT_extension_639" number="639" author="EXT" contact="Ralph Potter gitlab:@r_potter" supported="disabled">
<require>
<enum value="0" name="VK_EXT_EXTENSION_639_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_639&quot;" name="VK_EXT_EXTENSION_639_EXTENSION_NAME"/>
</require>
</extension>
</extensions> </extensions>
<formats> <formats>
<format name="VK_FORMAT_R4G4_UNORM_PACK8" class="8-bit" blockSize="1" texelsPerBlock="1" packed="8"> <format name="VK_FORMAT_R4G4_UNORM_PACK8" class="8-bit" blockSize="1" texelsPerBlock="1" packed="8">