Skip to content

Commit

Permalink
feat(Vulkan) update to 1.3.270
Browse files Browse the repository at this point in the history
  • Loading branch information
Spasi committed Nov 21, 2023
1 parent 6aada8c commit c0c64b7
Show file tree
Hide file tree
Showing 22 changed files with 248 additions and 86 deletions.
2 changes: 1 addition & 1 deletion doc/notes/3.3.4.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ This build includes the following changes:
- stb
* Updated `stb_image_resize` to 2.01 (up from 0.97)
- tinyfiledialogs: Updated to 3.15.1 (up from 3.13.3)
- Vulkan: Updated to 1.3.269 (up from 1.3.264)
- Vulkan: Updated to 1.3.270 (up from 1.3.264)
* Includes MoltenVK 1.2.6 (up from 1.2.5)

#### Improvements
Expand Down
17 changes: 15 additions & 2 deletions modules/lwjgl/vulkan/src/main/c/vulkan/vulkan_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -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

// Version of this file
#define VK_HEADER_VERSION 269
#define VK_HEADER_VERSION 270

// Complete version of this file
#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION)
Expand Down Expand Up @@ -611,6 +611,7 @@ typedef enum VkStructureType {
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000,
VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001,
VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG = 1000110000,
VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000,
VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001,
Expand Down Expand Up @@ -11913,6 +11914,18 @@ VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT(
#endif


// VK_IMG_relaxed_line_rasterization is a preprocessor guard. Do not pass it to API calls.
#define VK_IMG_relaxed_line_rasterization 1
#define VK_IMG_RELAXED_LINE_RASTERIZATION_SPEC_VERSION 1
#define VK_IMG_RELAXED_LINE_RASTERIZATION_EXTENSION_NAME "VK_IMG_relaxed_line_rasterization"
typedef struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
VkStructureType sType;
void* pNext;
VkBool32 relaxedLineRasterization;
} VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG;



// VK_EXT_external_memory_dma_buf is a preprocessor guard. Do not pass it to API calls.
#define VK_EXT_external_memory_dma_buf 1
#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1
Expand Down Expand Up @@ -17278,7 +17291,7 @@ typedef struct VkDirectDriverLoadingInfoLUNARG {

typedef struct VkDirectDriverLoadingListLUNARG {
VkStructureType sType;
void* pNext;
const void* pNext;
VkDirectDriverLoadingModeLUNARG mode;
uint32_t driverCount;
const VkDirectDriverLoadingInfoLUNARG* pDrivers;
Expand Down
2 changes: 1 addition & 1 deletion modules/lwjgl/vulkan/src/templates/kotlin/vulkan/Custom.kt
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ fun templateCustomization() {

IntConstant(
"The Vulkan registry version used to generate the LWJGL bindings.",
"HEADER_VERSION".."269"
"HEADER_VERSION".."270"
)

LongConstant(
Expand Down
70 changes: 54 additions & 16 deletions modules/lwjgl/vulkan/src/templates/kotlin/vulkan/ExtensionTypes.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5609,6 +5609,25 @@ val VkSubpassEndInfoKHR = struct(Module.VULKAN, "VkSubpassEndInfoKHR", alias = V
nullable..opaque_const_p("pNext", "")
}

val VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG = struct(Module.VULKAN, "VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG") {
documentation =
"""
Structure describing relaxed line rasterization features that can be supported by an implementation.

<h5>Description</h5>
If the ##VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG structure is included in the {@code pNext} chain of the ##VkPhysicalDeviceFeatures2 structure passed to #GetPhysicalDeviceFeatures2(), it is filled in to indicate whether each corresponding feature is supported. ##VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG <b>can</b> also be used in the {@code pNext} chain of ##VkDeviceCreateInfo to selectively enable these features.

<h5>Valid Usage (Implicit)</h5>
<ul>
<li>{@code sType} <b>must</b> be #STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG</li>
</ul>
"""

Expression("#STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG")..VkStructureType("sType", "a {@code VkStructureType} value identifying this structure.")
nullable..opaque_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
VkBool32("relaxedLineRasterization", "indicates that the implementation supports relaxed line rasterization control.")
}

val VkSharedPresentSurfaceCapabilitiesKHR = struct(Module.VULKAN, "VkSharedPresentSurfaceCapabilitiesKHR", mutable = false) {
documentation =
"""
Expand Down Expand Up @@ -14861,7 +14880,7 @@ val VkPhysicalDeviceCudaKernelLaunchPropertiesNV = struct(Module.VULKAN, "VkPhys
Expression("#STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV")..VkStructureType("sType", "").mutable()
nullable..opaque_p("pNext", "").mutable()
uint32_t("computeCapabilityMinor", "indicates the minor version number of the compute code.")
uint32_t("computeCapabilityMajor", "indicates the minor version number of the compute code.")
uint32_t("computeCapabilityMajor", "indicates the major version number of the compute code.")
}

val VkQueryLowLatencySupportNV = struct(Module.VULKAN, "VkQueryLowLatencySupportNV") {
Expand Down Expand Up @@ -15454,16 +15473,21 @@ val VkDescriptorBufferBindingPushDescriptorBufferHandleEXT = struct(Module.VULKA
"""
Structure specifying push descriptor buffer binding information.

<h5>Valid Usage</h5>
<ul>
<li><a href="https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html\#limits-bufferlessPushDescriptors">##VkPhysicalDeviceDescriptorBufferPropertiesEXT{@code ::bufferlessPushDescriptors}</a> <b>must</b> be #FALSE</li>
</ul>

<h5>Valid Usage (Implicit)</h5>
<ul>
<li>{@code sType} <b>must</b> be #STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT</li>
<li>{@code buffer} <b>must</b> be a valid {@code VkBuffer} handle</li>
</ul>
"""

Expression("#STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT")..VkStructureType("sType", "")
nullable..opaque_p("pNext", "")
VkBuffer("buffer", "")
Expression("#STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT")..VkStructureType("sType", "a {@code VkStructureType} value identifying this structure.")
nullable..opaque_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
VkBuffer("buffer", "the {@code VkBuffer} handle of the buffer for push descriptors.")
}

val VkDescriptorDataEXT = union(Module.VULKAN, "VkDescriptorDataEXT") {
Expand Down Expand Up @@ -15526,6 +15550,8 @@ val VkDescriptorGetInfoEXT = struct(Module.VULKAN, "VkDescriptorGetInfoEXT") {
<li>If {@code type} is #DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, {@code pStorageTexelBuffer} is not {@code NULL} and {@code pStorageTexelBuffer→address} is not zero, {@code pStorageTexelBuffer→address} must be an address within a {@code VkBuffer} created on {@code device}</li>
<li>If {@code type} is #DESCRIPTOR_TYPE_UNIFORM_BUFFER, {@code pUniformBuffer} is not {@code NULL} and {@code pUniformBuffer→address} is not zero, {@code pUniformBuffer→address} must be an address within a {@code VkBuffer} created on {@code device}</li>
<li>If {@code type} is #DESCRIPTOR_TYPE_STORAGE_BUFFER, {@code pStorageBuffer} is not {@code NULL} and {@code pStorageBuffer→address} is not zero, {@code pStorageBuffer→address} must be an address within a {@code VkBuffer} created on {@code device}</li>
<li>If {@code type} is #DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, {@code pUniformBuffer} is not {@code NULL} , the number of texel buffer elements given by <code>(⌊pUniformBuffer→range / (texel block size)⌋ × (texels per block))</code> where texel block size and texels per block are as defined in the <a href="https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html\#formats-compatibility">Compatible Formats</a> table for {@code pUniformBuffer→format}, <b>must</b> be less than or equal to ##VkPhysicalDeviceLimits{@code ::maxTexelBufferElements}</li>
<li>If {@code type} is #DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, {@code pStorageBuffer} is not {@code NULL} , the number of texel buffer elements given by <code>(⌊pStorageBuffer→range / (texel block size)⌋ × (texels per block))</code> where texel block size and texels per block are as defined in the <a href="https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html\#formats-compatibility">Compatible Formats</a> table for {@code pStorageBuffer→format}, <b>must</b> be less than or equal to ##VkPhysicalDeviceLimits{@code ::maxTexelBufferElements}</li>
<li>If {@code type} is #DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR and {@code accelerationStructure} is not 0, {@code accelerationStructure} <b>must</b> contain the address of a {@code VkAccelerationStructureKHR} created on {@code device}</li>
<li>If {@code type} is #DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV and {@code accelerationStructure} is not 0, {@code accelerationStructure} <b>must</b> contain the handle of a {@code VkAccelerationStructureNV} created on {@code device}, returned by #GetAccelerationStructureHandleNV()</li>
</ul>
Expand Down Expand Up @@ -19052,6 +19078,9 @@ val VkComputePipelineIndirectBufferInfoNV = struct(Module.VULKAN, "VkComputePipe
"""
Structure describing the device address where pipeline’s metadata will be saved.

<h5>Description</h5>
If {@code pipelineDeviceAddressCaptureReplay} is zero, no specific address is requested. If {@code pipelineDeviceAddressCaptureReplay} is not zero, then it <b>must</b> be an address retrieved from an identically created pipeline on the same implementation. The pipeline metadata <b>must</b> also be placed on an identically created buffer and at the same offset using the #CmdUpdatePipelineIndirectBufferNV() command.

<h5>Valid Usage</h5>
<ul>
<li>The <a href="https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html\#features-deviceGeneratedComputePipelines">##VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV{@code ::deviceGeneratedComputePipelines}</a> feature <b>must</b> be enabled</li>
Expand All @@ -19072,18 +19101,25 @@ val VkComputePipelineIndirectBufferInfoNV = struct(Module.VULKAN, "VkComputePipe
</ul>
"""

Expression("#STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV")..VkStructureType("sType", "")
nullable..opaque_const_p("pNext", "")
VkDeviceAddress("deviceAddress", "")
VkDeviceSize("size", "")
VkDeviceAddress("pipelineDeviceAddressCaptureReplay", "")
Expression("#STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV")..VkStructureType("sType", "a {@code VkStructureType} value identifying this structure.")
nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
VkDeviceAddress("deviceAddress", "the address where the pipeline’s metadata will be stored.")
VkDeviceSize("size", "the size of pipeline’s metadata that was queried using #GetPipelineIndirectMemoryRequirementsNV().")
VkDeviceAddress("pipelineDeviceAddressCaptureReplay", "the device address where pipeline’s metadata was originally saved and can now be used to re-populate {@code deviceAddress} for replay.")
}

val VkPipelineIndirectDeviceAddressInfoNV = struct(Module.VULKAN, "VkPipelineIndirectDeviceAddressInfoNV") {
documentation =
"""
Structure specifying the pipeline to query an address for.

<h5>Valid Usage</h5>
<ul>
<li>The provided {@code pipelineBindPoint} <b>must</b> be of type #PIPELINE_BIND_POINT_COMPUTE</li>
<li>{@code pipeline} <b>must</b> have been created with flag #PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV set</li>
<li>{@code pipeline} <b>must</b> have been created with a ##VkComputePipelineIndirectBufferInfoNV structure specifying a valid address where its metadata will be saved</li>
</ul>

<h5>Valid Usage (Implicit)</h5>
<ul>
<li>{@code sType} <b>must</b> be #STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV</li>
Expand All @@ -19096,12 +19132,10 @@ val VkPipelineIndirectDeviceAddressInfoNV = struct(Module.VULKAN, "VkPipelineInd
#GetPipelineIndirectDeviceAddressNV()
"""

Expression("#STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV")..VkStructureType("sType", "")
nullable..opaque_const_p("pNext", "")
VkPipelineBindPoint("pipelineBindPoint", "")
VkPipeline("pipeline", """<b>must</b> have been created with flag #PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV set

<b>must</b> have been created with a ##VkComputePipelineIndirectBufferInfoNV structure specifying a valid address where its metadata will be saved""")
Expression("#STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV")..VkStructureType("sType", "a {@code VkStructureType} value identifying this structure.")
nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
VkPipelineBindPoint("pipelineBindPoint", "a {@code VkPipelineBindPoint} value specifying the type of pipeline whose device address is being queried.")
VkPipeline("pipeline", "specifies the pipeline whose device address is being queried.")
}

val VkBindPipelineIndirectCommandNV = struct(Module.VULKAN, "VkBindPipelineIndirectCommandNV") {
Expand Down Expand Up @@ -19726,7 +19760,7 @@ val VkDirectDriverLoadingListLUNARG = struct(Module.VULKAN, "VkDirectDriverLoadi
"""

Expression("#STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG")..VkStructureType("sType", "a {@code VkStructureType} value identifying this structure.")
nullable..opaque_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
VkDirectDriverLoadingModeLUNARG("mode", "controls the mode in which to load the provided drivers.")
AutoSize("pDrivers")..uint32_t("driverCount", "the number of driver manifest paths.")
VkDirectDriverLoadingInfoLUNARG.const.p("pDrivers", "a pointer to an array of {@code driverCount} ##VkDirectDriverLoadingInfoLUNARG structures.")
Expand Down Expand Up @@ -21027,6 +21061,8 @@ val VkCooperativeMatrixPropertiesKHR = struct(Module.VULKAN, "VkCooperativeMatri

At least one entry in the list <b>must</b> have power of two values for all of {@code MSize}, {@code KSize}, and {@code NSize}.

{@code scope} <b>must</b> be #SCOPE_SUBGROUP_KHR.

<h5>Valid Usage (Implicit)</h5>
<ul>
<li>{@code sType} <b>must</b> be #STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR</li>
Expand Down Expand Up @@ -21081,6 +21117,8 @@ val VkPhysicalDeviceCooperativeMatrixPropertiesKHR = struct(Module.VULKAN, "VkPh
Structure describing cooperative matrix properties supported by an implementation.

<h5>Description</h5>
{@code cooperativeMatrixSupportedStages} <b>must</b> not have any bits other than #SHADER_STAGE_COMPUTE_BIT set.

If the ##VkPhysicalDeviceCooperativeMatrixPropertiesKHR structure is included in the {@code pNext} chain of the ##VkPhysicalDeviceProperties2 structure passed to #GetPhysicalDeviceProperties2(), it is filled in with each corresponding implementation-dependent property.

<h5>Valid Usage (Implicit)</h5>
Expand Down
Loading

0 comments on commit c0c64b7

Please sign in to comment.