diff --git a/doc/notes/3.3.2.md b/doc/notes/3.3.2.md
index 67cf84d5dd..580d6e5e32 100644
--- a/doc/notes/3.3.2.md
+++ b/doc/notes/3.3.2.md
@@ -54,8 +54,8 @@ This build includes the following changes:
* Updated `stb_image` to 2.28 (up from 2.27)
- tinyfiledialogs: Updated to 3.9.0 (up from 3.8.8)
- vma: Updated to 3.0.1 (up from 3.0.0-development)
-- Vulkan: Updated to 1.3.237 (up from 1.3.206)
- * Includes MoltenVK 1.2.1 (up from 1.1.7)
+- Vulkan: Updated to 1.3.240 (up from 1.3.206)
+ * Includes MoltenVK 1.2.2 (up from 1.1.7)
- Zstd: Updated to 1.5.4 (up from 1.5.2)
#### Improvements
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/ANDROIDExternalMemoryAndroidHardwareBuffer.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/ANDROIDExternalMemoryAndroidHardwareBuffer.java
new file mode 100644
index 0000000000..3c5c6a7ca2
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/ANDROIDExternalMemoryAndroidHardwareBuffer.java
@@ -0,0 +1,238 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package org.lwjgl.vulkan;
+
+import org.lwjgl.*;
+
+import org.lwjgl.system.*;
+
+import static org.lwjgl.system.Checks.*;
+import static org.lwjgl.system.JNI.*;
+import static org.lwjgl.system.MemoryUtil.*;
+
+/**
+ * This extension enables an application to import Android {@code AHardwareBuffer} objects created outside of the Vulkan device into Vulkan memory objects, where they can be bound to images and buffers. It also allows exporting an {@code AHardwareBuffer} from a Vulkan memory object for symmetry with other operating systems. But since not all {@code AHardwareBuffer} usages and formats have Vulkan equivalents, exporting from Vulkan provides strictly less functionality than creating the {@code AHardwareBuffer} externally and importing it.
+ *
+ *
Some {@code AHardwareBuffer} images have implementation-defined external formats that may not correspond to Vulkan formats. Sampler Y′CBCR conversion can be used to sample from these images and convert them to a known color space.
+ *
+ * VK_ANDROID_external_memory_android_hardware_buffer
+ *
+ *
+ * - Name String
+ * - {@code VK_ANDROID_external_memory_android_hardware_buffer}
+ * - Extension Type
+ * - Device extension
+ * - Registered Extension Number
+ * - 130
+ * - Revision
+ * - 5
+ * - Extension and Version Dependencies
+ *
+ * - Requires support for Vulkan 1.0
+ * - Requires {@link KHRSamplerYcbcrConversion VK_KHR_sampler_ycbcr_conversion} to be enabled for any device-level functionality
+ * - Requires {@link KHRExternalMemory VK_KHR_external_memory} to be enabled for any device-level functionality
+ * - Requires {@link EXTQueueFamilyForeign VK_EXT_queue_family_foreign} to be enabled for any device-level functionality
+ * - Requires {@link KHRDedicatedAllocation VK_KHR_dedicated_allocation} to be enabled for any device-level functionality
+ *
+ * - Contact
+ *
+ *
+ *
+ * Other Extension Metadata
+ *
+ *
+ * - Last Modified Date
+ * - 2021-09-30
+ * - IP Status
+ * - No known IP claims.
+ * - Contributors
+ *
+ * - Ray Smith, ARM
+ * - Chad Versace, Google
+ * - Jesse Hall, Google
+ * - Tobias Hector, Imagination
+ * - James Jones, NVIDIA
+ * - Tony Zlatinski, NVIDIA
+ * - Matthew Netsch, Qualcomm
+ * - Andrew Garrard, Samsung
+ *
+ *
+ */
+public class ANDROIDExternalMemoryAndroidHardwareBuffer {
+
+ /** The extension specification version. */
+ public static final int VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION = 5;
+
+ /** The extension name. */
+ public static final String VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME = "VK_ANDROID_external_memory_android_hardware_buffer";
+
+ /** Extends {@code VkExternalMemoryHandleTypeFlagBits}. */
+ public static final int VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 0x400;
+
+ /**
+ * Extends {@code VkStructureType}.
+ *
+ * Enum values:
+ *
+ *
+ * - {@link #VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID}
+ * - {@link #VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID}
+ * - {@link #VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID}
+ * - {@link #VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID}
+ * - {@link #VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID}
+ * - {@link #VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID}
+ *
+ */
+ public static final int
+ VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000,
+ VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001,
+ VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002,
+ VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003,
+ VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004,
+ VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005;
+
+ /** Extends {@code VkStructureType}. */
+ public static final int VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006;
+
+ protected ANDROIDExternalMemoryAndroidHardwareBuffer() {
+ throw new UnsupportedOperationException();
+ }
+
+ // --- [ vkGetAndroidHardwareBufferPropertiesANDROID ] ---
+
+ /** Unsafe version of: {@link #vkGetAndroidHardwareBufferPropertiesANDROID GetAndroidHardwareBufferPropertiesANDROID} */
+ public static int nvkGetAndroidHardwareBufferPropertiesANDROID(VkDevice device, long buffer, long pProperties) {
+ long __functionAddress = device.getCapabilities().vkGetAndroidHardwareBufferPropertiesANDROID;
+ if (CHECKS) {
+ check(__functionAddress);
+ check(buffer);
+ }
+ return callPPPI(device.address(), buffer, pProperties, __functionAddress);
+ }
+
+ /**
+ * Get Properties of External Memory Android Hardware Buffers.
+ *
+ * C Specification
+ *
+ * To determine the memory parameters to use when importing an Android hardware buffer, call:
+ *
+ *
+ * VkResult vkGetAndroidHardwareBufferPropertiesANDROID(
+ * VkDevice device,
+ * const struct AHardwareBuffer* buffer,
+ * VkAndroidHardwareBufferPropertiesANDROID* pProperties);
+ *
+ * Valid Usage
+ *
+ *
+ * - {@code buffer} must be a valid Android hardware buffer object with at least one of the {@code AHARDWAREBUFFER_USAGE_GPU_*} flags in its {@code AHardwareBuffer_Desc}{@code ::usage}
+ *
+ *
+ * Valid Usage (Implicit)
+ *
+ *
+ * - {@code device} must be a valid {@code VkDevice} handle
+ * - {@code buffer} must be a valid pointer to a valid {@code AHardwareBuffer} value
+ * - {@code pProperties} must be a valid pointer to a {@link VkAndroidHardwareBufferPropertiesANDROID} structure
+ *
+ *
+ * Return Codes
+ *
+ *
+ * - On success, this command returns
+ *
+ * - {@link VK10#VK_SUCCESS SUCCESS}
+ *
+ * - On failure, this command returns
+ *
+ * - {@link VK10#VK_ERROR_OUT_OF_HOST_MEMORY ERROR_OUT_OF_HOST_MEMORY}
+ * - {@link KHRExternalMemory#VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR ERROR_INVALID_EXTERNAL_HANDLE_KHR}
+ *
+ *
+ *
+ * See Also
+ *
+ * {@link VkAndroidHardwareBufferPropertiesANDROID}
+ *
+ * @param device the logical device that will be importing {@code buffer}.
+ * @param buffer the Android hardware buffer which will be imported.
+ * @param pProperties a pointer to a {@link VkAndroidHardwareBufferPropertiesANDROID} structure in which the properties of {@code buffer} are returned.
+ */
+ @NativeType("VkResult")
+ public static int vkGetAndroidHardwareBufferPropertiesANDROID(VkDevice device, @NativeType("AHardwareBuffer const *") long buffer, @NativeType("VkAndroidHardwareBufferPropertiesANDROID *") VkAndroidHardwareBufferPropertiesANDROID pProperties) {
+ return nvkGetAndroidHardwareBufferPropertiesANDROID(device, buffer, pProperties.address());
+ }
+
+ // --- [ vkGetMemoryAndroidHardwareBufferANDROID ] ---
+
+ /** Unsafe version of: {@link #vkGetMemoryAndroidHardwareBufferANDROID GetMemoryAndroidHardwareBufferANDROID} */
+ public static int nvkGetMemoryAndroidHardwareBufferANDROID(VkDevice device, long pInfo, long pBuffer) {
+ long __functionAddress = device.getCapabilities().vkGetMemoryAndroidHardwareBufferANDROID;
+ if (CHECKS) {
+ check(__functionAddress);
+ }
+ return callPPPI(device.address(), pInfo, pBuffer, __functionAddress);
+ }
+
+ /**
+ * Get an Android hardware buffer for a memory object.
+ *
+ * C Specification
+ *
+ * To export an Android hardware buffer referencing the payload of a Vulkan device memory object, call:
+ *
+ *
+ * VkResult vkGetMemoryAndroidHardwareBufferANDROID(
+ * VkDevice device,
+ * const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
+ * struct AHardwareBuffer** pBuffer);
+ *
+ * Description
+ *
+ * Each call to {@code vkGetMemoryAndroidHardwareBufferANDROID} must return an Android hardware buffer with a new reference acquired in addition to the reference held by the {@code VkDeviceMemory}. To avoid leaking resources, the application must release the reference by calling {@code AHardwareBuffer_release} when it is no longer needed. When called with the same handle in {@link VkMemoryGetAndroidHardwareBufferInfoANDROID}{@code ::memory}, {@code vkGetMemoryAndroidHardwareBufferANDROID} must return the same Android hardware buffer object. If the device memory was created by importing an Android hardware buffer, {@code vkGetMemoryAndroidHardwareBufferANDROID} must return that same Android hardware buffer object.
+ *
+ * Valid Usage (Implicit)
+ *
+ *
+ * - {@code device} must be a valid {@code VkDevice} handle
+ * - {@code pInfo} must be a valid pointer to a valid {@link VkMemoryGetAndroidHardwareBufferInfoANDROID} structure
+ * - {@code pBuffer} must be a valid pointer to a valid pointer to an {@code AHardwareBuffer} value
+ *
+ *
+ * Return Codes
+ *
+ *
+ * - On success, this command returns
+ *
+ * - {@link VK10#VK_SUCCESS SUCCESS}
+ *
+ * - On failure, this command returns
+ *
+ * - {@link VK10#VK_ERROR_TOO_MANY_OBJECTS ERROR_TOO_MANY_OBJECTS}
+ * - {@link VK10#VK_ERROR_OUT_OF_HOST_MEMORY ERROR_OUT_OF_HOST_MEMORY}
+ *
+ *
+ *
+ * See Also
+ *
+ * {@link VkMemoryGetAndroidHardwareBufferInfoANDROID}
+ *
+ * @param device the logical device that created the device memory being exported.
+ * @param pInfo a pointer to a {@link VkMemoryGetAndroidHardwareBufferInfoANDROID} structure containing parameters of the export operation.
+ * @param pBuffer will return an Android hardware buffer referencing the payload of the device memory object.
+ */
+ @NativeType("VkResult")
+ public static int vkGetMemoryAndroidHardwareBufferANDROID(VkDevice device, @NativeType("VkMemoryGetAndroidHardwareBufferInfoANDROID const *") VkMemoryGetAndroidHardwareBufferInfoANDROID pInfo, @NativeType("AHardwareBuffer **") PointerBuffer pBuffer) {
+ if (CHECKS) {
+ check(pBuffer, 1);
+ }
+ return nvkGetMemoryAndroidHardwareBufferANDROID(device, pInfo.address(), memAddress(pBuffer));
+ }
+
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTDirectfbSurface.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTDirectfbSurface.java
new file mode 100644
index 0000000000..48c457bcc9
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTDirectfbSurface.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package org.lwjgl.vulkan;
+
+import javax.annotation.*;
+
+import java.nio.*;
+
+import org.lwjgl.system.*;
+
+import static org.lwjgl.system.Checks.*;
+import static org.lwjgl.system.JNI.*;
+import static org.lwjgl.system.MemoryUtil.*;
+
+/**
+ * The {@code VK_EXT_directfb_surface} extension is an instance extension. It provides a mechanism to create a {@code VkSurfaceKHR} object (defined by the {@link KHRSurface VK_KHR_surface} extension) that refers to a DirectFB {@code IDirectFBSurface}, as well as a query to determine support for rendering via DirectFB.
+ *
+ * VK_EXT_directfb_surface
+ *
+ *
+ * - Name String
+ * - {@code VK_EXT_directfb_surface}
+ * - Extension Type
+ * - Instance extension
+ * - Registered Extension Number
+ * - 347
+ * - Revision
+ * - 1
+ * - Extension and Version Dependencies
+ *
+ * - Requires support for Vulkan 1.0
+ * - Requires {@link KHRSurface VK_KHR_surface} to be enabled
+ *
+ * - Contact
+ *
+ *
+ *
+ * Other Extension Metadata
+ *
+ *
+ * - Last Modified Date
+ * - 2020-06-16
+ * - IP Status
+ * - No known IP claims.
+ * - Contributors
+ *
+ * - Nicolas Caramelli
+ *
+ *
+ */
+public class EXTDirectfbSurface {
+
+ /** The extension specification version. */
+ public static final int VK_EXT_DIRECTFB_SURFACE_SPEC_VERSION = 1;
+
+ /** The extension name. */
+ public static final String VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME = "VK_EXT_directfb_surface";
+
+ /** Extends {@code VkStructureType}. */
+ public static final int VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000;
+
+ protected EXTDirectfbSurface() {
+ throw new UnsupportedOperationException();
+ }
+
+ // --- [ vkCreateDirectFBSurfaceEXT ] ---
+
+ /** Unsafe version of: {@link #vkCreateDirectFBSurfaceEXT CreateDirectFBSurfaceEXT} */
+ public static int nvkCreateDirectFBSurfaceEXT(VkInstance instance, long pCreateInfo, long pAllocator, long pSurface) {
+ long __functionAddress = instance.getCapabilities().vkCreateDirectFBSurfaceEXT;
+ if (CHECKS) {
+ check(__functionAddress);
+ }
+ return callPPPPI(instance.address(), pCreateInfo, pAllocator, pSurface, __functionAddress);
+ }
+
+ /**
+ * Create a {@code VkSurfaceKHR} object for a DirectFB surface.
+ *
+ * C Specification
+ *
+ * To create a {@code VkSurfaceKHR} object for a DirectFB surface, call:
+ *
+ *
+ * VkResult vkCreateDirectFBSurfaceEXT(
+ * VkInstance instance,
+ * const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo,
+ * const VkAllocationCallbacks* pAllocator,
+ * VkSurfaceKHR* pSurface);
+ *
+ * Valid Usage (Implicit)
+ *
+ *
+ * - {@code instance} must be a valid {@code VkInstance} handle
+ * - {@code pCreateInfo} must be a valid pointer to a valid {@link VkDirectFBSurfaceCreateInfoEXT} structure
+ * - If {@code pAllocator} is not {@code NULL}, {@code pAllocator} must be a valid pointer to a valid {@link VkAllocationCallbacks} structure
+ * - {@code pSurface} must be a valid pointer to a {@code VkSurfaceKHR} handle
+ *
+ *
+ * Return Codes
+ *
+ *
+ * - On success, this command returns
+ *
+ * - {@link VK10#VK_SUCCESS SUCCESS}
+ *
+ * - On failure, this command returns
+ *
+ * - {@link VK10#VK_ERROR_OUT_OF_HOST_MEMORY ERROR_OUT_OF_HOST_MEMORY}
+ * - {@link VK10#VK_ERROR_OUT_OF_DEVICE_MEMORY ERROR_OUT_OF_DEVICE_MEMORY}
+ *
+ *
+ *
+ * See Also
+ *
+ * {@link VkAllocationCallbacks}, {@link VkDirectFBSurfaceCreateInfoEXT}
+ *
+ * @param instance the instance to associate the surface with.
+ * @param pCreateInfo a pointer to a {@link VkDirectFBSurfaceCreateInfoEXT} structure containing parameters affecting the creation of the surface object.
+ * @param pAllocator the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see Memory Allocation).
+ * @param pSurface a pointer to a {@code VkSurfaceKHR} handle in which the created surface object is returned.
+ */
+ @NativeType("VkResult")
+ public static int vkCreateDirectFBSurfaceEXT(VkInstance instance, @NativeType("VkDirectFBSurfaceCreateInfoEXT const *") VkDirectFBSurfaceCreateInfoEXT pCreateInfo, @Nullable @NativeType("VkAllocationCallbacks const *") VkAllocationCallbacks pAllocator, @NativeType("VkSurfaceKHR *") LongBuffer pSurface) {
+ if (CHECKS) {
+ check(pSurface, 1);
+ }
+ return nvkCreateDirectFBSurfaceEXT(instance, pCreateInfo.address(), memAddressSafe(pAllocator), memAddress(pSurface));
+ }
+
+ // --- [ vkGetPhysicalDeviceDirectFBPresentationSupportEXT ] ---
+
+ /**
+ * Query physical device for presentation with DirectFB.
+ *
+ * C Specification
+ *
+ * To determine whether a queue family of a physical device supports presentation with DirectFB library, call:
+ *
+ *
+ * VkBool32 vkGetPhysicalDeviceDirectFBPresentationSupportEXT(
+ * VkPhysicalDevice physicalDevice,
+ * uint32_t queueFamilyIndex,
+ * IDirectFB* dfb);
+ *
+ * Description
+ *
+ * This platform-specific function can be called prior to creating a surface.
+ *
+ * Valid Usage
+ *
+ *
+ * - {@code queueFamilyIndex} must be less than {@code pQueueFamilyPropertyCount} returned by {@code vkGetPhysicalDeviceQueueFamilyProperties} for the given {@code physicalDevice}
+ *
+ *
+ * Valid Usage (Implicit)
+ *
+ *
+ * - {@code physicalDevice} must be a valid {@code VkPhysicalDevice} handle
+ * - {@code dfb} must be a valid pointer to an {@code IDirectFB} value
+ *
+ *
+ * @param physicalDevice the physical device.
+ * @param queueFamilyIndex the queue family index.
+ * @param dfb a pointer to the {@code IDirectFB} main interface of DirectFB.
+ */
+ @NativeType("VkBool32")
+ public static boolean vkGetPhysicalDeviceDirectFBPresentationSupportEXT(VkPhysicalDevice physicalDevice, @NativeType("uint32_t") int queueFamilyIndex, @NativeType("IDirectFB *") long dfb) {
+ long __functionAddress = physicalDevice.getCapabilities().vkGetPhysicalDeviceDirectFBPresentationSupportEXT;
+ if (CHECKS) {
+ check(__functionAddress);
+ check(dfb);
+ }
+ return callPPI(physicalDevice.address(), queueFamilyIndex, dfb, __functionAddress) != 0;
+ }
+
+ /** Array version of: {@link #vkCreateDirectFBSurfaceEXT CreateDirectFBSurfaceEXT} */
+ @NativeType("VkResult")
+ public static int vkCreateDirectFBSurfaceEXT(VkInstance instance, @NativeType("VkDirectFBSurfaceCreateInfoEXT const *") VkDirectFBSurfaceCreateInfoEXT pCreateInfo, @Nullable @NativeType("VkAllocationCallbacks const *") VkAllocationCallbacks pAllocator, @NativeType("VkSurfaceKHR *") long[] pSurface) {
+ long __functionAddress = instance.getCapabilities().vkCreateDirectFBSurfaceEXT;
+ if (CHECKS) {
+ check(__functionAddress);
+ check(pSurface, 1);
+ }
+ return callPPPPI(instance.address(), pCreateInfo.address(), memAddressSafe(pAllocator), pSurface, __functionAddress);
+ }
+
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTExtendedDynamicState3.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTExtendedDynamicState3.java
index 08367662d1..ee0389819e 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTExtendedDynamicState3.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTExtendedDynamicState3.java
@@ -1682,7 +1682,7 @@ public static void vkCmdSetCoverageToColorEnableNV(VkCommandBuffer commandBuffer
*
* Description
*
- * This command sets the {@code coverageToColorLocation} state for subsequent drawing commands when the graphics pipeline is created with {@link #VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} set in {@link VkPipelineDynamicStateCreateInfo}{@code ::pDynamicStates}. Otherwise, this state is specified by the {@link VkPipelineSampleLocationsStateCreateInfoEXT}{@code ::coverageToColorLocation} value used to create the currently active pipeline.
+ * This command sets the {@code coverageToColorLocation} state for subsequent drawing commands when the graphics pipeline is created with {@link #VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} set in {@link VkPipelineDynamicStateCreateInfo}{@code ::pDynamicStates}. Otherwise, this state is specified by the {@link VkPipelineCoverageToColorStateCreateInfoNV}{@code ::coverageToColorLocation} value used to create the currently active pipeline.
*
* Valid Usage
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTImageCompressionControl.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTImageCompressionControl.java
index 0c01e06506..54e8ff5435 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTImageCompressionControl.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTImageCompressionControl.java
@@ -216,10 +216,16 @@ public static void nvkGetImageSubresourceLayout2EXT(VkDevice device, long image,
*
* {@code vkGetImageSubresourceLayout2EXT} behaves similarly to {@link VK10#vkGetImageSubresourceLayout GetImageSubresourceLayout}, with the ability to specify extended inputs via chained input structures, and to return extended information via chained output structures.
*
+ * It is legal to call {@code vkGetImageSubresourceLayout2EXT} with a {@code image} created with {@code tiling} equal to {@link VK10#VK_IMAGE_TILING_OPTIMAL IMAGE_TILING_OPTIMAL}, but the members of {@link VkImageSubresource2EXT}{@code ::imageSubresource} will have undefined values in this case.
+ *
+ * Note
+ *
+ *
Structures chained from {@link VkImageSubresource2EXT}{@code ::pNext} will also be updated when {@code tiling} is equal to {@link VK10#VK_IMAGE_TILING_OPTIMAL IMAGE_TILING_OPTIMAL}.
+ *
+ *
* Valid Usage
*
*
- * - {@code image} must have been created with {@code tiling} equal to {@link VK10#VK_IMAGE_TILING_LINEAR IMAGE_TILING_LINEAR} or {@link EXTImageDrmFormatModifier#VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT}
* - The {@code aspectMask} member of {@code pSubresource} must only have a single bit set
* - The {@code mipLevel} member of {@code pSubresource} must be less than the {@code mipLevels} specified in {@link VkImageCreateInfo} when {@code image} was created
* - The {@code arrayLayer} member of {@code pSubresource} must be less than the {@code arrayLayers} specified in {@link VkImageCreateInfo} when {@code image} was created
@@ -229,6 +235,7 @@ public static void nvkGetImageSubresourceLayout2EXT(VkDevice device, long image,
* - If {@code format} does not contain a stencil or depth component, the {@code aspectMask} member of {@code pSubresource} must not contain {@link VK10#VK_IMAGE_ASPECT_DEPTH_BIT IMAGE_ASPECT_DEPTH_BIT} or {@link VK10#VK_IMAGE_ASPECT_STENCIL_BIT IMAGE_ASPECT_STENCIL_BIT}
* - If the {@code tiling} of the {@code image} is {@link VK10#VK_IMAGE_TILING_LINEAR IMAGE_TILING_LINEAR} and its {@code format} is a multi-planar format with two planes, the {@code aspectMask} member of {@code pSubresource} must be {@link VK11#VK_IMAGE_ASPECT_PLANE_0_BIT IMAGE_ASPECT_PLANE_0_BIT} or {@link VK11#VK_IMAGE_ASPECT_PLANE_1_BIT IMAGE_ASPECT_PLANE_1_BIT}
* - If the {@code tiling} of the {@code image} is {@link VK10#VK_IMAGE_TILING_LINEAR IMAGE_TILING_LINEAR} and its {@code format} is a multi-planar format with three planes, the {@code aspectMask} member of {@code pSubresource} must be {@link VK11#VK_IMAGE_ASPECT_PLANE_0_BIT IMAGE_ASPECT_PLANE_0_BIT}, {@link VK11#VK_IMAGE_ASPECT_PLANE_1_BIT IMAGE_ASPECT_PLANE_1_BIT} or {@link VK11#VK_IMAGE_ASPECT_PLANE_2_BIT IMAGE_ASPECT_PLANE_2_BIT}
+ * - If {@code image} was created with the {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID} external memory handle type, then {@code image} must be bound to memory
* - If the {@code tiling} of the {@code image} is {@link EXTImageDrmFormatModifier#VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT}, then the {@code aspectMask} member of {@code pSubresource} must be
VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT
and the index i must be less than the {@link VkDrmFormatModifierPropertiesEXT}{@code ::drmFormatModifierPlaneCount} associated with the image’s {@code format} and {@link VkImageDrmFormatModifierPropertiesEXT}{@code ::drmFormatModifier}
*
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTMeshShader.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTMeshShader.java
index 9d221afa5c..81867d5f6a 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTMeshShader.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTMeshShader.java
@@ -202,7 +202,6 @@ protected EXTMeshShader() {
* If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* A valid pipeline must be bound to the pipeline bind point used by this command
- * If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link VK10#VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link VK10#VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -241,9 +240,27 @@ protected EXTMeshShader() {
* If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
* If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
* If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be {@link VK10#VK_STENCIL_OP_KEEP STENCIL_OP_KEEP}
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_VIEWPORT DYNAMIC_STATE_VIEWPORT} dynamic state enabled then {@link VK10#vkCmdSetViewport CmdSetViewport} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_SCISSOR DYNAMIC_STATE_SCISSOR} dynamic state enabled then {@link VK10#vkCmdSetScissor CmdSetScissor} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_LINE_WIDTH DYNAMIC_STATE_LINE_WIDTH} dynamic state enabled then {@link VK10#vkCmdSetLineWidth CmdSetLineWidth} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BIAS DYNAMIC_STATE_DEPTH_BIAS} dynamic state enabled then {@link VK10#vkCmdSetDepthBias CmdSetDepthBias} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_BLEND_CONSTANTS DYNAMIC_STATE_BLEND_CONSTANTS} dynamic state enabled then {@link VK10#vkCmdSetBlendConstants CmdSetBlendConstants} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BOUNDS DYNAMIC_STATE_DEPTH_BOUNDS} dynamic state enabled then {@link VK10#vkCmdSetDepthBounds CmdSetDepthBounds} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK DYNAMIC_STATE_STENCIL_COMPARE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilCompareMask CmdSetStencilCompareMask} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_WRITE_MASK DYNAMIC_STATE_STENCIL_WRITE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilWriteMask CmdSetStencilWriteMask} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_REFERENCE DYNAMIC_STATE_STENCIL_REFERENCE} dynamic state enabled then {@link VK10#vkCmdSetStencilReference CmdSetStencilReference} must have been called in the current command buffer prior to this drawing command
* If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to {@link VkPhysicalDeviceMultiviewProperties}{@code ::maxMultiviewInstanceIndex}
* If the bound graphics pipeline was created with {@link VkPipelineSampleLocationsStateCreateInfoEXT}{@code ::sampleLocationsEnable} set to {@link VK10#VK_TRUE TRUE} and the current subpass has a depth/stencil attachment, then that attachment must have been created with the {@link EXTSampleLocations#VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT} bit set
* If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} dynamic state enabled then {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_CULL_MODE DYNAMIC_STATE_CULL_MODE} dynamic state enabled then {@link VK13#vkCmdSetCullMode CmdSetCullMode} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_FRONT_FACE DYNAMIC_STATE_FRONT_FACE} dynamic state enabled then {@link VK13#vkCmdSetFrontFace CmdSetFrontFace} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY DYNAMIC_STATE_PRIMITIVE_TOPOLOGY} dynamic state enabled then {@link VK13#vkCmdSetPrimitiveTopology CmdSetPrimitiveTopology} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE DYNAMIC_STATE_DEPTH_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthTestEnable CmdSetDepthTestEnable} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE DYNAMIC_STATE_DEPTH_WRITE_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthWriteEnable CmdSetDepthWriteEnable} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_COMPARE_OP DYNAMIC_STATE_DEPTH_COMPARE_OP} dynamic state enabled then {@link VK13#vkCmdSetDepthCompareOp CmdSetDepthCompareOp} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthBoundsTestEnable CmdSetDepthBoundsTestEnable} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE DYNAMIC_STATE_STENCIL_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetStencilTestEnable CmdSetStencilTestEnable} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_OP DYNAMIC_STATE_STENCIL_OP} dynamic state enabled then {@link VK13#vkCmdSetStencilOp CmdSetStencilOp} must have been called in the current command buffer prior to this drawing command
* If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::scissorCount} of the pipeline
* If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::viewportCount} of the pipeline
* If the bound graphics pipeline state was created with both the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} and {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic states enabled then both {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} and {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -271,7 +288,7 @@ protected EXTMeshShader() {
* If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::colorAttachmentCount} greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must have the corresponding element of {@link VkPipelineRenderingCreateInfo}{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then {@link EXTColorWriteEnable#vkCmdSetColorWriteEnableEXT CmdSetColorWriteEnableEXT} must have been called in the current command buffer prior to this drawing command
* If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the {@link VkPipelineColorBlendStateCreateInfo}{@code ::attachmentCount} of the currently bound graphics pipeline
- * If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command for each discard rectangle in {@link VkPipelineDiscardRectangleStateCreateInfoEXT}{@code ::discardRectangleCount}
* If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
* If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
@@ -287,37 +304,38 @@ protected EXTMeshShader() {
* If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline must have been created with a {@link VkGraphicsPipelineCreateInfo}{@code ::renderPass} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE}
* If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, rasterization discard must not be enabled
* If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, the bound graphics pipeline must not have been created with a non-zero value in {@link VkPipelineRasterizationStateStreamCreateInfoEXT}{@code ::rasterizationStream}
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTLineRasterization#VK_DYNAMIC_STATE_LINE_STIPPLE_EXT DYNAMIC_STATE_LINE_STIPPLE_EXT} dynamic state enabled then {@link EXTLineRasterization#vkCmdSetLineStippleEXT CmdSetLineStippleEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRepresentativeFragmentTestEnableNV CmdSetRepresentativeFragmentTestEnableNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} set {@code pColorBlendEnables} for any attachment to {@link VK10#VK_TRUE TRUE}, then for those attachments in the subpass the corresponding image view’s format features must contain {@link VK10#VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT}
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must follow the rules for a zero-attachment subpass
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state disabled, then the {@code samples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must be greater or equal to the {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -337,7 +355,7 @@ protected EXTMeshShader() {
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link VK10#VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} set {@code coverageModulationTableEnable} to {@link VK10#VK_TRUE TRUE}, then the {@code coverageModulationTableCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
* If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
* If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by {@link NVCoverageReductionMode#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV}
* If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportSwizzleStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
* If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
@@ -348,6 +366,14 @@ protected EXTMeshShader() {
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link VK10#VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT LINE_RASTERIZATION_MODE_DEFAULT_EXT}, then the {@code stippledRectangularLines} feature must be enabled and {@link VkPhysicalDeviceLimits}{@code ::strictLines} must be VK_TRUE
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must be {@link EXTConservativeRasterization#VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT}
* If the currently bound pipeline was created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link VK10#VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link VK10#VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}, then Mesh Shader Queries must not be active
+ * If dynamic state was inherited from {@link VkCommandBufferInheritanceViewportScissorInfoNV}, it must be set in the current command buffer prior to this drawing command
+ *
+ *
+ *
+ * - The bound graphics pipeline must not have been created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link VK10#VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link VK10#VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}
+ * - Transform Feedback Queries must not be active
+ * - Primitives Generated Queries must not be active
+ * - The {@code pipelineStatistics} member used to create any active Pipeline Statistics Query must not contain {@link VK10#VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT}, or {@link VK10#VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT}
*
*
*
@@ -446,7 +472,6 @@ public static void vkCmdDrawMeshTasksEXT(VkCommandBuffer commandBuffer, @NativeT
* - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* - If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* - A valid pipeline must be bound to the pipeline bind point used by this command
- * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* - There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link VK10#VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link VK10#VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -485,9 +510,27 @@ public static void vkCmdDrawMeshTasksEXT(VkCommandBuffer commandBuffer, @NativeT
* - If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be {@link VK10#VK_STENCIL_OP_KEEP STENCIL_OP_KEEP}
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_VIEWPORT DYNAMIC_STATE_VIEWPORT} dynamic state enabled then {@link VK10#vkCmdSetViewport CmdSetViewport} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_SCISSOR DYNAMIC_STATE_SCISSOR} dynamic state enabled then {@link VK10#vkCmdSetScissor CmdSetScissor} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_LINE_WIDTH DYNAMIC_STATE_LINE_WIDTH} dynamic state enabled then {@link VK10#vkCmdSetLineWidth CmdSetLineWidth} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BIAS DYNAMIC_STATE_DEPTH_BIAS} dynamic state enabled then {@link VK10#vkCmdSetDepthBias CmdSetDepthBias} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_BLEND_CONSTANTS DYNAMIC_STATE_BLEND_CONSTANTS} dynamic state enabled then {@link VK10#vkCmdSetBlendConstants CmdSetBlendConstants} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BOUNDS DYNAMIC_STATE_DEPTH_BOUNDS} dynamic state enabled then {@link VK10#vkCmdSetDepthBounds CmdSetDepthBounds} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK DYNAMIC_STATE_STENCIL_COMPARE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilCompareMask CmdSetStencilCompareMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_WRITE_MASK DYNAMIC_STATE_STENCIL_WRITE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilWriteMask CmdSetStencilWriteMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_REFERENCE DYNAMIC_STATE_STENCIL_REFERENCE} dynamic state enabled then {@link VK10#vkCmdSetStencilReference CmdSetStencilReference} must have been called in the current command buffer prior to this drawing command
* - If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to {@link VkPhysicalDeviceMultiviewProperties}{@code ::maxMultiviewInstanceIndex}
* - If the bound graphics pipeline was created with {@link VkPipelineSampleLocationsStateCreateInfoEXT}{@code ::sampleLocationsEnable} set to {@link VK10#VK_TRUE TRUE} and the current subpass has a depth/stencil attachment, then that attachment must have been created with the {@link EXTSampleLocations#VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT} bit set
* - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} dynamic state enabled then {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_CULL_MODE DYNAMIC_STATE_CULL_MODE} dynamic state enabled then {@link VK13#vkCmdSetCullMode CmdSetCullMode} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_FRONT_FACE DYNAMIC_STATE_FRONT_FACE} dynamic state enabled then {@link VK13#vkCmdSetFrontFace CmdSetFrontFace} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY DYNAMIC_STATE_PRIMITIVE_TOPOLOGY} dynamic state enabled then {@link VK13#vkCmdSetPrimitiveTopology CmdSetPrimitiveTopology} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE DYNAMIC_STATE_DEPTH_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthTestEnable CmdSetDepthTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE DYNAMIC_STATE_DEPTH_WRITE_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthWriteEnable CmdSetDepthWriteEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_COMPARE_OP DYNAMIC_STATE_DEPTH_COMPARE_OP} dynamic state enabled then {@link VK13#vkCmdSetDepthCompareOp CmdSetDepthCompareOp} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthBoundsTestEnable CmdSetDepthBoundsTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE DYNAMIC_STATE_STENCIL_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetStencilTestEnable CmdSetStencilTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_OP DYNAMIC_STATE_STENCIL_OP} dynamic state enabled then {@link VK13#vkCmdSetStencilOp CmdSetStencilOp} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::scissorCount} of the pipeline
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::viewportCount} of the pipeline
* - If the bound graphics pipeline state was created with both the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} and {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic states enabled then both {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} and {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -515,7 +558,7 @@ public static void vkCmdDrawMeshTasksEXT(VkCommandBuffer commandBuffer, @NativeT
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::colorAttachmentCount} greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must have the corresponding element of {@link VkPipelineRenderingCreateInfo}{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then {@link EXTColorWriteEnable#vkCmdSetColorWriteEnableEXT CmdSetColorWriteEnableEXT} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the {@link VkPipelineColorBlendStateCreateInfo}{@code ::attachmentCount} of the currently bound graphics pipeline
- * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command for each discard rectangle in {@link VkPipelineDiscardRectangleStateCreateInfoEXT}{@code ::discardRectangleCount}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
@@ -531,37 +574,38 @@ public static void vkCmdDrawMeshTasksEXT(VkCommandBuffer commandBuffer, @NativeT
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline must have been created with a {@link VkGraphicsPipelineCreateInfo}{@code ::renderPass} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE}
* - If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, rasterization discard must not be enabled
* - If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, the bound graphics pipeline must not have been created with a non-zero value in {@link VkPipelineRasterizationStateStreamCreateInfoEXT}{@code ::rasterizationStream}
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTLineRasterization#VK_DYNAMIC_STATE_LINE_STIPPLE_EXT DYNAMIC_STATE_LINE_STIPPLE_EXT} dynamic state enabled then {@link EXTLineRasterization#vkCmdSetLineStippleEXT CmdSetLineStippleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRepresentativeFragmentTestEnableNV CmdSetRepresentativeFragmentTestEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} set {@code pColorBlendEnables} for any attachment to {@link VK10#VK_TRUE TRUE}, then for those attachments in the subpass the corresponding image view’s format features must contain {@link VK10#VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must follow the rules for a zero-attachment subpass
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state disabled, then the {@code samples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must be greater or equal to the {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -581,7 +625,7 @@ public static void vkCmdDrawMeshTasksEXT(VkCommandBuffer commandBuffer, @NativeT
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link VK10#VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} set {@code coverageModulationTableEnable} to {@link VK10#VK_TRUE TRUE}, then the {@code coverageModulationTableCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
* - If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
* - If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by {@link NVCoverageReductionMode#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportSwizzleStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
@@ -592,6 +636,14 @@ public static void vkCmdDrawMeshTasksEXT(VkCommandBuffer commandBuffer, @NativeT
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link VK10#VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT LINE_RASTERIZATION_MODE_DEFAULT_EXT}, then the {@code stippledRectangularLines} feature must be enabled and {@link VkPhysicalDeviceLimits}{@code ::strictLines} must be VK_TRUE
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must be {@link EXTConservativeRasterization#VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT}
* - If the currently bound pipeline was created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link VK10#VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link VK10#VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}, then Mesh Shader Queries must not be active
+ * - If dynamic state was inherited from {@link VkCommandBufferInheritanceViewportScissorInfoNV}, it must be set in the current command buffer prior to this drawing command
+ *
+ *
+ *
+ * - The bound graphics pipeline must not have been created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link VK10#VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link VK10#VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}
+ * - Transform Feedback Queries must not be active
+ * - Primitives Generated Queries must not be active
+ * - The {@code pipelineStatistics} member used to create any active Pipeline Statistics Query must not contain {@link VK10#VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT}, or {@link VK10#VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT}
*
*
*
@@ -696,7 +748,6 @@ public static void vkCmdDrawMeshTasksIndirectEXT(VkCommandBuffer commandBuffer,
* - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* - If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* - A valid pipeline must be bound to the pipeline bind point used by this command
- * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* - There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link VK10#VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link VK10#VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -735,9 +786,27 @@ public static void vkCmdDrawMeshTasksIndirectEXT(VkCommandBuffer commandBuffer,
* - If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be {@link VK10#VK_STENCIL_OP_KEEP STENCIL_OP_KEEP}
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_VIEWPORT DYNAMIC_STATE_VIEWPORT} dynamic state enabled then {@link VK10#vkCmdSetViewport CmdSetViewport} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_SCISSOR DYNAMIC_STATE_SCISSOR} dynamic state enabled then {@link VK10#vkCmdSetScissor CmdSetScissor} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_LINE_WIDTH DYNAMIC_STATE_LINE_WIDTH} dynamic state enabled then {@link VK10#vkCmdSetLineWidth CmdSetLineWidth} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BIAS DYNAMIC_STATE_DEPTH_BIAS} dynamic state enabled then {@link VK10#vkCmdSetDepthBias CmdSetDepthBias} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_BLEND_CONSTANTS DYNAMIC_STATE_BLEND_CONSTANTS} dynamic state enabled then {@link VK10#vkCmdSetBlendConstants CmdSetBlendConstants} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BOUNDS DYNAMIC_STATE_DEPTH_BOUNDS} dynamic state enabled then {@link VK10#vkCmdSetDepthBounds CmdSetDepthBounds} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK DYNAMIC_STATE_STENCIL_COMPARE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilCompareMask CmdSetStencilCompareMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_WRITE_MASK DYNAMIC_STATE_STENCIL_WRITE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilWriteMask CmdSetStencilWriteMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_REFERENCE DYNAMIC_STATE_STENCIL_REFERENCE} dynamic state enabled then {@link VK10#vkCmdSetStencilReference CmdSetStencilReference} must have been called in the current command buffer prior to this drawing command
* - If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to {@link VkPhysicalDeviceMultiviewProperties}{@code ::maxMultiviewInstanceIndex}
* - If the bound graphics pipeline was created with {@link VkPipelineSampleLocationsStateCreateInfoEXT}{@code ::sampleLocationsEnable} set to {@link VK10#VK_TRUE TRUE} and the current subpass has a depth/stencil attachment, then that attachment must have been created with the {@link EXTSampleLocations#VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT} bit set
* - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} dynamic state enabled then {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_CULL_MODE DYNAMIC_STATE_CULL_MODE} dynamic state enabled then {@link VK13#vkCmdSetCullMode CmdSetCullMode} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_FRONT_FACE DYNAMIC_STATE_FRONT_FACE} dynamic state enabled then {@link VK13#vkCmdSetFrontFace CmdSetFrontFace} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY DYNAMIC_STATE_PRIMITIVE_TOPOLOGY} dynamic state enabled then {@link VK13#vkCmdSetPrimitiveTopology CmdSetPrimitiveTopology} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE DYNAMIC_STATE_DEPTH_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthTestEnable CmdSetDepthTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE DYNAMIC_STATE_DEPTH_WRITE_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthWriteEnable CmdSetDepthWriteEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_COMPARE_OP DYNAMIC_STATE_DEPTH_COMPARE_OP} dynamic state enabled then {@link VK13#vkCmdSetDepthCompareOp CmdSetDepthCompareOp} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthBoundsTestEnable CmdSetDepthBoundsTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE DYNAMIC_STATE_STENCIL_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetStencilTestEnable CmdSetStencilTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_OP DYNAMIC_STATE_STENCIL_OP} dynamic state enabled then {@link VK13#vkCmdSetStencilOp CmdSetStencilOp} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::scissorCount} of the pipeline
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::viewportCount} of the pipeline
* - If the bound graphics pipeline state was created with both the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} and {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic states enabled then both {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} and {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -765,7 +834,7 @@ public static void vkCmdDrawMeshTasksIndirectEXT(VkCommandBuffer commandBuffer,
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::colorAttachmentCount} greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must have the corresponding element of {@link VkPipelineRenderingCreateInfo}{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then {@link EXTColorWriteEnable#vkCmdSetColorWriteEnableEXT CmdSetColorWriteEnableEXT} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the {@link VkPipelineColorBlendStateCreateInfo}{@code ::attachmentCount} of the currently bound graphics pipeline
- * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command for each discard rectangle in {@link VkPipelineDiscardRectangleStateCreateInfoEXT}{@code ::discardRectangleCount}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
@@ -781,37 +850,38 @@ public static void vkCmdDrawMeshTasksIndirectEXT(VkCommandBuffer commandBuffer,
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline must have been created with a {@link VkGraphicsPipelineCreateInfo}{@code ::renderPass} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE}
* - If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, rasterization discard must not be enabled
* - If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, the bound graphics pipeline must not have been created with a non-zero value in {@link VkPipelineRasterizationStateStreamCreateInfoEXT}{@code ::rasterizationStream}
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTLineRasterization#VK_DYNAMIC_STATE_LINE_STIPPLE_EXT DYNAMIC_STATE_LINE_STIPPLE_EXT} dynamic state enabled then {@link EXTLineRasterization#vkCmdSetLineStippleEXT CmdSetLineStippleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRepresentativeFragmentTestEnableNV CmdSetRepresentativeFragmentTestEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} set {@code pColorBlendEnables} for any attachment to {@link VK10#VK_TRUE TRUE}, then for those attachments in the subpass the corresponding image view’s format features must contain {@link VK10#VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must follow the rules for a zero-attachment subpass
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state disabled, then the {@code samples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must be greater or equal to the {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -831,7 +901,7 @@ public static void vkCmdDrawMeshTasksIndirectEXT(VkCommandBuffer commandBuffer,
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link VK10#VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} set {@code coverageModulationTableEnable} to {@link VK10#VK_TRUE TRUE}, then the {@code coverageModulationTableCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
* - If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
* - If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by {@link NVCoverageReductionMode#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportSwizzleStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
@@ -842,6 +912,14 @@ public static void vkCmdDrawMeshTasksIndirectEXT(VkCommandBuffer commandBuffer,
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link VK10#VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT LINE_RASTERIZATION_MODE_DEFAULT_EXT}, then the {@code stippledRectangularLines} feature must be enabled and {@link VkPhysicalDeviceLimits}{@code ::strictLines} must be VK_TRUE
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must be {@link EXTConservativeRasterization#VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT}
* - If the currently bound pipeline was created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link VK10#VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link VK10#VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}, then Mesh Shader Queries must not be active
+ * - If dynamic state was inherited from {@link VkCommandBufferInheritanceViewportScissorInfoNV}, it must be set in the current command buffer prior to this drawing command
+ *
+ *
+ *
+ * - The bound graphics pipeline must not have been created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link VK10#VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link VK10#VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}
+ * - Transform Feedback Queries must not be active
+ * - Primitives Generated Queries must not be active
+ * - The {@code pipelineStatistics} member used to create any active Pipeline Statistics Query must not contain {@link VK10#VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT}, or {@link VK10#VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT}
*
*
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTMultiDraw.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTMultiDraw.java
index 94e664d853..32bb54c60d 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTMultiDraw.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTMultiDraw.java
@@ -142,7 +142,6 @@ public static void nvkCmdDrawMultiEXT(VkCommandBuffer commandBuffer, int drawCou
* - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* - If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* - A valid pipeline must be bound to the pipeline bind point used by this command
- * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* - There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link VK10#VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link VK10#VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -181,9 +180,27 @@ public static void nvkCmdDrawMultiEXT(VkCommandBuffer commandBuffer, int drawCou
* - If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be {@link VK10#VK_STENCIL_OP_KEEP STENCIL_OP_KEEP}
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_VIEWPORT DYNAMIC_STATE_VIEWPORT} dynamic state enabled then {@link VK10#vkCmdSetViewport CmdSetViewport} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_SCISSOR DYNAMIC_STATE_SCISSOR} dynamic state enabled then {@link VK10#vkCmdSetScissor CmdSetScissor} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_LINE_WIDTH DYNAMIC_STATE_LINE_WIDTH} dynamic state enabled then {@link VK10#vkCmdSetLineWidth CmdSetLineWidth} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BIAS DYNAMIC_STATE_DEPTH_BIAS} dynamic state enabled then {@link VK10#vkCmdSetDepthBias CmdSetDepthBias} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_BLEND_CONSTANTS DYNAMIC_STATE_BLEND_CONSTANTS} dynamic state enabled then {@link VK10#vkCmdSetBlendConstants CmdSetBlendConstants} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BOUNDS DYNAMIC_STATE_DEPTH_BOUNDS} dynamic state enabled then {@link VK10#vkCmdSetDepthBounds CmdSetDepthBounds} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK DYNAMIC_STATE_STENCIL_COMPARE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilCompareMask CmdSetStencilCompareMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_WRITE_MASK DYNAMIC_STATE_STENCIL_WRITE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilWriteMask CmdSetStencilWriteMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_REFERENCE DYNAMIC_STATE_STENCIL_REFERENCE} dynamic state enabled then {@link VK10#vkCmdSetStencilReference CmdSetStencilReference} must have been called in the current command buffer prior to this drawing command
* - If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to {@link VkPhysicalDeviceMultiviewProperties}{@code ::maxMultiviewInstanceIndex}
* - If the bound graphics pipeline was created with {@link VkPipelineSampleLocationsStateCreateInfoEXT}{@code ::sampleLocationsEnable} set to {@link VK10#VK_TRUE TRUE} and the current subpass has a depth/stencil attachment, then that attachment must have been created with the {@link EXTSampleLocations#VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT} bit set
* - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} dynamic state enabled then {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_CULL_MODE DYNAMIC_STATE_CULL_MODE} dynamic state enabled then {@link VK13#vkCmdSetCullMode CmdSetCullMode} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_FRONT_FACE DYNAMIC_STATE_FRONT_FACE} dynamic state enabled then {@link VK13#vkCmdSetFrontFace CmdSetFrontFace} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY DYNAMIC_STATE_PRIMITIVE_TOPOLOGY} dynamic state enabled then {@link VK13#vkCmdSetPrimitiveTopology CmdSetPrimitiveTopology} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE DYNAMIC_STATE_DEPTH_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthTestEnable CmdSetDepthTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE DYNAMIC_STATE_DEPTH_WRITE_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthWriteEnable CmdSetDepthWriteEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_COMPARE_OP DYNAMIC_STATE_DEPTH_COMPARE_OP} dynamic state enabled then {@link VK13#vkCmdSetDepthCompareOp CmdSetDepthCompareOp} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthBoundsTestEnable CmdSetDepthBoundsTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE DYNAMIC_STATE_STENCIL_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetStencilTestEnable CmdSetStencilTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_OP DYNAMIC_STATE_STENCIL_OP} dynamic state enabled then {@link VK13#vkCmdSetStencilOp CmdSetStencilOp} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::scissorCount} of the pipeline
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::viewportCount} of the pipeline
* - If the bound graphics pipeline state was created with both the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} and {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic states enabled then both {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} and {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -211,7 +228,7 @@ public static void nvkCmdDrawMultiEXT(VkCommandBuffer commandBuffer, int drawCou
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::colorAttachmentCount} greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must have the corresponding element of {@link VkPipelineRenderingCreateInfo}{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then {@link EXTColorWriteEnable#vkCmdSetColorWriteEnableEXT CmdSetColorWriteEnableEXT} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the {@link VkPipelineColorBlendStateCreateInfo}{@code ::attachmentCount} of the currently bound graphics pipeline
- * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command for each discard rectangle in {@link VkPipelineDiscardRectangleStateCreateInfoEXT}{@code ::discardRectangleCount}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
@@ -227,37 +244,38 @@ public static void nvkCmdDrawMultiEXT(VkCommandBuffer commandBuffer, int drawCou
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline must have been created with a {@link VkGraphicsPipelineCreateInfo}{@code ::renderPass} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE}
* - If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, rasterization discard must not be enabled
* - If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, the bound graphics pipeline must not have been created with a non-zero value in {@link VkPipelineRasterizationStateStreamCreateInfoEXT}{@code ::rasterizationStream}
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTLineRasterization#VK_DYNAMIC_STATE_LINE_STIPPLE_EXT DYNAMIC_STATE_LINE_STIPPLE_EXT} dynamic state enabled then {@link EXTLineRasterization#vkCmdSetLineStippleEXT CmdSetLineStippleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRepresentativeFragmentTestEnableNV CmdSetRepresentativeFragmentTestEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} set {@code pColorBlendEnables} for any attachment to {@link VK10#VK_TRUE TRUE}, then for those attachments in the subpass the corresponding image view’s format features must contain {@link VK10#VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must follow the rules for a zero-attachment subpass
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state disabled, then the {@code samples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must be greater or equal to the {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -277,7 +295,7 @@ public static void nvkCmdDrawMultiEXT(VkCommandBuffer commandBuffer, int drawCou
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link VK10#VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} set {@code coverageModulationTableEnable} to {@link VK10#VK_TRUE TRUE}, then the {@code coverageModulationTableCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
* - If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
* - If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by {@link NVCoverageReductionMode#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportSwizzleStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
@@ -288,6 +306,7 @@ public static void nvkCmdDrawMultiEXT(VkCommandBuffer commandBuffer, int drawCou
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link VK10#VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT LINE_RASTERIZATION_MODE_DEFAULT_EXT}, then the {@code stippledRectangularLines} feature must be enabled and {@link VkPhysicalDeviceLimits}{@code ::strictLines} must be VK_TRUE
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must be {@link EXTConservativeRasterization#VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT}
* - If the currently bound pipeline was created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link VK10#VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link VK10#VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}, then Mesh Shader Queries must not be active
+ * - If dynamic state was inherited from {@link VkCommandBufferInheritanceViewportScissorInfoNV}, it must be set in the current command buffer prior to this drawing command
*
*
*
@@ -410,7 +429,6 @@ public static void nvkCmdDrawMultiIndexedEXT(VkCommandBuffer commandBuffer, int
* - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* - If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* - A valid pipeline must be bound to the pipeline bind point used by this command
- * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* - There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link VK10#VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link VK10#VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -449,9 +467,27 @@ public static void nvkCmdDrawMultiIndexedEXT(VkCommandBuffer commandBuffer, int
* - If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be {@link VK10#VK_STENCIL_OP_KEEP STENCIL_OP_KEEP}
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_VIEWPORT DYNAMIC_STATE_VIEWPORT} dynamic state enabled then {@link VK10#vkCmdSetViewport CmdSetViewport} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_SCISSOR DYNAMIC_STATE_SCISSOR} dynamic state enabled then {@link VK10#vkCmdSetScissor CmdSetScissor} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_LINE_WIDTH DYNAMIC_STATE_LINE_WIDTH} dynamic state enabled then {@link VK10#vkCmdSetLineWidth CmdSetLineWidth} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BIAS DYNAMIC_STATE_DEPTH_BIAS} dynamic state enabled then {@link VK10#vkCmdSetDepthBias CmdSetDepthBias} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_BLEND_CONSTANTS DYNAMIC_STATE_BLEND_CONSTANTS} dynamic state enabled then {@link VK10#vkCmdSetBlendConstants CmdSetBlendConstants} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BOUNDS DYNAMIC_STATE_DEPTH_BOUNDS} dynamic state enabled then {@link VK10#vkCmdSetDepthBounds CmdSetDepthBounds} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK DYNAMIC_STATE_STENCIL_COMPARE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilCompareMask CmdSetStencilCompareMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_WRITE_MASK DYNAMIC_STATE_STENCIL_WRITE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilWriteMask CmdSetStencilWriteMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_REFERENCE DYNAMIC_STATE_STENCIL_REFERENCE} dynamic state enabled then {@link VK10#vkCmdSetStencilReference CmdSetStencilReference} must have been called in the current command buffer prior to this drawing command
* - If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to {@link VkPhysicalDeviceMultiviewProperties}{@code ::maxMultiviewInstanceIndex}
* - If the bound graphics pipeline was created with {@link VkPipelineSampleLocationsStateCreateInfoEXT}{@code ::sampleLocationsEnable} set to {@link VK10#VK_TRUE TRUE} and the current subpass has a depth/stencil attachment, then that attachment must have been created with the {@link EXTSampleLocations#VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT} bit set
* - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} dynamic state enabled then {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_CULL_MODE DYNAMIC_STATE_CULL_MODE} dynamic state enabled then {@link VK13#vkCmdSetCullMode CmdSetCullMode} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_FRONT_FACE DYNAMIC_STATE_FRONT_FACE} dynamic state enabled then {@link VK13#vkCmdSetFrontFace CmdSetFrontFace} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY DYNAMIC_STATE_PRIMITIVE_TOPOLOGY} dynamic state enabled then {@link VK13#vkCmdSetPrimitiveTopology CmdSetPrimitiveTopology} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE DYNAMIC_STATE_DEPTH_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthTestEnable CmdSetDepthTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE DYNAMIC_STATE_DEPTH_WRITE_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthWriteEnable CmdSetDepthWriteEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_COMPARE_OP DYNAMIC_STATE_DEPTH_COMPARE_OP} dynamic state enabled then {@link VK13#vkCmdSetDepthCompareOp CmdSetDepthCompareOp} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthBoundsTestEnable CmdSetDepthBoundsTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE DYNAMIC_STATE_STENCIL_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetStencilTestEnable CmdSetStencilTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_OP DYNAMIC_STATE_STENCIL_OP} dynamic state enabled then {@link VK13#vkCmdSetStencilOp CmdSetStencilOp} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::scissorCount} of the pipeline
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::viewportCount} of the pipeline
* - If the bound graphics pipeline state was created with both the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} and {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic states enabled then both {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} and {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -479,7 +515,7 @@ public static void nvkCmdDrawMultiIndexedEXT(VkCommandBuffer commandBuffer, int
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::colorAttachmentCount} greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must have the corresponding element of {@link VkPipelineRenderingCreateInfo}{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then {@link EXTColorWriteEnable#vkCmdSetColorWriteEnableEXT CmdSetColorWriteEnableEXT} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the {@link VkPipelineColorBlendStateCreateInfo}{@code ::attachmentCount} of the currently bound graphics pipeline
- * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command for each discard rectangle in {@link VkPipelineDiscardRectangleStateCreateInfoEXT}{@code ::discardRectangleCount}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
@@ -495,37 +531,38 @@ public static void nvkCmdDrawMultiIndexedEXT(VkCommandBuffer commandBuffer, int
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline must have been created with a {@link VkGraphicsPipelineCreateInfo}{@code ::renderPass} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE}
* - If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, rasterization discard must not be enabled
* - If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, the bound graphics pipeline must not have been created with a non-zero value in {@link VkPipelineRasterizationStateStreamCreateInfoEXT}{@code ::rasterizationStream}
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTLineRasterization#VK_DYNAMIC_STATE_LINE_STIPPLE_EXT DYNAMIC_STATE_LINE_STIPPLE_EXT} dynamic state enabled then {@link EXTLineRasterization#vkCmdSetLineStippleEXT CmdSetLineStippleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRepresentativeFragmentTestEnableNV CmdSetRepresentativeFragmentTestEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} set {@code pColorBlendEnables} for any attachment to {@link VK10#VK_TRUE TRUE}, then for those attachments in the subpass the corresponding image view’s format features must contain {@link VK10#VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must follow the rules for a zero-attachment subpass
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state disabled, then the {@code samples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must be greater or equal to the {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -545,7 +582,7 @@ public static void nvkCmdDrawMultiIndexedEXT(VkCommandBuffer commandBuffer, int
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link VK10#VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} set {@code coverageModulationTableEnable} to {@link VK10#VK_TRUE TRUE}, then the {@code coverageModulationTableCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
* - If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
* - If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by {@link NVCoverageReductionMode#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportSwizzleStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
@@ -556,6 +593,7 @@ public static void nvkCmdDrawMultiIndexedEXT(VkCommandBuffer commandBuffer, int
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link VK10#VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT LINE_RASTERIZATION_MODE_DEFAULT_EXT}, then the {@code stippledRectangularLines} feature must be enabled and {@link VkPhysicalDeviceLimits}{@code ::strictLines} must be VK_TRUE
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must be {@link EXTConservativeRasterization#VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT}
* - If the currently bound pipeline was created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link VK10#VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link VK10#VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}, then Mesh Shader Queries must not be active
+ * - If dynamic state was inherited from {@link VkCommandBufferInheritanceViewportScissorInfoNV}, it must be set in the current command buffer prior to this drawing command
*
*
*
@@ -579,8 +617,8 @@ public static void nvkCmdDrawMultiIndexedEXT(VkCommandBuffer commandBuffer, int
*
*
* - An index buffer must be bound
+ * - If {@code robustBufferAccess2} is not enabled,
(indexSize × (firstIndex + indexCount) + offset)
must be less than or equal to the size of the bound index buffer, with {@code indexSize} being based on the type specified by {@code indexType}, where the index buffer, {@code indexType}, and {@code offset} are specified via {@code vkCmdBindIndexBuffer}
* - The {@code multiDraw} feature must be enabled
- * (indexSize × (firstIndex + indexCount) + offset)
must be less than or equal to the size of the bound index buffer, with {@code indexSize} being based on the type specified by {@code indexType}, where the index buffer, {@code indexType}, and {@code offset} are specified via {@code vkCmdBindIndexBuffer}
* - {@code drawCount} must be less than {@link VkPhysicalDeviceMultiDrawPropertiesEXT}{@code ::maxMultiDrawCount}
* - If {@code drawCount} is greater than zero, {@code pIndexInfo} must be a valid pointer to memory containing one or more valid instances of {@link VkMultiDrawIndexedInfoEXT} structures
* - {@code stride} must be a multiple of 4
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTPipelineLibraryGroupHandles.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTPipelineLibraryGroupHandles.java
new file mode 100644
index 0000000000..d23d3a64e4
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTPipelineLibraryGroupHandles.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package org.lwjgl.vulkan;
+
+/**
+ * When using pipeline libraries in ray tracing pipelines, a library might get linked into different pipelines in an incremental way. An application can have a strategy where a ray tracing pipeline is comprised of N pipeline libraries and is later augumented by creating a new pipeline with N + 1 libraries. Without this extension, all group handles must be re-queried as the group handle is tied to the pipeline, not the library. This is problematic for applications which aim to decouple construction of record buffers and the linkage of ray tracing pipelines.
+ *
+ * To aid in this, this extension enables support for querying group handles directly from pipeline libraries. Group handles obtained from a library must remain bitwise identical in any {@code VkPipeline} that links to the library.
+ *
+ * With this feature, the extension also improves compatibility with DXR 1.1 AddToStateObject(), which guarantees that group handles returned remain bitwise identical between parent and child pipelines. In addition, querying group handles from COLLECTION objects is also supported with that API.
+ *
+ * VK_EXT_pipeline_library_group_handles
+ *
+ *
+ * - Name String
+ * - {@code VK_EXT_pipeline_library_group_handles}
+ * - Extension Type
+ * - Device extension
+ * - Registered Extension Number
+ * - 499
+ * - Revision
+ * - 1
+ * - Extension and Version Dependencies
+ *
+ * - Requires support for Vulkan 1.1
+ * - Requires {@link KHRRayTracingPipeline VK_KHR_ray_tracing_pipeline} to be enabled for any device-level functionality
+ * - Requires {@link KHRPipelineLibrary VK_KHR_pipeline_library} to be enabled for any device-level functionality
+ *
+ * - Contact
+ *
+ * - Extension Proposal
+ * - VK_EXT_pipeline_library_group_handles
+ *
+ *
+ * Other Extension Metadata
+ *
+ *
+ * - Last Modified Date
+ * - 2023-01-25
+ * - IP Status
+ * - No known IP claims.
+ * - Contributors
+ *
+ * - Hans-Kristian Arntzen, Valve
+ * - Stuart Smith, AMD
+ * - Ricardo Garcia, Igalia
+ * - Lionel Landwerlin, Intel
+ * - Eric Werness, NVIDIA
+ * - Daniel Koch, NVIDIA
+ *
+ *
+ */
+public final class EXTPipelineLibraryGroupHandles {
+
+ /** The extension specification version. */
+ public static final int VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION = 1;
+
+ /** The extension name. */
+ public static final String VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME = "VK_EXT_pipeline_library_group_handles";
+
+ /** Extends {@code VkStructureType}. */
+ public static final int VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000;
+
+ private EXTPipelineLibraryGroupHandles() {}
+
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTTexelBufferAlignment.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTTexelBufferAlignment.java
index 9b99e6c386..1c23c6c72d 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTTexelBufferAlignment.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTTexelBufferAlignment.java
@@ -10,7 +10,7 @@
*
* Promotion to Vulkan 1.3
*
- * Functionality in this extension is included in core Vulkan 1.3, with the EXT suffix omitted. However, only the properties structure is promoted. The feature structure is not promoted. The original type name is still available as an alias of the core functionality.
+ * Functionality in this extension is included in core Vulkan 1.3, with the EXT suffix omitted. However, only the properties structure is promoted. The feature structure is not promoted and {@code texelBufferAlignment} is enabled if when using a Vulkan 1.3 instance. The original type name is still available as an alias of the core functionality.
*
* VK_EXT_texel_buffer_alignment
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTTransformFeedback.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTTransformFeedback.java
index 249fe5a912..8d988e60dd 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTTransformFeedback.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTTransformFeedback.java
@@ -445,7 +445,13 @@ public static void vkCmdEndTransformFeedbackEXT(VkCommandBuffer commandBuffer, @
* - If the {@code queryType} used to create {@code queryPool} was {@link VK10#VK_QUERY_TYPE_PIPELINE_STATISTICS QUERY_TYPE_PIPELINE_STATISTICS} and any of the {@code pipelineStatistics} indicate compute operations, the {@code VkCommandPool} that {@code commandBuffer} was allocated from must support compute operations
* - {@code commandBuffer} must not be a protected command buffer
* - If called within a render pass instance, the sum of {@code query} and the number of bits set in the current subpass’s view mask must be less than or equal to the number of queries in {@code queryPool}
- * - If the {@code queryType} used to create {@code queryPool} was {@link KHRVideoEncodeQueue#VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR} the {@code VkCommandPool} that {@code commandBuffer} was allocated from must support video encode operations
+ * - If the {@code queryType} used to create {@code queryPool} was {@link KHRVideoQueue#VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR QUERY_TYPE_RESULT_STATUS_ONLY_KHR}, then the {@code VkCommandPool} that {@code commandBuffer} was allocated from must have been created with a queue family index that supports result status queries, as indicated by {@link VkQueueFamilyQueryResultStatusPropertiesKHR}{@code ::queryResultStatusSupport}
+ * - If there is a bound video session, then there must be no active queries
+ * - If the {@code queryType} used to create {@code queryPool} was {@link KHRVideoQueue#VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR QUERY_TYPE_RESULT_STATUS_ONLY_KHR} and there is a bound video session, then {@code queryPool} must have been created with a {@link VkVideoProfileInfoKHR} structure included in the {@code pNext} chain of {@link VkQueryPoolCreateInfo} identical to the one specified in {@link VkVideoSessionCreateInfoKHR}{@code ::pVideoProfile} the bound video session was created with
+ * - If the {@code queryType} used to create {@code queryPool} was {@link KHRVideoEncodeQueue#VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR}, then the {@code VkCommandPool} that {@code commandBuffer} was allocated from must support video encode operations
+ * - If the {@code queryType} used to create {@code queryPool} was {@link KHRVideoEncodeQueue#VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR}, then there must be a bound video session
+ * - If the {@code queryType} used to create {@code queryPool} was {@link KHRVideoEncodeQueue#VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR} and there is a bound video session, then {@code queryPool} must have been created with a {@link VkVideoProfileInfoKHR} structure included in the {@code pNext} chain of {@link VkQueryPoolCreateInfo} identical to the one specified in {@link VkVideoSessionCreateInfoKHR}{@code ::pVideoProfile} the bound video session was created with
+ * - If the {@code queryType} used to create {@code queryPool} was not {@link KHRVideoQueue#VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR QUERY_TYPE_RESULT_STATUS_ONLY_KHR} or {@link KHRVideoEncodeQueue#VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR}, then there must be no bound video session
* - If the {@code queryPool} was created with the same {@code queryType} as that of another active query within {@code commandBuffer}, then {@code index} must not match the index used for the active query
* - If the {@code queryType} used to create {@code queryPool} was {@link #VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT} the {@code VkCommandPool} that {@code commandBuffer} was allocated from must support graphics operations
* - If the {@code queryType} used to create {@code queryPool} was {@link #VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT} the {@code index} parameter must be less than {@link VkPhysicalDeviceTransformFeedbackPropertiesEXT}{@code ::maxTransformFeedbackStreams}
@@ -652,7 +658,6 @@ public static void vkCmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer, @Nativ
* - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* - If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* - A valid pipeline must be bound to the pipeline bind point used by this command
- * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* - There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link VK10#VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link VK10#VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -691,9 +696,27 @@ public static void vkCmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer, @Nativ
* - If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be {@link VK10#VK_STENCIL_OP_KEEP STENCIL_OP_KEEP}
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_VIEWPORT DYNAMIC_STATE_VIEWPORT} dynamic state enabled then {@link VK10#vkCmdSetViewport CmdSetViewport} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_SCISSOR DYNAMIC_STATE_SCISSOR} dynamic state enabled then {@link VK10#vkCmdSetScissor CmdSetScissor} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_LINE_WIDTH DYNAMIC_STATE_LINE_WIDTH} dynamic state enabled then {@link VK10#vkCmdSetLineWidth CmdSetLineWidth} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BIAS DYNAMIC_STATE_DEPTH_BIAS} dynamic state enabled then {@link VK10#vkCmdSetDepthBias CmdSetDepthBias} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_BLEND_CONSTANTS DYNAMIC_STATE_BLEND_CONSTANTS} dynamic state enabled then {@link VK10#vkCmdSetBlendConstants CmdSetBlendConstants} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BOUNDS DYNAMIC_STATE_DEPTH_BOUNDS} dynamic state enabled then {@link VK10#vkCmdSetDepthBounds CmdSetDepthBounds} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK DYNAMIC_STATE_STENCIL_COMPARE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilCompareMask CmdSetStencilCompareMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_WRITE_MASK DYNAMIC_STATE_STENCIL_WRITE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilWriteMask CmdSetStencilWriteMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_REFERENCE DYNAMIC_STATE_STENCIL_REFERENCE} dynamic state enabled then {@link VK10#vkCmdSetStencilReference CmdSetStencilReference} must have been called in the current command buffer prior to this drawing command
* - If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to {@link VkPhysicalDeviceMultiviewProperties}{@code ::maxMultiviewInstanceIndex}
* - If the bound graphics pipeline was created with {@link VkPipelineSampleLocationsStateCreateInfoEXT}{@code ::sampleLocationsEnable} set to {@link VK10#VK_TRUE TRUE} and the current subpass has a depth/stencil attachment, then that attachment must have been created with the {@link EXTSampleLocations#VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT} bit set
* - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} dynamic state enabled then {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_CULL_MODE DYNAMIC_STATE_CULL_MODE} dynamic state enabled then {@link VK13#vkCmdSetCullMode CmdSetCullMode} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_FRONT_FACE DYNAMIC_STATE_FRONT_FACE} dynamic state enabled then {@link VK13#vkCmdSetFrontFace CmdSetFrontFace} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY DYNAMIC_STATE_PRIMITIVE_TOPOLOGY} dynamic state enabled then {@link VK13#vkCmdSetPrimitiveTopology CmdSetPrimitiveTopology} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE DYNAMIC_STATE_DEPTH_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthTestEnable CmdSetDepthTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE DYNAMIC_STATE_DEPTH_WRITE_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthWriteEnable CmdSetDepthWriteEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_COMPARE_OP DYNAMIC_STATE_DEPTH_COMPARE_OP} dynamic state enabled then {@link VK13#vkCmdSetDepthCompareOp CmdSetDepthCompareOp} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthBoundsTestEnable CmdSetDepthBoundsTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE DYNAMIC_STATE_STENCIL_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetStencilTestEnable CmdSetStencilTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_OP DYNAMIC_STATE_STENCIL_OP} dynamic state enabled then {@link VK13#vkCmdSetStencilOp CmdSetStencilOp} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::scissorCount} of the pipeline
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::viewportCount} of the pipeline
* - If the bound graphics pipeline state was created with both the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} and {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic states enabled then both {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} and {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -721,7 +744,7 @@ public static void vkCmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer, @Nativ
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::colorAttachmentCount} greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must have the corresponding element of {@link VkPipelineRenderingCreateInfo}{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then {@link EXTColorWriteEnable#vkCmdSetColorWriteEnableEXT CmdSetColorWriteEnableEXT} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the {@link VkPipelineColorBlendStateCreateInfo}{@code ::attachmentCount} of the currently bound graphics pipeline
- * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command for each discard rectangle in {@link VkPipelineDiscardRectangleStateCreateInfoEXT}{@code ::discardRectangleCount}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
@@ -737,37 +760,38 @@ public static void vkCmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer, @Nativ
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline must have been created with a {@link VkGraphicsPipelineCreateInfo}{@code ::renderPass} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE}
* - If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, rasterization discard must not be enabled
* - If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, the bound graphics pipeline must not have been created with a non-zero value in {@link VkPipelineRasterizationStateStreamCreateInfoEXT}{@code ::rasterizationStream}
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTLineRasterization#VK_DYNAMIC_STATE_LINE_STIPPLE_EXT DYNAMIC_STATE_LINE_STIPPLE_EXT} dynamic state enabled then {@link EXTLineRasterization#vkCmdSetLineStippleEXT CmdSetLineStippleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRepresentativeFragmentTestEnableNV CmdSetRepresentativeFragmentTestEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} set {@code pColorBlendEnables} for any attachment to {@link VK10#VK_TRUE TRUE}, then for those attachments in the subpass the corresponding image view’s format features must contain {@link VK10#VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must follow the rules for a zero-attachment subpass
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state disabled, then the {@code samples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must be greater or equal to the {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -787,7 +811,7 @@ public static void vkCmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer, @Nativ
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link VK10#VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} set {@code coverageModulationTableEnable} to {@link VK10#VK_TRUE TRUE}, then the {@code coverageModulationTableCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
* - If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
* - If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by {@link NVCoverageReductionMode#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportSwizzleStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
@@ -798,6 +822,7 @@ public static void vkCmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer, @Nativ
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link VK10#VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT LINE_RASTERIZATION_MODE_DEFAULT_EXT}, then the {@code stippledRectangularLines} feature must be enabled and {@link VkPhysicalDeviceLimits}{@code ::strictLines} must be VK_TRUE
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must be {@link EXTConservativeRasterization#VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT}
* - If the currently bound pipeline was created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link VK10#VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link VK10#VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}, then Mesh Shader Queries must not be active
+ * - If dynamic state was inherited from {@link VkCommandBufferInheritanceViewportScissorInfoNV}, it must be set in the current command buffer prior to this drawing command
*
*
*
@@ -813,7 +838,7 @@ public static void vkCmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer, @Nativ
* - The bound graphics pipeline must not have been created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link EXTMeshShader#VK_SHADER_STAGE_TASK_BIT_EXT SHADER_STAGE_TASK_BIT_EXT} or {@link EXTMeshShader#VK_SHADER_STAGE_MESH_BIT_EXT SHADER_STAGE_MESH_BIT_EXT}
* - {@link VkPhysicalDeviceTransformFeedbackFeaturesEXT}{@code ::transformFeedback} must be enabled
* - The implementation must support {@link VkPhysicalDeviceTransformFeedbackPropertiesEXT}{@code ::transformFeedbackDraw}
- * - {@code vertexStride} must be greater than 0 and less than or equal to {@link VkPhysicalDeviceLimits}{@code ::maxTransformFeedbackBufferDataStride}
+ * - {@code vertexStride} must be greater than 0 and less than or equal to {@link VkPhysicalDeviceTransformFeedbackPropertiesEXT}{@code ::maxTransformFeedbackBufferDataStride}
* - If {@code counterBuffer} is non-sparse then it must be bound completely and contiguously to a single {@code VkDeviceMemory} object
* - {@code counterBuffer} must have been created with the {@link VK10#VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT BUFFER_USAGE_INDIRECT_BUFFER_BIT} bit set
* - {@code counterBufferOffset} must be a multiple of 4
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/HUAWEIClusterCullingShader.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/HUAWEIClusterCullingShader.java
new file mode 100644
index 0000000000..34d1ff1a02
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/HUAWEIClusterCullingShader.java
@@ -0,0 +1,826 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package org.lwjgl.vulkan;
+
+import org.lwjgl.system.*;
+
+import static org.lwjgl.system.Checks.*;
+import static org.lwjgl.system.JNI.*;
+
+/**
+ * Cluster Culling Shader(CCS) is similar to the existing compute shader; its main purpose is to provide an execution environment in order to perform coarse-level geometry culling and level-of-detail selection more efficiently on GPU.
+ *
+ * The traditional 2-pass GPU culling solution using compute shader needs a pipeline barrier between compute pipeline and graphics pipeline, sometimes, in order to optimize performance, an additional compaction process may also be required. this extension improve the above mentioned shortcomings which can allow compute shader directly emit visible clusters to following graphics pipeline.
+ *
+ * A set of new built-in output variables are used to express visible cluster, in addition, a new built-in function is used to emit these variables from CCS to IA stage, then IA can use these variables to fetches vertices of visible cluster and drive vertex shader to shading these vertices. As stated above, both IA and vertex shader are preserved, vertex shader still used for vertices position shading, instead of directly outputting a set of transformed vertices from compute shader, this makes CCS more suitable for mobile GPUs.
+ *
+ * Sample code
+ *
+ * Example of cluster culling in a GLSL shader
+ *
+ *
+ * #extension GL_HUAWEI_cluster_culling_shader: enable
+ *
+ * #define GPU_WARP_SIZE 32
+ * #define GPU_GROUP_SIZE GPU_WARP_SIZE
+ *
+ * #define GPU_CLUSTER_PER_INVOCATION 1
+ * #define GPU_CLUSTER_PER_WORKGROUP (GPU_GROUP_SIZE * GPU_CLUSTER_PER_INVOCATION)
+ *
+ * // Number of threads per workgroup
+ * // - 1D only
+ * // - warpsize = 32
+ * layout(local_size_x=GPU_GROUP_SIZE, local_size_y=1, local_size_z=1) in;
+ *
+ *
+ * #define GPU_CLUSTER_DESCRIPTOR_BINDING 0
+ * #define GPU_DRAW_BUFFER_BINDING 1
+ * #define GPU_INSTANCE_DESCRIPTOR_BINDING 2
+ *
+ * const float pi_half = 1.570795;
+ * uint instance_id;
+ *
+ * struct BoundingSphere
+ * {
+ * vec3 center;
+ * float radius;
+ * };
+ *
+ * struct BoundingCone
+ * {
+ * vec3 normal;
+ * float angle;
+ * };
+ *
+ * struct ClusterDescriptor
+ * {
+ * BoundingSphere sphere;
+ * BoundingCone cone;
+ * uint instance_idx;
+ * };
+ *
+ * struct InstanceData
+ * {
+ * mat4 mvp_matrix; // mvp matrix.
+ * vec4 frustum_planes[6]; // six frustum planes
+ * mat4 model_matrix_transpose_inverse; // inverse transpose of model matrix.
+ * vec3 view_origin; // view original
+ * };
+ *
+ * struct InstanceDescriptor
+ * {
+ * uint begin;
+ * uint end;
+ * uint cluster_count;
+ * uint debug;
+ * BoundingSphere sphere;
+ * InstanceData instance_data;
+ * };
+ *
+ * struct DrawElementsCommand{
+ * uint indexcount;
+ * uint instanceCount;
+ * uint firstIndex;
+ * int vertexoffset;
+ * uint firstInstance;
+ * uint cluster_id;
+ * };
+ *
+ * // indexed mode
+ * out gl_PerClusterHUAWEI{
+ * uint gl_IndexCountHUAWEI;
+ * uint gl_InstanceCountHUAWEI;
+ * uint gl_FirstIndexHUAWEI;
+ * int gl_VertexOffsetHUAWEI;
+ * uint gl_FirstInstanceHUAWEI;
+ * uint gl_ClusterIdHUAWEI;
+ * };
+ *
+ *
+ * layout(binding = GPU_CLUSTER_DESCRIPTOR_BINDING, std430) readonly buffer cluster_descriptor_ssbo
+ * {
+ * ClusterDescriptor cluster_descriptors[];
+ * };
+ *
+ *
+ * layout(binding = GPU_DRAW_BUFFER_BINDING, std430) buffer draw_indirect_ssbo
+ * {
+ * DrawElementsCommand draw_commands[];
+ * };
+ *
+ * layout(binding = GPU_INSTANCE_DESCRIPTOR_BINDING, std430) buffer instance_descriptor_ssbo
+ * {
+ * InstanceDescriptor instance_descriptors[];
+ * };
+ *
+ * uniform bool disable_frustum_culling;
+ * uniform bool disable_backface_culling;
+ * uniform float debug_value;
+ *
+ *
+ * bool isFrontFaceVisible( vec3 sphere_center, float sphere_radius, vec3 cone_normal, float cone_angle )
+ * {
+ * vec3 sphere_center_dir = normalize(sphere_center -
+ * instance_descriptors[instance_id].instance_data.view_origin);
+ *
+ * float sin_cone_angle = sin(min(cone_angle, pi_half));
+ * return dot(cone_normal, sphere_center_dir) < sin_cone_angle;
+ * }
+ *
+ * bool isSphereOutsideFrustum( vec3 sphere_center, float sphere_radius )
+ * {
+ * bool isInside = false;
+ *
+ * for(int i = 0; i < 6; i++)
+ * {
+ * isInside = isInside ||
+ * (dot(instance_descriptors[instance_id].instance_data.frustum_planes[i].xyz,
+ * sphere_center) + instance_descriptors[instance_id].instance_data.frustum_planes[i].w <
+ * sphere_radius);
+ * }
+ * return isInside;
+ * }
+ *
+ *
+ * void main()
+ * {
+ * uint cluster_id = gl_GlobalInvocationID.x;
+ * ClusterDescriptor desc = cluster_descriptors[cluster_id];
+ *
+ * // get instance description
+ * instance_id = desc.instance_idx;
+ * InstanceDescriptor inst_desc = instance_descriptors[instance_id];
+ *
+ * //instance based culling
+ * bool instance_render = (disable_frustum_culling ||
+ * !isSphereOutsideFrustum(inst_desc.sphere.center, inst_desc.sphere.radius));
+ *
+ * if( instance_render)
+ * {
+ * // cluster based culling
+ * bool render = (disable_frustum_culling || !isSphereOutsideFrustum(desc.sphere.center,
+ * desc.sphere.radius)) && (disable_backface_culling ||
+ * isFrontFaceVisible(desc.sphere.center, desc.sphere.radius, desc.cone.normal,
+ * desc.cone.angle));
+ *
+ * if (render)
+ * {
+ * // this cluster passed coarse-level culling, update built-in output variable.
+ * // in case of indexed mode:
+ * gl_IndexCountHUAWEI = draw_commands[cluster_id].indexcount;
+ * gl_InstanceCountHUAWEI = draw_commands[cluster_id].instanceCount;
+ * gl_FirstIndexHUAWEI = draw_commands[cluster_id].firstIndex;
+ * gl_VertexOffsetHUAWEI = draw_commands[cluster_id].vertexoffset;
+ * gl_FirstInstanceHUAWEI = draw_commands[cluster_id].firstInstance;
+ * gl_ClusterIdHUAWEI = draw_commands[cluster_id].cluster_id;
+ *
+ * // emit built-in output variables as a drawing command to subsequent
+ * // rendering pipeline.
+ * dispatchClusterHUAWEI();
+ * }
+ * }
+ * }
+ *
+ * Example of graphics pipeline creation with cluster culling shader
+ *
+ *
+ * // create a cluster culling shader stage info structure.
+ * VkPipelineShaderStageCreateInfo ccsStageInfo{};
+ * ccsStageInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
+ * ccsStageInfo.stage = VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI;
+ * ccsStageInfo.module = clustercullingshaderModule;
+ * ccsStageInfo.pName = "main";
+ *
+ * // pipeline shader stage creation
+ * VkPipelineShaderStageCreateInfo shaderStages[] = { ccsStageInfo, vertexShaderStageInfo, fragmentShaderStageInfo };
+ *
+ * // create graphics pipeline
+ * VkGraphicsPipelineCreateInfo pipelineInfo{};
+ * pipelineInfo.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;
+ * pipelineInfo.stageCount = 3;
+ * pipelineInfo.pStage = shaderStages;
+ * pipelineInfo.pVertexInputState = &vertexInputInfo;
+ * // ...
+ * VkPipeline graphicsPipeline;
+ * VkCreateGraphicsPipelines(device, VK_NULL_HANDLE, 1, &pipelineInfo, nullptr, &graphicsPipeline);
+ *
+ * Example of launching the execution of cluster culling shader
+ *
+ *
+ * vkCmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, graphicsPipeline);
+ * vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, 1, 1);
+ * vkCmdEndRenderPass(commandBuffer);
+ *
+ * VK_HUAWEI_cluster_culling_shader
+ *
+ *
+ * - Name String
+ * - {@code VK_HUAWEI_cluster_culling_shader}
+ * - Extension Type
+ * - Device extension
+ * - Registered Extension Number
+ * - 405
+ * - Revision
+ * - 1
+ * - Extension and Version Dependencies
+ *
+ * - Requires support for Vulkan 1.0
+ * - Requires {@link KHRGetPhysicalDeviceProperties2 VK_KHR_get_physical_device_properties2} to be enabled for any device-level functionality
+ *
+ * - Contact
+ *
+ * - Extension Proposal
+ * - VK_HUAWEI_cluster_culling_shader
+ *
+ *
+ * Other Extension Metadata
+ *
+ *
+ * - Last Modified Date
+ * - 2022-11-17
+ * - Interactions and External Dependencies
+ *
+ * - Contributors
+ *
+ * - Yuchang Wang, Huawei
+ * - Juntao Li, Huawei
+ * - Pan Gao, Huawei
+ * - Jie Cao, Huawei
+ * - Yunjin Zhang, Huawei
+ * - Shujie Zhou, Huawei
+ * - Chaojun Wang, Huawei
+ * - Jiajun Hu, Huawei
+ * - Cong Zhang, Huawei
+ *
+ *
+ */
+public class HUAWEIClusterCullingShader {
+
+ /** The extension specification version. */
+ public static final int VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION = 1;
+
+ /** The extension name. */
+ public static final String VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME = "VK_HUAWEI_cluster_culling_shader";
+
+ /**
+ * Extends {@code VkStructureType}.
+ *
+ * Enum values:
+ *
+ *
+ * - {@link #VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI}
+ * - {@link #VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI}
+ *
+ */
+ public static final int
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001;
+
+ /** Extends {@code VkPipelineStageFlagBits2}. */
+ public static final long VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI = 0x20000000000L;
+
+ /** Extends {@code VkShaderStageFlagBits}. */
+ public static final int VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI = 0x80000;
+
+ /** Extends {@code VkQueryPipelineStatisticFlagBits}. */
+ public static final int VK_QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI = 0x2000;
+
+ protected HUAWEIClusterCullingShader() {
+ throw new UnsupportedOperationException();
+ }
+
+ // --- [ vkCmdDrawClusterHUAWEI ] ---
+
+ /**
+ * Draw cluster culling work items.
+ *
+ * C Specification
+ *
+ * To record a cluster culling shader drawing command, call:
+ *
+ *
+ * void vkCmdDrawClusterHUAWEI(
+ * VkCommandBuffer commandBuffer,
+ * uint32_t groupCountX,
+ * uint32_t groupCountY,
+ * uint32_t groupCountZ);
+ *
+ * Description
+ *
+ * When the command is executed,a global workgroup consisting of groupCountX*groupCountY*groupCountZ local workgroup is assembled.
+ *
+ * Valid Usage
+ *
+ *
+ * - If a {@code VkSampler} created with {@code magFilter} or {@code minFilter} equal to {@link VK10#VK_FILTER_LINEAR FILTER_LINEAR} and {@code compareEnable} equal to {@link VK10#VK_FALSE FALSE} is used to sample a {@code VkImageView} as a result of this command, then the image view’s format features must contain {@link VK10#VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT}
+ * - If a {@code VkSampler} created with {@code mipmapMode} equal to {@link VK10#VK_SAMPLER_MIPMAP_MODE_LINEAR SAMPLER_MIPMAP_MODE_LINEAR} and {@code compareEnable} equal to {@link VK10#VK_FALSE FALSE} is used to sample a {@code VkImageView} as a result of this command, then the image view’s format features must contain {@link VK10#VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT}
+ * - If a {@code VkImageView} is sampled with depth comparison, the image view’s format features must contain {@link VK13#VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT}
+ * - If a {@code VkImageView} is accessed using atomic operations as a result of this command, then the image view’s format features must contain {@link VK10#VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT}
+ * - If a {@code VkImageView} is sampled with {@link EXTFilterCubic#VK_FILTER_CUBIC_EXT FILTER_CUBIC_EXT} as a result of this command, then the image view’s format features must contain {@link EXTFilterCubic#VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT}
+ * - Any {@code VkImageView} being sampled with {@link EXTFilterCubic#VK_FILTER_CUBIC_EXT FILTER_CUBIC_EXT} as a result of this command must have a {@code VkImageViewType} and format that supports cubic filtering, as specified by {@link VkFilterCubicImageViewImageFormatPropertiesEXT}{@code ::filterCubic} returned by {@code vkGetPhysicalDeviceImageFormatProperties2}
+ * - Any {@code VkImageView} being sampled with {@link EXTFilterCubic#VK_FILTER_CUBIC_EXT FILTER_CUBIC_EXT} with a reduction mode of either {@link VK12#VK_SAMPLER_REDUCTION_MODE_MIN SAMPLER_REDUCTION_MODE_MIN} or {@link VK12#VK_SAMPLER_REDUCTION_MODE_MAX SAMPLER_REDUCTION_MODE_MAX} as a result of this command must have a {@code VkImageViewType} and format that supports cubic filtering together with minmax filtering, as specified by {@link VkFilterCubicImageViewImageFormatPropertiesEXT}{@code ::filterCubicMinmax} returned by {@code vkGetPhysicalDeviceImageFormatProperties2}
+ * - Any {@code VkImage} created with a {@link VkImageCreateInfo}{@code ::flags} containing {@link NVCornerSampledImage#VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV IMAGE_CREATE_CORNER_SAMPLED_BIT_NV} sampled as a result of this command must only be sampled using a {@code VkSamplerAddressMode} of {@link VK10#VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE}
+ * - For any {@code VkImageView} being written as a storage image where the image format field of the {@code OpTypeImage} is {@code Unknown}, the view’s format features must contain {@link VK13#VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT}
+ * - For any {@code VkImageView} being read as a storage image where the image format field of the {@code OpTypeImage} is {@code Unknown}, the view’s format features must contain {@link VK13#VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT}
+ * - For any {@code VkBufferView} being written as a storage texel buffer where the image format field of the {@code OpTypeImage} is {@code Unknown}, the view’s buffer features must contain {@link VK13#VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT}
+ * - Any {@code VkBufferView} being read as a storage texel buffer where the image format field of the {@code OpTypeImage} is {@code Unknown} then the view’s buffer features must contain {@link VK13#VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT}
+ * - For each set n that is statically used by the {@code VkPipeline} bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a {@code VkPipelineLayout} that is compatible for set n, with the {@code VkPipelineLayout} used to create the current {@code VkPipeline}, as described in Pipeline Layout Compatibility
+ * - If the {@code maintenance4} feature is not enabled, then for each push constant that is statically used by the {@code VkPipeline} bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a {@code VkPipelineLayout} that is compatible for push constants, with the {@code VkPipelineLayout} used to create the current {@code VkPipeline}, as described in Pipeline Layout Compatibility
+ * - Descriptors in each bound descriptor set, specified via {@code vkCmdBindDescriptorSets}, must be valid if they are statically used by the {@code VkPipeline} bound to the pipeline bind point used by this command and the bound {@code VkPipeline} was not created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
+ * - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdBindDescriptorSets}, the bound {@code VkPipeline} must have been created without {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
+ * - Descriptors in bound descriptor buffers, specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, must be valid if they are dynamically used by the {@code VkPipeline} bound to the pipeline bind point used by this command and the bound {@code VkPipeline} was created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
+ * - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
+ * - If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
+ * - A valid pipeline must be bound to the pipeline bind point used by this command
+ * - There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
+ * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link VK10#VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link VK10#VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
+ * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
+ * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions that includes a LOD bias or any offset values, in any shader stage
+ * - If any stage of the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either {@link EXTPipelineRobustness#VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT} or {@link EXTPipelineRobustness#VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT} for {@code uniformBuffers}, and the {@code robustBufferAccess} feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point
+ * - If any stage of the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either {@link EXTPipelineRobustness#VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT} or {@link EXTPipelineRobustness#VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT} for {@code storageBuffers}, and the {@code robustBufferAccess} feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point
+ * - If {@code commandBuffer} is an unprotected command buffer and {@code protectedNoFault} is not supported, any resource accessed by the {@code VkPipeline} object bound to the pipeline bind point used by this command must not be a protected resource
+ * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} or {@code VkImageView} object that enables sampler Y′CBCR conversion, that object must only be used with {@code OpImageSample*} or {@code OpImageSparseSample*} instructions
+ * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} or {@code VkImageView} object that enables sampler Y′CBCR conversion, that object must not use the {@code ConstOffset} and {@code Offset} operands
+ * - If a {@code VkImageView} is accessed as a result of this command, then the image view’s {@code viewType} must match the {@code Dim} operand of the {@code OpTypeImage} as described in textures-operation-validation
+ * - If a {@code VkImageView} is accessed as a result of this command, then the image view’s {@code format} must match the numeric format from the {@code Sampled} {@code Type} operand of the {@code OpTypeImage} as described in the SPIR-V Sampled Type column of the Interpretation of Numeric Format table
+ * - If a {@code VkImageView} is accessed using {@code OpImageWrite} as a result of this command, then the {@code Type} of the {@code Texel} operand of that instruction must have at least as many components as the image view’s format
+ * - If a {@code VkBufferView} is accessed using {@code OpImageWrite} as a result of this command, then the {@code Type} of the {@code Texel} operand of that instruction must have at least as many components as the buffer view’s format
+ * - If a {@code VkImageView} with a {@code VkFormat} that has a 64-bit component width is accessed as a result of this command, the {@code SampledType} of the {@code OpTypeImage} operand of that instruction must have a {@code Width} of 64
+ * - If a {@code VkImageView} with a {@code VkFormat} that has a component width less than 64-bit is accessed as a result of this command, the {@code SampledType} of the {@code OpTypeImage} operand of that instruction must have a {@code Width} of 32
+ * - If a {@code VkBufferView} with a {@code VkFormat} that has a 64-bit component width is accessed as a result of this command, the {@code SampledType} of the {@code OpTypeImage} operand of that instruction must have a {@code Width} of 64
+ * - If a {@code VkBufferView} with a {@code VkFormat} that has a component width less than 64-bit is accessed as a result of this command, the {@code SampledType} of the {@code OpTypeImage} operand of that instruction must have a {@code Width} of 32
+ * - If the {@code sparseImageInt64Atomics} feature is not enabled, {@code VkImage} objects created with the {@link VK10#VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT IMAGE_CREATE_SPARSE_RESIDENCY_BIT} flag must not be accessed by atomic instructions through an {@code OpTypeImage} with a {@code SampledType} with a {@code Width} of 64 by this command
+ * - If the {@code sparseImageInt64Atomics} feature is not enabled, {@code VkBuffer} objects created with the {@link VK10#VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT BUFFER_CREATE_SPARSE_RESIDENCY_BIT} flag must not be accessed by atomic instructions through an {@code OpTypeImage} with a {@code SampledType} with a {@code Width} of 64 by this command
+ * - If {@code OpImageWeightedSampleQCOM} is used to sample a {@code VkImageView} as a result of this command, then the image view’s format features must contain {@link QCOMImageProcessing#VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM}
+ * - If {@code OpImageWeightedSampleQCOM} uses a {@code VkImageView} as a sample weight image as a result of this command, then the image view’s format features must contain {@link QCOMImageProcessing#VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM}
+ * - If {@code OpImageBoxFilterQCOM} is used to sample a {@code VkImageView} as a result of this command, then the image view’s format features must contain {@link QCOMImageProcessing#VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM}
+ * - If {@code OpImageBlockMatchSSDQCOM} is used to read from an {@code VkImageView} as a result of this command, then the image view’s format features must contain {@link QCOMImageProcessing#VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM}
+ * - If {@code OpImageBlockMatchSADQCOM} is used to read from an {@code VkImageView} as a result of this command, then the image view’s format features must contain {@link QCOMImageProcessing#VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM}
+ * - If {@code OpImageBlockMatchSADQCOM} or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation
+ * - If {@code OpImageWeightedSampleQCOM}, {@code OpImageBoxFilterQCOM}, {@code OpImageBlockMatchSSDQCOM}, or {@code OpImageBlockMatchSADQCOM} uses a {@code VkSampler} as a result of this command, then the sampler must have been created with {@link QCOMImageProcessing#VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM}
+ * - If any command other than {@code OpImageWeightedSampleQCOM}, {@code OpImageBoxFilterQCOM}, {@code OpImageBlockMatchSSDQCOM}, or {@code OpImageBlockMatchSADQCOM} uses a {@code VkSampler} as a result of this command, then the sampler must not have been created with {@link QCOMImageProcessing#VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM}
+ * - Any shader invocation executed by this command must terminate
+ * - The current render pass must be compatible with the {@code renderPass} member of the {@link VkGraphicsPipelineCreateInfo} structure specified when creating the {@code VkPipeline} bound to {@link VK10#VK_PIPELINE_BIND_POINT_GRAPHICS PIPELINE_BIND_POINT_GRAPHICS}
+ * - The subpass index of the current render pass must be equal to the {@code subpass} member of the {@link VkGraphicsPipelineCreateInfo} structure specified when creating the {@code VkPipeline} bound to {@link VK10#VK_PIPELINE_BIND_POINT_GRAPHICS PIPELINE_BIND_POINT_GRAPHICS}
+ * - If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set
+ * - If any shader executed by this pipeline accesses an {@code OpTypeImage} variable with a {@code Dim} operand of {@code SubpassData}, it must be decorated with an {@code InputAttachmentIndex} that corresponds to a valid input attachment in the current subpass
+ * - Input attachment views accessed in a subpass must be created with the same {@code VkFormat} as the corresponding subpass definition, and be created with a {@code VkImageView} that is compatible with the attachment referenced by the subpass' {@code pInputAttachments}[{@code InputAttachmentIndex}] in the currently bound {@code VkFramebuffer} as specified by Fragment Input Attachment Compatibility
+ * - Memory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command
+ * - If any recorded command in the current subpass will write to an image subresource as an attachment, this command must not read from the memory backing that image subresource in any other way than as an attachment
+ * - If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
+ * - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
+ * - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be {@link VK10#VK_STENCIL_OP_KEEP STENCIL_OP_KEEP}
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_VIEWPORT DYNAMIC_STATE_VIEWPORT} dynamic state enabled then {@link VK10#vkCmdSetViewport CmdSetViewport} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_SCISSOR DYNAMIC_STATE_SCISSOR} dynamic state enabled then {@link VK10#vkCmdSetScissor CmdSetScissor} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_LINE_WIDTH DYNAMIC_STATE_LINE_WIDTH} dynamic state enabled then {@link VK10#vkCmdSetLineWidth CmdSetLineWidth} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BIAS DYNAMIC_STATE_DEPTH_BIAS} dynamic state enabled then {@link VK10#vkCmdSetDepthBias CmdSetDepthBias} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_BLEND_CONSTANTS DYNAMIC_STATE_BLEND_CONSTANTS} dynamic state enabled then {@link VK10#vkCmdSetBlendConstants CmdSetBlendConstants} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BOUNDS DYNAMIC_STATE_DEPTH_BOUNDS} dynamic state enabled then {@link VK10#vkCmdSetDepthBounds CmdSetDepthBounds} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK DYNAMIC_STATE_STENCIL_COMPARE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilCompareMask CmdSetStencilCompareMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_WRITE_MASK DYNAMIC_STATE_STENCIL_WRITE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilWriteMask CmdSetStencilWriteMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_REFERENCE DYNAMIC_STATE_STENCIL_REFERENCE} dynamic state enabled then {@link VK10#vkCmdSetStencilReference CmdSetStencilReference} must have been called in the current command buffer prior to this drawing command
+ * - If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to {@link VkPhysicalDeviceMultiviewProperties}{@code ::maxMultiviewInstanceIndex}
+ * - If the bound graphics pipeline was created with {@link VkPipelineSampleLocationsStateCreateInfoEXT}{@code ::sampleLocationsEnable} set to {@link VK10#VK_TRUE TRUE} and the current subpass has a depth/stencil attachment, then that attachment must have been created with the {@link EXTSampleLocations#VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT} bit set
+ * - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} dynamic state enabled then {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_CULL_MODE DYNAMIC_STATE_CULL_MODE} dynamic state enabled then {@link VK13#vkCmdSetCullMode CmdSetCullMode} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_FRONT_FACE DYNAMIC_STATE_FRONT_FACE} dynamic state enabled then {@link VK13#vkCmdSetFrontFace CmdSetFrontFace} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY DYNAMIC_STATE_PRIMITIVE_TOPOLOGY} dynamic state enabled then {@link VK13#vkCmdSetPrimitiveTopology CmdSetPrimitiveTopology} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE DYNAMIC_STATE_DEPTH_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthTestEnable CmdSetDepthTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE DYNAMIC_STATE_DEPTH_WRITE_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthWriteEnable CmdSetDepthWriteEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_COMPARE_OP DYNAMIC_STATE_DEPTH_COMPARE_OP} dynamic state enabled then {@link VK13#vkCmdSetDepthCompareOp CmdSetDepthCompareOp} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthBoundsTestEnable CmdSetDepthBoundsTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE DYNAMIC_STATE_STENCIL_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetStencilTestEnable CmdSetStencilTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_OP DYNAMIC_STATE_STENCIL_OP} dynamic state enabled then {@link VK13#vkCmdSetStencilOp CmdSetStencilOp} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::scissorCount} of the pipeline
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::viewportCount} of the pipeline
+ * - If the bound graphics pipeline state was created with both the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} and {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic states enabled then both {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} and {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link NVClipSpaceWScaling#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportWScalingStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link NVClipSpaceWScaling#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link NVClipSpaceWScaling#vkCmdSetViewportWScalingNV CmdSetViewportWScalingNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link NVShadingRateImage#VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportShadingRateImageStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link NVShadingRateImage#VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link NVShadingRateImage#vkCmdSetViewportShadingRatePaletteNV CmdSetViewportShadingRatePaletteNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled and a {@link VkPipelineViewportSwizzleStateCreateInfoNV} structure chained from {@link VkPipelineViewportStateCreateInfo}, then the bound graphics pipeline must have been created with {@link VkPipelineViewportSwizzleStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled and a {@link VkPipelineViewportExclusiveScissorStateCreateInfoNV} structure chained from {@link VkPipelineViewportStateCreateInfo}, then the bound graphics pipeline must have been created with {@link VkPipelineViewportExclusiveScissorStateCreateInfoNV}{@code ::exclusiveScissorCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetRasterizerDiscardEnable CmdSetRasterizerDiscardEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE DYNAMIC_STATE_DEPTH_BIAS_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthBiasEnable CmdSetDepthBiasEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState2#VK_DYNAMIC_STATE_LOGIC_OP_EXT DYNAMIC_STATE_LOGIC_OP_EXT} dynamic state enabled then {@link EXTExtendedDynamicState2#vkCmdSetLogicOpEXT CmdSetLogicOpEXT} must have been called in the current command buffer prior to this drawing command and the {@code logicOp} must be a valid {@code VkLogicOp} value
+ * - If the {@code primitiveFragmentShadingRateWithMultipleViewports} limit is not supported, the bound graphics pipeline was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the {@code PrimitiveShadingRateKHR} built-in, then {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must be 1
+ * - If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s format features do not contain {@link VK10#VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT}, then the {@code blendEnable} member of the corresponding element of the {@code pAttachments} member of {@code pColorBlendState} must be {@link VK10#VK_FALSE FALSE}
+ * - If rasterization is not disabled in the bound graphics pipeline, and none of the {@link AMDMixedAttachmentSamples VK_AMD_mixed_attachment_samples} extension, the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension, or the {@code multisampledRenderToSingleSampled} feature are enabled, then {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} must be the same as the current subpass color and/or depth/stencil attachments
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the {@code imageView} member of {@code pDepthAttachment} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, and the {@code layout} member of {@code pDepthAttachment} is {@link VK10#VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL}, this command must not write any values to the depth attachment
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the {@code imageView} member of {@code pStencilAttachment} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, and the {@code layout} member of {@code pStencilAttachment} is {@link VK10#VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL}, this command must not write any values to the stencil attachment
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the {@code imageView} member of {@code pDepthAttachment} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, and the {@code layout} member of {@code pDepthAttachment} is {@link VK11#VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL}, this command must not write any values to the depth attachment
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the {@code imageView} member of {@code pStencilAttachment} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, and the {@code layout} member of {@code pStencilAttachment} is {@link VK11#VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL}, this command must not write any values to the stencil attachment
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the {@code imageView} member of {@code pDepthAttachment} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, and the {@code layout} member of {@code pDepthAttachment} is {@link VK12#VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL}, this command must not write any values to the depth attachment
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the {@code imageView} member of {@code pStencilAttachment} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, and the {@code layout} member of {@code pStencilAttachment} is {@link VK12#VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL}, this command must not write any values to the stencil attachment
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound graphics pipeline must have been created with a {@link VkPipelineRenderingCreateInfo}{@code ::viewMask} equal to {@link VkRenderingInfo}{@code ::viewMask}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound graphics pipeline must have been created with a {@link VkPipelineRenderingCreateInfo}{@code ::colorAttachmentCount} equal to {@link VkRenderingInfo}{@code ::colorAttachmentCount}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::colorAttachmentCount} greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} not equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must have been created with a {@code VkFormat} equal to the corresponding element of {@link VkPipelineRenderingCreateInfo}{@code ::pColorAttachmentFormats} used to create the currently bound graphics pipeline
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::colorAttachmentCount} greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must have the corresponding element of {@link VkPipelineRenderingCreateInfo}{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
+ * - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then {@link EXTColorWriteEnable#vkCmdSetColorWriteEnableEXT CmdSetColorWriteEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the {@link VkPipelineColorBlendStateCreateInfo}{@code ::attachmentCount} of the currently bound graphics pipeline
+ * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command for each discard rectangle in {@link VkPipelineDiscardRectangleStateCreateInfoEXT}{@code ::discardRectangleCount}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingFragmentShadingRateAttachmentInfoKHR}{@code ::imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the currently bound graphics pipeline must have been created with {@link KHRDynamicRendering#VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingFragmentDensityMapAttachmentInfoEXT}{@code ::imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the currently bound graphics pipeline must have been created with {@link KHRDynamicRendering#VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT}
+ * - If the currently bound pipeline was created with a {@link VkAttachmentSampleCountInfoAMD} or {@link VkAttachmentSampleCountInfoNV} structure, and the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} with a {@link VkRenderingInfo}{@code ::colorAttachmentCount} parameter greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} not equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must have been created with a sample count equal to the corresponding element of the {@code pColorAttachmentSamples} member of {@link VkAttachmentSampleCountInfoAMD} or {@link VkAttachmentSampleCountInfoNV} used to create the currently bound graphics pipeline
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline was created with a {@link VkAttachmentSampleCountInfoAMD} or {@link VkAttachmentSampleCountInfoNV} structure, and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of the {@code depthStencilAttachmentSamples} member of {@link VkAttachmentSampleCountInfoAMD} or {@link VkAttachmentSampleCountInfoNV} used to create the currently bound graphics pipeline must be equal to the sample count used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline was created with a {@link VkAttachmentSampleCountInfoAMD} or {@link VkAttachmentSampleCountInfoNV} structure, and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of the {@code depthStencilAttachmentSamples} member of {@link VkAttachmentSampleCountInfoAMD} or {@link VkAttachmentSampleCountInfoNV} used to create the currently bound graphics pipeline must be equal to the sample count used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
+ * - If the currently bound pipeline was created without a {@link VkAttachmentSampleCountInfoAMD} or {@link VkAttachmentSampleCountInfoNV} structure, and the {@code multisampledRenderToSingleSampled} feature is not enabled, and the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} with a {@link VkRenderingInfo}{@code ::colorAttachmentCount} parameter greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} not equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must have been created with a sample count equal to the value of {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} used to create the currently bound graphics pipeline
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline was created without a {@link VkAttachmentSampleCountInfoAMD} or {@link VkAttachmentSampleCountInfoNV} structure, and the {@code multisampledRenderToSingleSampled} feature is not enabled, and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} used to create the currently bound graphics pipeline must be equal to the sample count used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline was created without a {@link VkAttachmentSampleCountInfoAMD} or {@link VkAttachmentSampleCountInfoNV} structure, and the {@code multisampledRenderToSingleSampled} feature is not enabled, and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} used to create the currently bound graphics pipeline must be equal to the sample count used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline must have been created with a {@link VkGraphicsPipelineCreateInfo}{@code ::renderPass} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE}
+ * - If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, rasterization discard must not be enabled
+ * - If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, the bound graphics pipeline must not have been created with a non-zero value in {@link VkPipelineRasterizationStateStreamCreateInfoEXT}{@code ::rasterizationStream}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTLineRasterization#VK_DYNAMIC_STATE_LINE_STIPPLE_EXT DYNAMIC_STATE_LINE_STIPPLE_EXT} dynamic state enabled then {@link EXTLineRasterization#vkCmdSetLineStippleEXT CmdSetLineStippleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRepresentativeFragmentTestEnableNV CmdSetRepresentativeFragmentTestEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} set {@code pColorBlendEnables} for any attachment to {@link VK10#VK_TRUE TRUE}, then for those attachments in the subpass the corresponding image view’s format features must contain {@link VK10#VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must follow the rules for a zero-attachment subpass
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state disabled, then the {@code samples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must be greater or equal to the {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} state and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} states enabled, then the {@code samples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must be greater or equal to the {@code rasterizationSamples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, and none of the {@link AMDMixedAttachmentSamples VK_AMD_mixed_attachment_samples} extension, {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension, or the {@code multisampledRenderToSingleSampled} feature is enabled, then the {@code rasterizationSamples} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must be the same as the current subpass color and/or depth/stencil attachments
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command, and the attachments specified by the {@code firstAttachment} and {@code attachmentCount} parameters of {@code vkCmdSetColorBlendEnableEXT} calls must specify an enable for all active color attachments in the current subpass
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command, and the attachments specified by the {@code firstAttachment} and {@code attachmentCount} parameters of {@code vkCmdSetColorBlendEquationEXT} calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command, and the attachments specified by the {@code firstAttachment} and {@code attachmentCount} parameters of {@code vkCmdSetColorWriteMaskEXT} calls must specify the color write mask for all active color attachments in the current subpass
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command, and the attachments specified by the {@code firstAttachment} and {@code attachmentCount} parameters of {@code vkCmdSetColorBlendAdvancedEXT} calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic states enabled and the last calls to {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} and {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} have enabled advanced blending, then the number of active color attachments in the current subpass must not exceed {@code advancedBlendMaxColorAttachments}
+ * - If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, and the bound graphics pipeline was created with {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} state enabled, the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have set the {@code rasterizationStream} to zero
+ * - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state disabled, then the {@code sampleLocationsPerPixel} member of {@code pSampleLocationsInfo} in the last call to {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must equal the {@code rasterizationSamples} member of the {@link VkPipelineMultisampleStateCreateInfo} structure the bound graphics pipeline has been created with
+ * - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, then the {@code sampleLocationsPerPixel} member of {@code pSampleLocationsInfo} in the last call to {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must equal the {@code rasterizationSamples} parameter of the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT}
+ * - If the bound graphics pipeline was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and {@code sampleLocationsEnable} was {@link VK10#VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the {@link EXTSampleLocations#VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT} bit set
+ * - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link VK10#VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, then the {@code sampleLocationsInfo.sampleLocationGridSize.width} in the last call to {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must evenly divide {@link VkMultisamplePropertiesEXT}{@code ::sampleLocationGridSize.width} as returned by {@link EXTSampleLocations#vkGetPhysicalDeviceMultisamplePropertiesEXT GetPhysicalDeviceMultisamplePropertiesEXT} with a {@code samples} parameter equaling {@code rasterizationSamples}
+ * - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link VK10#VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, then the {@code sampleLocationsInfo.sampleLocationGridSize.height} in the last call to {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must evenly divide {@link VkMultisamplePropertiesEXT}{@code ::sampleLocationGridSize.height} as returned by {@link EXTSampleLocations#vkGetPhysicalDeviceMultisamplePropertiesEXT GetPhysicalDeviceMultisamplePropertiesEXT} with a {@code samples} parameter equaling {@code rasterizationSamples}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link VK10#VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} set {@code coverageModulationTableEnable} to {@link VK10#VK_TRUE TRUE}, then the {@code coverageModulationTableCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
+ * - If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
+ * - If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by {@link NVCoverageReductionMode#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV}
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportSwizzleStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
+ * - If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if the current subpass has any color attachments and {@code rasterizationSamples} of the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} is greater than the number of color samples, then the pipeline {@code sampleShadingEnable} must be {@link VK10#VK_FALSE FALSE}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link VK10#VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT LINE_RASTERIZATION_MODE_RECTANGULAR_EXT}, then the {@code stippledRectangularLines} feature must be enabled
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link VK10#VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT LINE_RASTERIZATION_MODE_BRESENHAM_EXT}, then the {@code stippledBresenhamLines} feature must be enabled
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link VK10#VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT}, then the {@code stippledSmoothLines} feature must be enabled
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link VK10#VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT LINE_RASTERIZATION_MODE_DEFAULT_EXT}, then the {@code stippledRectangularLines} feature must be enabled and {@link VkPhysicalDeviceLimits}{@code ::strictLines} must be VK_TRUE
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must be {@link EXTConservativeRasterization#VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT}
+ * - If the currently bound pipeline was created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link VK10#VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link VK10#VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}, then Mesh Shader Queries must not be active
+ * - If dynamic state was inherited from {@link VkCommandBufferInheritanceViewportScissorInfoNV}, it must be set in the current command buffer prior to this drawing command
+ *
+ *
+ *
+ * - The bound graphics pipeline must not have been created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link VK10#VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link VK10#VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}
+ * - Transform Feedback Queries must not be active
+ * - Primitives Generated Queries must not be active
+ * - The {@code pipelineStatistics} member used to create any active Pipeline Statistics Query must not contain {@link VK10#VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT}, or {@link VK10#VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT}
+ * - The pipelineStatistics member used to create any active Pipeline Statistics Query must also not contain VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT, VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT
+ * - {@code groupCountX} must be less than or equal to {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI}{@code ::maxWorkGroupCount}[0]
+ * - {@code groupCountY} must be less than or equal to {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI}{@code ::maxWorkGroupCount}[1]
+ * - {@code groupCountZ} must be less than or equal to {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI}{@code ::maxWorkGroupCount}[2]
+ * - The current pipeline bound to {@link VK10#VK_PIPELINE_BIND_POINT_GRAPHICS PIPELINE_BIND_POINT_GRAPHICS} must contain a shader stage using the {@code ClusterCullingHUAWEI} {@code Execution} {@code Model}.
+ *
+ *
+ * Valid Usage (Implicit)
+ *
+ *
+ * - {@code commandBuffer} must be a valid {@code VkCommandBuffer} handle
+ * - {@code commandBuffer} must be in the recording state
+ * - The {@code VkCommandPool} that {@code commandBuffer} was allocated from must support graphics operations
+ * - This command must only be called inside of a render pass instance
+ * - This command must only be called outside of a video coding scope
+ *
+ *
+ * Host Synchronization
+ *
+ *
+ * - Host access to {@code commandBuffer} must be externally synchronized
+ * - Host access to the {@code VkCommandPool} that {@code commandBuffer} was allocated from must be externally synchronized
+ *
+ *
+ * Command Properties
+ *
+ *
+ *
+ * @param commandBuffer the command buffer into which the command will be recorded.
+ * @param groupCountX the number of local workgroups to dispatch in the X dimension.
+ * @param groupCountY the number of local workgroups to dispatch in the Y dimension.
+ * @param groupCountZ the number of local workgroups to dispatch in the Z dimension.
+ */
+ public static void vkCmdDrawClusterHUAWEI(VkCommandBuffer commandBuffer, @NativeType("uint32_t") int groupCountX, @NativeType("uint32_t") int groupCountY, @NativeType("uint32_t") int groupCountZ) {
+ long __functionAddress = commandBuffer.getCapabilities().vkCmdDrawClusterHUAWEI;
+ if (CHECKS) {
+ check(__functionAddress);
+ }
+ callPV(commandBuffer.address(), groupCountX, groupCountY, groupCountZ, __functionAddress);
+ }
+
+ // --- [ vkCmdDrawClusterIndirectHUAWEI ] ---
+
+ /**
+ * Issue an indirect cluster culling draw into a command buffer.
+ *
+ * C Specification
+ *
+ * To record an indirect cluster culling drawing command, call:
+ *
+ *
+ * void vkCmdDrawClusterIndirectHUAWEI(
+ * VkCommandBuffer commandBuffer,
+ * VkBuffer buffer,
+ * VkDeviceSize offset);
+ *
+ * Description
+ *
+ * {@code vkCmdDrawClusterIndirectHUAWEI} behaves similarly to {@link #vkCmdDrawClusterHUAWEI CmdDrawClusterHUAWEI} except that the parameters are read by the device from a buffer during execution. The parameters of the dispatch are encoded in a {@link VkDispatchIndirectCommand} structure taken from buffer starting at offset.
+ *
+ * Valid Usage
+ *
+ *
+ * - If a {@code VkSampler} created with {@code magFilter} or {@code minFilter} equal to {@link VK10#VK_FILTER_LINEAR FILTER_LINEAR} and {@code compareEnable} equal to {@link VK10#VK_FALSE FALSE} is used to sample a {@code VkImageView} as a result of this command, then the image view’s format features must contain {@link VK10#VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT}
+ * - If a {@code VkSampler} created with {@code mipmapMode} equal to {@link VK10#VK_SAMPLER_MIPMAP_MODE_LINEAR SAMPLER_MIPMAP_MODE_LINEAR} and {@code compareEnable} equal to {@link VK10#VK_FALSE FALSE} is used to sample a {@code VkImageView} as a result of this command, then the image view’s format features must contain {@link VK10#VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT}
+ * - If a {@code VkImageView} is sampled with depth comparison, the image view’s format features must contain {@link VK13#VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT}
+ * - If a {@code VkImageView} is accessed using atomic operations as a result of this command, then the image view’s format features must contain {@link VK10#VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT}
+ * - If a {@code VkImageView} is sampled with {@link EXTFilterCubic#VK_FILTER_CUBIC_EXT FILTER_CUBIC_EXT} as a result of this command, then the image view’s format features must contain {@link EXTFilterCubic#VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT}
+ * - Any {@code VkImageView} being sampled with {@link EXTFilterCubic#VK_FILTER_CUBIC_EXT FILTER_CUBIC_EXT} as a result of this command must have a {@code VkImageViewType} and format that supports cubic filtering, as specified by {@link VkFilterCubicImageViewImageFormatPropertiesEXT}{@code ::filterCubic} returned by {@code vkGetPhysicalDeviceImageFormatProperties2}
+ * - Any {@code VkImageView} being sampled with {@link EXTFilterCubic#VK_FILTER_CUBIC_EXT FILTER_CUBIC_EXT} with a reduction mode of either {@link VK12#VK_SAMPLER_REDUCTION_MODE_MIN SAMPLER_REDUCTION_MODE_MIN} or {@link VK12#VK_SAMPLER_REDUCTION_MODE_MAX SAMPLER_REDUCTION_MODE_MAX} as a result of this command must have a {@code VkImageViewType} and format that supports cubic filtering together with minmax filtering, as specified by {@link VkFilterCubicImageViewImageFormatPropertiesEXT}{@code ::filterCubicMinmax} returned by {@code vkGetPhysicalDeviceImageFormatProperties2}
+ * - Any {@code VkImage} created with a {@link VkImageCreateInfo}{@code ::flags} containing {@link NVCornerSampledImage#VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV IMAGE_CREATE_CORNER_SAMPLED_BIT_NV} sampled as a result of this command must only be sampled using a {@code VkSamplerAddressMode} of {@link VK10#VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE}
+ * - For any {@code VkImageView} being written as a storage image where the image format field of the {@code OpTypeImage} is {@code Unknown}, the view’s format features must contain {@link VK13#VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT}
+ * - For any {@code VkImageView} being read as a storage image where the image format field of the {@code OpTypeImage} is {@code Unknown}, the view’s format features must contain {@link VK13#VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT}
+ * - For any {@code VkBufferView} being written as a storage texel buffer where the image format field of the {@code OpTypeImage} is {@code Unknown}, the view’s buffer features must contain {@link VK13#VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT}
+ * - Any {@code VkBufferView} being read as a storage texel buffer where the image format field of the {@code OpTypeImage} is {@code Unknown} then the view’s buffer features must contain {@link VK13#VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT}
+ * - For each set n that is statically used by the {@code VkPipeline} bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a {@code VkPipelineLayout} that is compatible for set n, with the {@code VkPipelineLayout} used to create the current {@code VkPipeline}, as described in Pipeline Layout Compatibility
+ * - If the {@code maintenance4} feature is not enabled, then for each push constant that is statically used by the {@code VkPipeline} bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a {@code VkPipelineLayout} that is compatible for push constants, with the {@code VkPipelineLayout} used to create the current {@code VkPipeline}, as described in Pipeline Layout Compatibility
+ * - Descriptors in each bound descriptor set, specified via {@code vkCmdBindDescriptorSets}, must be valid if they are statically used by the {@code VkPipeline} bound to the pipeline bind point used by this command and the bound {@code VkPipeline} was not created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
+ * - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdBindDescriptorSets}, the bound {@code VkPipeline} must have been created without {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
+ * - Descriptors in bound descriptor buffers, specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, must be valid if they are dynamically used by the {@code VkPipeline} bound to the pipeline bind point used by this command and the bound {@code VkPipeline} was created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
+ * - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
+ * - If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
+ * - A valid pipeline must be bound to the pipeline bind point used by this command
+ * - There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
+ * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link VK10#VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link VK10#VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
+ * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
+ * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions that includes a LOD bias or any offset values, in any shader stage
+ * - If any stage of the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either {@link EXTPipelineRobustness#VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT} or {@link EXTPipelineRobustness#VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT} for {@code uniformBuffers}, and the {@code robustBufferAccess} feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point
+ * - If any stage of the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either {@link EXTPipelineRobustness#VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT} or {@link EXTPipelineRobustness#VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT} for {@code storageBuffers}, and the {@code robustBufferAccess} feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point
+ * - If {@code commandBuffer} is an unprotected command buffer and {@code protectedNoFault} is not supported, any resource accessed by the {@code VkPipeline} object bound to the pipeline bind point used by this command must not be a protected resource
+ * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} or {@code VkImageView} object that enables sampler Y′CBCR conversion, that object must only be used with {@code OpImageSample*} or {@code OpImageSparseSample*} instructions
+ * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} or {@code VkImageView} object that enables sampler Y′CBCR conversion, that object must not use the {@code ConstOffset} and {@code Offset} operands
+ * - If a {@code VkImageView} is accessed as a result of this command, then the image view’s {@code viewType} must match the {@code Dim} operand of the {@code OpTypeImage} as described in textures-operation-validation
+ * - If a {@code VkImageView} is accessed as a result of this command, then the image view’s {@code format} must match the numeric format from the {@code Sampled} {@code Type} operand of the {@code OpTypeImage} as described in the SPIR-V Sampled Type column of the Interpretation of Numeric Format table
+ * - If a {@code VkImageView} is accessed using {@code OpImageWrite} as a result of this command, then the {@code Type} of the {@code Texel} operand of that instruction must have at least as many components as the image view’s format
+ * - If a {@code VkBufferView} is accessed using {@code OpImageWrite} as a result of this command, then the {@code Type} of the {@code Texel} operand of that instruction must have at least as many components as the buffer view’s format
+ * - If a {@code VkImageView} with a {@code VkFormat} that has a 64-bit component width is accessed as a result of this command, the {@code SampledType} of the {@code OpTypeImage} operand of that instruction must have a {@code Width} of 64
+ * - If a {@code VkImageView} with a {@code VkFormat} that has a component width less than 64-bit is accessed as a result of this command, the {@code SampledType} of the {@code OpTypeImage} operand of that instruction must have a {@code Width} of 32
+ * - If a {@code VkBufferView} with a {@code VkFormat} that has a 64-bit component width is accessed as a result of this command, the {@code SampledType} of the {@code OpTypeImage} operand of that instruction must have a {@code Width} of 64
+ * - If a {@code VkBufferView} with a {@code VkFormat} that has a component width less than 64-bit is accessed as a result of this command, the {@code SampledType} of the {@code OpTypeImage} operand of that instruction must have a {@code Width} of 32
+ * - If the {@code sparseImageInt64Atomics} feature is not enabled, {@code VkImage} objects created with the {@link VK10#VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT IMAGE_CREATE_SPARSE_RESIDENCY_BIT} flag must not be accessed by atomic instructions through an {@code OpTypeImage} with a {@code SampledType} with a {@code Width} of 64 by this command
+ * - If the {@code sparseImageInt64Atomics} feature is not enabled, {@code VkBuffer} objects created with the {@link VK10#VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT BUFFER_CREATE_SPARSE_RESIDENCY_BIT} flag must not be accessed by atomic instructions through an {@code OpTypeImage} with a {@code SampledType} with a {@code Width} of 64 by this command
+ * - If {@code OpImageWeightedSampleQCOM} is used to sample a {@code VkImageView} as a result of this command, then the image view’s format features must contain {@link QCOMImageProcessing#VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM}
+ * - If {@code OpImageWeightedSampleQCOM} uses a {@code VkImageView} as a sample weight image as a result of this command, then the image view’s format features must contain {@link QCOMImageProcessing#VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM}
+ * - If {@code OpImageBoxFilterQCOM} is used to sample a {@code VkImageView} as a result of this command, then the image view’s format features must contain {@link QCOMImageProcessing#VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM}
+ * - If {@code OpImageBlockMatchSSDQCOM} is used to read from an {@code VkImageView} as a result of this command, then the image view’s format features must contain {@link QCOMImageProcessing#VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM}
+ * - If {@code OpImageBlockMatchSADQCOM} is used to read from an {@code VkImageView} as a result of this command, then the image view’s format features must contain {@link QCOMImageProcessing#VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM}
+ * - If {@code OpImageBlockMatchSADQCOM} or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation
+ * - If {@code OpImageWeightedSampleQCOM}, {@code OpImageBoxFilterQCOM}, {@code OpImageBlockMatchSSDQCOM}, or {@code OpImageBlockMatchSADQCOM} uses a {@code VkSampler} as a result of this command, then the sampler must have been created with {@link QCOMImageProcessing#VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM}
+ * - If any command other than {@code OpImageWeightedSampleQCOM}, {@code OpImageBoxFilterQCOM}, {@code OpImageBlockMatchSSDQCOM}, or {@code OpImageBlockMatchSADQCOM} uses a {@code VkSampler} as a result of this command, then the sampler must not have been created with {@link QCOMImageProcessing#VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM}
+ * - Any shader invocation executed by this command must terminate
+ * - The current render pass must be compatible with the {@code renderPass} member of the {@link VkGraphicsPipelineCreateInfo} structure specified when creating the {@code VkPipeline} bound to {@link VK10#VK_PIPELINE_BIND_POINT_GRAPHICS PIPELINE_BIND_POINT_GRAPHICS}
+ * - The subpass index of the current render pass must be equal to the {@code subpass} member of the {@link VkGraphicsPipelineCreateInfo} structure specified when creating the {@code VkPipeline} bound to {@link VK10#VK_PIPELINE_BIND_POINT_GRAPHICS PIPELINE_BIND_POINT_GRAPHICS}
+ * - If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set
+ * - If any shader executed by this pipeline accesses an {@code OpTypeImage} variable with a {@code Dim} operand of {@code SubpassData}, it must be decorated with an {@code InputAttachmentIndex} that corresponds to a valid input attachment in the current subpass
+ * - Input attachment views accessed in a subpass must be created with the same {@code VkFormat} as the corresponding subpass definition, and be created with a {@code VkImageView} that is compatible with the attachment referenced by the subpass' {@code pInputAttachments}[{@code InputAttachmentIndex}] in the currently bound {@code VkFramebuffer} as specified by Fragment Input Attachment Compatibility
+ * - Memory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command
+ * - If any recorded command in the current subpass will write to an image subresource as an attachment, this command must not read from the memory backing that image subresource in any other way than as an attachment
+ * - If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
+ * - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
+ * - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be {@link VK10#VK_STENCIL_OP_KEEP STENCIL_OP_KEEP}
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_VIEWPORT DYNAMIC_STATE_VIEWPORT} dynamic state enabled then {@link VK10#vkCmdSetViewport CmdSetViewport} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_SCISSOR DYNAMIC_STATE_SCISSOR} dynamic state enabled then {@link VK10#vkCmdSetScissor CmdSetScissor} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_LINE_WIDTH DYNAMIC_STATE_LINE_WIDTH} dynamic state enabled then {@link VK10#vkCmdSetLineWidth CmdSetLineWidth} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BIAS DYNAMIC_STATE_DEPTH_BIAS} dynamic state enabled then {@link VK10#vkCmdSetDepthBias CmdSetDepthBias} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_BLEND_CONSTANTS DYNAMIC_STATE_BLEND_CONSTANTS} dynamic state enabled then {@link VK10#vkCmdSetBlendConstants CmdSetBlendConstants} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BOUNDS DYNAMIC_STATE_DEPTH_BOUNDS} dynamic state enabled then {@link VK10#vkCmdSetDepthBounds CmdSetDepthBounds} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK DYNAMIC_STATE_STENCIL_COMPARE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilCompareMask CmdSetStencilCompareMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_WRITE_MASK DYNAMIC_STATE_STENCIL_WRITE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilWriteMask CmdSetStencilWriteMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_REFERENCE DYNAMIC_STATE_STENCIL_REFERENCE} dynamic state enabled then {@link VK10#vkCmdSetStencilReference CmdSetStencilReference} must have been called in the current command buffer prior to this drawing command
+ * - If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to {@link VkPhysicalDeviceMultiviewProperties}{@code ::maxMultiviewInstanceIndex}
+ * - If the bound graphics pipeline was created with {@link VkPipelineSampleLocationsStateCreateInfoEXT}{@code ::sampleLocationsEnable} set to {@link VK10#VK_TRUE TRUE} and the current subpass has a depth/stencil attachment, then that attachment must have been created with the {@link EXTSampleLocations#VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT} bit set
+ * - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} dynamic state enabled then {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_CULL_MODE DYNAMIC_STATE_CULL_MODE} dynamic state enabled then {@link VK13#vkCmdSetCullMode CmdSetCullMode} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_FRONT_FACE DYNAMIC_STATE_FRONT_FACE} dynamic state enabled then {@link VK13#vkCmdSetFrontFace CmdSetFrontFace} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY DYNAMIC_STATE_PRIMITIVE_TOPOLOGY} dynamic state enabled then {@link VK13#vkCmdSetPrimitiveTopology CmdSetPrimitiveTopology} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE DYNAMIC_STATE_DEPTH_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthTestEnable CmdSetDepthTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE DYNAMIC_STATE_DEPTH_WRITE_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthWriteEnable CmdSetDepthWriteEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_COMPARE_OP DYNAMIC_STATE_DEPTH_COMPARE_OP} dynamic state enabled then {@link VK13#vkCmdSetDepthCompareOp CmdSetDepthCompareOp} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthBoundsTestEnable CmdSetDepthBoundsTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE DYNAMIC_STATE_STENCIL_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetStencilTestEnable CmdSetStencilTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_OP DYNAMIC_STATE_STENCIL_OP} dynamic state enabled then {@link VK13#vkCmdSetStencilOp CmdSetStencilOp} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::scissorCount} of the pipeline
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::viewportCount} of the pipeline
+ * - If the bound graphics pipeline state was created with both the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} and {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic states enabled then both {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} and {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link NVClipSpaceWScaling#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportWScalingStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link NVClipSpaceWScaling#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link NVClipSpaceWScaling#vkCmdSetViewportWScalingNV CmdSetViewportWScalingNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link NVShadingRateImage#VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportShadingRateImageStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link NVShadingRateImage#VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link NVShadingRateImage#vkCmdSetViewportShadingRatePaletteNV CmdSetViewportShadingRatePaletteNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled and a {@link VkPipelineViewportSwizzleStateCreateInfoNV} structure chained from {@link VkPipelineViewportStateCreateInfo}, then the bound graphics pipeline must have been created with {@link VkPipelineViewportSwizzleStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled and a {@link VkPipelineViewportExclusiveScissorStateCreateInfoNV} structure chained from {@link VkPipelineViewportStateCreateInfo}, then the bound graphics pipeline must have been created with {@link VkPipelineViewportExclusiveScissorStateCreateInfoNV}{@code ::exclusiveScissorCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetRasterizerDiscardEnable CmdSetRasterizerDiscardEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE DYNAMIC_STATE_DEPTH_BIAS_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthBiasEnable CmdSetDepthBiasEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState2#VK_DYNAMIC_STATE_LOGIC_OP_EXT DYNAMIC_STATE_LOGIC_OP_EXT} dynamic state enabled then {@link EXTExtendedDynamicState2#vkCmdSetLogicOpEXT CmdSetLogicOpEXT} must have been called in the current command buffer prior to this drawing command and the {@code logicOp} must be a valid {@code VkLogicOp} value
+ * - If the {@code primitiveFragmentShadingRateWithMultipleViewports} limit is not supported, the bound graphics pipeline was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the {@code PrimitiveShadingRateKHR} built-in, then {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must be 1
+ * - If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s format features do not contain {@link VK10#VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT}, then the {@code blendEnable} member of the corresponding element of the {@code pAttachments} member of {@code pColorBlendState} must be {@link VK10#VK_FALSE FALSE}
+ * - If rasterization is not disabled in the bound graphics pipeline, and none of the {@link AMDMixedAttachmentSamples VK_AMD_mixed_attachment_samples} extension, the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension, or the {@code multisampledRenderToSingleSampled} feature are enabled, then {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} must be the same as the current subpass color and/or depth/stencil attachments
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the {@code imageView} member of {@code pDepthAttachment} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, and the {@code layout} member of {@code pDepthAttachment} is {@link VK10#VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL}, this command must not write any values to the depth attachment
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the {@code imageView} member of {@code pStencilAttachment} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, and the {@code layout} member of {@code pStencilAttachment} is {@link VK10#VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL}, this command must not write any values to the stencil attachment
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the {@code imageView} member of {@code pDepthAttachment} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, and the {@code layout} member of {@code pDepthAttachment} is {@link VK11#VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL}, this command must not write any values to the depth attachment
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the {@code imageView} member of {@code pStencilAttachment} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, and the {@code layout} member of {@code pStencilAttachment} is {@link VK11#VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL}, this command must not write any values to the stencil attachment
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the {@code imageView} member of {@code pDepthAttachment} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, and the {@code layout} member of {@code pDepthAttachment} is {@link VK12#VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL}, this command must not write any values to the depth attachment
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the {@code imageView} member of {@code pStencilAttachment} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, and the {@code layout} member of {@code pStencilAttachment} is {@link VK12#VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL}, this command must not write any values to the stencil attachment
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound graphics pipeline must have been created with a {@link VkPipelineRenderingCreateInfo}{@code ::viewMask} equal to {@link VkRenderingInfo}{@code ::viewMask}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound graphics pipeline must have been created with a {@link VkPipelineRenderingCreateInfo}{@code ::colorAttachmentCount} equal to {@link VkRenderingInfo}{@code ::colorAttachmentCount}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::colorAttachmentCount} greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} not equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must have been created with a {@code VkFormat} equal to the corresponding element of {@link VkPipelineRenderingCreateInfo}{@code ::pColorAttachmentFormats} used to create the currently bound graphics pipeline
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::colorAttachmentCount} greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must have the corresponding element of {@link VkPipelineRenderingCreateInfo}{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
+ * - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then {@link EXTColorWriteEnable#vkCmdSetColorWriteEnableEXT CmdSetColorWriteEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the {@link VkPipelineColorBlendStateCreateInfo}{@code ::attachmentCount} of the currently bound graphics pipeline
+ * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command for each discard rectangle in {@link VkPipelineDiscardRectangleStateCreateInfoEXT}{@code ::discardRectangleCount}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingFragmentShadingRateAttachmentInfoKHR}{@code ::imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the currently bound graphics pipeline must have been created with {@link KHRDynamicRendering#VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingFragmentDensityMapAttachmentInfoEXT}{@code ::imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the currently bound graphics pipeline must have been created with {@link KHRDynamicRendering#VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT}
+ * - If the currently bound pipeline was created with a {@link VkAttachmentSampleCountInfoAMD} or {@link VkAttachmentSampleCountInfoNV} structure, and the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} with a {@link VkRenderingInfo}{@code ::colorAttachmentCount} parameter greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} not equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must have been created with a sample count equal to the corresponding element of the {@code pColorAttachmentSamples} member of {@link VkAttachmentSampleCountInfoAMD} or {@link VkAttachmentSampleCountInfoNV} used to create the currently bound graphics pipeline
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline was created with a {@link VkAttachmentSampleCountInfoAMD} or {@link VkAttachmentSampleCountInfoNV} structure, and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of the {@code depthStencilAttachmentSamples} member of {@link VkAttachmentSampleCountInfoAMD} or {@link VkAttachmentSampleCountInfoNV} used to create the currently bound graphics pipeline must be equal to the sample count used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline was created with a {@link VkAttachmentSampleCountInfoAMD} or {@link VkAttachmentSampleCountInfoNV} structure, and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of the {@code depthStencilAttachmentSamples} member of {@link VkAttachmentSampleCountInfoAMD} or {@link VkAttachmentSampleCountInfoNV} used to create the currently bound graphics pipeline must be equal to the sample count used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
+ * - If the currently bound pipeline was created without a {@link VkAttachmentSampleCountInfoAMD} or {@link VkAttachmentSampleCountInfoNV} structure, and the {@code multisampledRenderToSingleSampled} feature is not enabled, and the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} with a {@link VkRenderingInfo}{@code ::colorAttachmentCount} parameter greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} not equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must have been created with a sample count equal to the value of {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} used to create the currently bound graphics pipeline
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline was created without a {@link VkAttachmentSampleCountInfoAMD} or {@link VkAttachmentSampleCountInfoNV} structure, and the {@code multisampledRenderToSingleSampled} feature is not enabled, and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} used to create the currently bound graphics pipeline must be equal to the sample count used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline was created without a {@link VkAttachmentSampleCountInfoAMD} or {@link VkAttachmentSampleCountInfoNV} structure, and the {@code multisampledRenderToSingleSampled} feature is not enabled, and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} used to create the currently bound graphics pipeline must be equal to the sample count used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
+ * - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline must have been created with a {@link VkGraphicsPipelineCreateInfo}{@code ::renderPass} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE}
+ * - If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, rasterization discard must not be enabled
+ * - If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, the bound graphics pipeline must not have been created with a non-zero value in {@link VkPipelineRasterizationStateStreamCreateInfoEXT}{@code ::rasterizationStream}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTLineRasterization#VK_DYNAMIC_STATE_LINE_STIPPLE_EXT DYNAMIC_STATE_LINE_STIPPLE_EXT} dynamic state enabled then {@link EXTLineRasterization#vkCmdSetLineStippleEXT CmdSetLineStippleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRepresentativeFragmentTestEnableNV CmdSetRepresentativeFragmentTestEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} set {@code pColorBlendEnables} for any attachment to {@link VK10#VK_TRUE TRUE}, then for those attachments in the subpass the corresponding image view’s format features must contain {@link VK10#VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must follow the rules for a zero-attachment subpass
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state disabled, then the {@code samples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must be greater or equal to the {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} state and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} states enabled, then the {@code samples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must be greater or equal to the {@code rasterizationSamples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, and none of the {@link AMDMixedAttachmentSamples VK_AMD_mixed_attachment_samples} extension, {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension, or the {@code multisampledRenderToSingleSampled} feature is enabled, then the {@code rasterizationSamples} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must be the same as the current subpass color and/or depth/stencil attachments
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command, and the attachments specified by the {@code firstAttachment} and {@code attachmentCount} parameters of {@code vkCmdSetColorBlendEnableEXT} calls must specify an enable for all active color attachments in the current subpass
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command, and the attachments specified by the {@code firstAttachment} and {@code attachmentCount} parameters of {@code vkCmdSetColorBlendEquationEXT} calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command, and the attachments specified by the {@code firstAttachment} and {@code attachmentCount} parameters of {@code vkCmdSetColorWriteMaskEXT} calls must specify the color write mask for all active color attachments in the current subpass
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command, and the attachments specified by the {@code firstAttachment} and {@code attachmentCount} parameters of {@code vkCmdSetColorBlendAdvancedEXT} calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic states enabled and the last calls to {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} and {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} have enabled advanced blending, then the number of active color attachments in the current subpass must not exceed {@code advancedBlendMaxColorAttachments}
+ * - If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, and the bound graphics pipeline was created with {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} state enabled, the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have set the {@code rasterizationStream} to zero
+ * - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state disabled, then the {@code sampleLocationsPerPixel} member of {@code pSampleLocationsInfo} in the last call to {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must equal the {@code rasterizationSamples} member of the {@link VkPipelineMultisampleStateCreateInfo} structure the bound graphics pipeline has been created with
+ * - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, then the {@code sampleLocationsPerPixel} member of {@code pSampleLocationsInfo} in the last call to {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must equal the {@code rasterizationSamples} parameter of the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT}
+ * - If the bound graphics pipeline was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and {@code sampleLocationsEnable} was {@link VK10#VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the {@link EXTSampleLocations#VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT} bit set
+ * - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link VK10#VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, then the {@code sampleLocationsInfo.sampleLocationGridSize.width} in the last call to {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must evenly divide {@link VkMultisamplePropertiesEXT}{@code ::sampleLocationGridSize.width} as returned by {@link EXTSampleLocations#vkGetPhysicalDeviceMultisamplePropertiesEXT GetPhysicalDeviceMultisamplePropertiesEXT} with a {@code samples} parameter equaling {@code rasterizationSamples}
+ * - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link VK10#VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, then the {@code sampleLocationsInfo.sampleLocationGridSize.height} in the last call to {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must evenly divide {@link VkMultisamplePropertiesEXT}{@code ::sampleLocationGridSize.height} as returned by {@link EXTSampleLocations#vkGetPhysicalDeviceMultisamplePropertiesEXT GetPhysicalDeviceMultisamplePropertiesEXT} with a {@code samples} parameter equaling {@code rasterizationSamples}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link VK10#VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} set {@code coverageModulationTableEnable} to {@link VK10#VK_TRUE TRUE}, then the {@code coverageModulationTableCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
+ * - If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
+ * - If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by {@link NVCoverageReductionMode#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV}
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportSwizzleStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
+ * - If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if the current subpass has any color attachments and {@code rasterizationSamples} of the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} is greater than the number of color samples, then the pipeline {@code sampleShadingEnable} must be {@link VK10#VK_FALSE FALSE}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link VK10#VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT LINE_RASTERIZATION_MODE_RECTANGULAR_EXT}, then the {@code stippledRectangularLines} feature must be enabled
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link VK10#VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT LINE_RASTERIZATION_MODE_BRESENHAM_EXT}, then the {@code stippledBresenhamLines} feature must be enabled
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link VK10#VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT}, then the {@code stippledSmoothLines} feature must be enabled
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link VK10#VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT LINE_RASTERIZATION_MODE_DEFAULT_EXT}, then the {@code stippledRectangularLines} feature must be enabled and {@link VkPhysicalDeviceLimits}{@code ::strictLines} must be VK_TRUE
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must be {@link EXTConservativeRasterization#VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT}
+ * - If the currently bound pipeline was created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link VK10#VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link VK10#VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}, then Mesh Shader Queries must not be active
+ * - If dynamic state was inherited from {@link VkCommandBufferInheritanceViewportScissorInfoNV}, it must be set in the current command buffer prior to this drawing command
+ *
+ *
+ *
+ * - The bound graphics pipeline must not have been created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link VK10#VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link VK10#VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}
+ * - Transform Feedback Queries must not be active
+ * - Primitives Generated Queries must not be active
+ * - The {@code pipelineStatistics} member used to create any active Pipeline Statistics Query must not contain {@link VK10#VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT}, {@link VK10#VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT}, or {@link VK10#VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT}
+ *
+ *
+ *
+ * - If {@code buffer} is non-sparse then it must be bound completely and contiguously to a single {@code VkDeviceMemory} object
+ * - {@code buffer} must have been created with the {@link VK10#VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT BUFFER_USAGE_INDIRECT_BUFFER_BIT} bit set
+ * - {@code offset} must be a multiple of 4
+ * - {@code commandBuffer} must not be a protected command buffer
+ *
+ *
+ *
+ * - If the {@code multiDrawIndirect} feature is not enabled, {@code drawCount} must be 0 or 1
+ * - {@code drawCount} must be less than or equal to {@link VkPhysicalDeviceLimits}{@code ::maxDrawIndirectCount}
+ * - The current pipeline bound to {@link VK10#VK_PIPELINE_BIND_POINT_GRAPHICS PIPELINE_BIND_POINT_GRAPHICS} must contain a shader stage using the {@code ClusterCullingHUAWEI} {@code Execution} {@code Model}.
+ *
+ *
+ * Valid Usage (Implicit)
+ *
+ *
+ * - {@code commandBuffer} must be a valid {@code VkCommandBuffer} handle
+ * - {@code buffer} must be a valid {@code VkBuffer} handle
+ * - {@code commandBuffer} must be in the recording state
+ * - The {@code VkCommandPool} that {@code commandBuffer} was allocated from must support graphics operations
+ * - This command must only be called inside of a render pass instance
+ * - This command must only be called outside of a video coding scope
+ * - Both of {@code buffer}, and {@code commandBuffer} must have been created, allocated, or retrieved from the same {@code VkDevice}
+ *
+ *
+ * Host Synchronization
+ *
+ *
+ * - Host access to {@code commandBuffer} must be externally synchronized
+ * - Host access to the {@code VkCommandPool} that {@code commandBuffer} was allocated from must be externally synchronized
+ *
+ *
+ * Command Properties
+ *
+ *
+ *
+ * @param commandBuffer the command buffer into which the command is recorded.
+ * @param buffer the buffer containing draw parameters.
+ * @param offset the byte offset into {@code buffer} where parameters begin.
+ */
+ public static void vkCmdDrawClusterIndirectHUAWEI(VkCommandBuffer commandBuffer, @NativeType("VkBuffer") long buffer, @NativeType("VkDeviceSize") long offset) {
+ long __functionAddress = commandBuffer.getCapabilities().vkCmdDrawClusterIndirectHUAWEI;
+ if (CHECKS) {
+ check(__functionAddress);
+ }
+ callPJJV(commandBuffer.address(), buffer, offset, __functionAddress);
+ }
+
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/HUAWEISubpassShading.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/HUAWEISubpassShading.java
index 96fefb7f27..2e03c757f5 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/HUAWEISubpassShading.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/HUAWEISubpassShading.java
@@ -393,7 +393,6 @@ public static int vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(VkDevice devic
* If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* A valid pipeline must be bound to the pipeline bind point used by this command
- * If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link VK10#VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link VK10#VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRAndroidSurface.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRAndroidSurface.java
new file mode 100644
index 0000000000..bc7c366335
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRAndroidSurface.java
@@ -0,0 +1,176 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package org.lwjgl.vulkan;
+
+import javax.annotation.*;
+
+import java.nio.*;
+
+import org.lwjgl.system.*;
+
+import static org.lwjgl.system.Checks.*;
+import static org.lwjgl.system.JNI.*;
+import static org.lwjgl.system.MemoryUtil.*;
+
+/**
+ * The {@code VK_KHR_android_surface} extension is an instance extension. It provides a mechanism to create a {@code VkSurfaceKHR} object (defined by the {@link KHRSurface VK_KHR_surface} extension) that refers to an {@code ANativeWindow}, Android’s native surface type. The {@code ANativeWindow} represents the producer endpoint of any buffer queue, regardless of consumer endpoint. Common consumer endpoints for {@code ANativeWindows} are the system window compositor, video encoders, and application-specific compositors importing the images through a {@code SurfaceTexture}.
+ *
+ * VK_KHR_android_surface
+ *
+ *
+ * - Name String
+ * - {@code VK_KHR_android_surface}
+ * - Extension Type
+ * - Instance extension
+ * - Registered Extension Number
+ * - 9
+ * - Revision
+ * - 6
+ * - Extension and Version Dependencies
+ *
+ * - Requires support for Vulkan 1.0
+ * - Requires {@link KHRSurface VK_KHR_surface} to be enabled
+ *
+ * - Contact
+ *
+ *
+ *
+ * Other Extension Metadata
+ *
+ *
+ * - Last Modified Date
+ * - 2016-01-14
+ * - IP Status
+ * - No known IP claims.
+ * - Contributors
+ *
+ * - Patrick Doane, Blizzard
+ * - Jason Ekstrand, Intel
+ * - Ian Elliott, LunarG
+ * - Courtney Goeltzenleuchter, LunarG
+ * - Jesse Hall, Google
+ * - James Jones, NVIDIA
+ * - Antoine Labour, Google
+ * - Jon Leech, Khronos
+ * - David Mao, AMD
+ * - Norbert Nopper, Freescale
+ * - Alon Or-bach, Samsung
+ * - Daniel Rakos, AMD
+ * - Graham Sellers, AMD
+ * - Ray Smith, ARM
+ * - Jeff Vigil, Qualcomm
+ * - Chia-I Wu, LunarG
+ *
+ *
+ */
+public class KHRAndroidSurface {
+
+ /** The extension specification version. */
+ public static final int VK_KHR_ANDROID_SURFACE_SPEC_VERSION = 6;
+
+ /** The extension name. */
+ public static final String VK_KHR_ANDROID_SURFACE_EXTENSION_NAME = "VK_KHR_android_surface";
+
+ /** Extends {@code VkStructureType}. */
+ public static final int VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000;
+
+ protected KHRAndroidSurface() {
+ throw new UnsupportedOperationException();
+ }
+
+ // --- [ vkCreateAndroidSurfaceKHR ] ---
+
+ /** Unsafe version of: {@link #vkCreateAndroidSurfaceKHR CreateAndroidSurfaceKHR} */
+ public static int nvkCreateAndroidSurfaceKHR(VkInstance instance, long pCreateInfo, long pAllocator, long pSurface) {
+ long __functionAddress = instance.getCapabilities().vkCreateAndroidSurfaceKHR;
+ if (CHECKS) {
+ check(__functionAddress);
+ }
+ return callPPPPI(instance.address(), pCreateInfo, pAllocator, pSurface, __functionAddress);
+ }
+
+ /**
+ * Create a {@code VkSurfaceKHR} object for an Android native window.
+ *
+ * C Specification
+ *
+ * To create a {@code VkSurfaceKHR} object for an Android native window, call:
+ *
+ *
+ * VkResult vkCreateAndroidSurfaceKHR(
+ * VkInstance instance,
+ * const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
+ * const VkAllocationCallbacks* pAllocator,
+ * VkSurfaceKHR* pSurface);
+ *
+ * Description
+ *
+ * During the lifetime of a surface created using a particular {@code ANativeWindow} handle any attempts to create another surface for the same {@code ANativeWindow} and any attempts to connect to the same {@code ANativeWindow} through other platform mechanisms will fail.
+ *
+ * Note
+ *
+ *
In particular, only one {@code VkSurfaceKHR} can exist at a time for a given window. Similarly, a native window cannot be used by both a {@code VkSurfaceKHR} and {@code EGLSurface} simultaneously.
+ *
+ *
+ * If successful, {@code vkCreateAndroidSurfaceKHR} increments the {@code ANativeWindow}’s reference count, and {@code vkDestroySurfaceKHR} will decrement it.
+ *
+ * On Android, when a swapchain’s {@code imageExtent} does not match the surface’s {@code currentExtent}, the presentable images will be scaled to the surface’s dimensions during presentation. {@code minImageExtent} is (1,1)
, and {@code maxImageExtent} is the maximum image size supported by the consumer. For the system compositor, {@code currentExtent} is the window size (i.e. the consumer’s preferred size).
+ *
+ * Valid Usage (Implicit)
+ *
+ *
+ * - {@code instance} must be a valid {@code VkInstance} handle
+ * - {@code pCreateInfo} must be a valid pointer to a valid {@link VkAndroidSurfaceCreateInfoKHR} structure
+ * - If {@code pAllocator} is not {@code NULL}, {@code pAllocator} must be a valid pointer to a valid {@link VkAllocationCallbacks} structure
+ * - {@code pSurface} must be a valid pointer to a {@code VkSurfaceKHR} handle
+ *
+ *
+ * Return Codes
+ *
+ *
+ * - On success, this command returns
+ *
+ * - {@link VK10#VK_SUCCESS SUCCESS}
+ *
+ * - On failure, this command returns
+ *
+ * - {@link VK10#VK_ERROR_OUT_OF_HOST_MEMORY ERROR_OUT_OF_HOST_MEMORY}
+ * - {@link VK10#VK_ERROR_OUT_OF_DEVICE_MEMORY ERROR_OUT_OF_DEVICE_MEMORY}
+ * - {@link KHRSurface#VK_ERROR_NATIVE_WINDOW_IN_USE_KHR ERROR_NATIVE_WINDOW_IN_USE_KHR}
+ *
+ *
+ *
+ * See Also
+ *
+ * {@link VkAllocationCallbacks}, {@link VkAndroidSurfaceCreateInfoKHR}
+ *
+ * @param instance the instance to associate the surface with.
+ * @param pCreateInfo a pointer to a {@link VkAndroidSurfaceCreateInfoKHR} structure containing parameters affecting the creation of the surface object.
+ * @param pAllocator the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see Memory Allocation).
+ * @param pSurface a pointer to a {@code VkSurfaceKHR} handle in which the created surface object is returned.
+ */
+ @NativeType("VkResult")
+ public static int vkCreateAndroidSurfaceKHR(VkInstance instance, @NativeType("VkAndroidSurfaceCreateInfoKHR const *") VkAndroidSurfaceCreateInfoKHR pCreateInfo, @Nullable @NativeType("VkAllocationCallbacks const *") VkAllocationCallbacks pAllocator, @NativeType("VkSurfaceKHR *") LongBuffer pSurface) {
+ if (CHECKS) {
+ check(pSurface, 1);
+ }
+ return nvkCreateAndroidSurfaceKHR(instance, pCreateInfo.address(), memAddressSafe(pAllocator), memAddress(pSurface));
+ }
+
+ /** Array version of: {@link #vkCreateAndroidSurfaceKHR CreateAndroidSurfaceKHR} */
+ @NativeType("VkResult")
+ public static int vkCreateAndroidSurfaceKHR(VkInstance instance, @NativeType("VkAndroidSurfaceCreateInfoKHR const *") VkAndroidSurfaceCreateInfoKHR pCreateInfo, @Nullable @NativeType("VkAllocationCallbacks const *") VkAllocationCallbacks pAllocator, @NativeType("VkSurfaceKHR *") long[] pSurface) {
+ long __functionAddress = instance.getCapabilities().vkCreateAndroidSurfaceKHR;
+ if (CHECKS) {
+ check(__functionAddress);
+ check(pSurface, 1);
+ }
+ return callPPPPI(instance.address(), pCreateInfo.address(), memAddressSafe(pAllocator), pSurface, __functionAddress);
+ }
+
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRCreateRenderpass2.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRCreateRenderpass2.java
index d3888c357b..66b9ec1e37 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRCreateRenderpass2.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRCreateRenderpass2.java
@@ -24,7 +24,7 @@
* Elements of {@link VkRenderPassMultiviewCreateInfo}{@code ::pViewMasks} are now specified in {@link VkSubpassDescription2KHR}{@code ::viewMask}.
* Elements of {@link VkRenderPassMultiviewCreateInfo}{@code ::pViewOffsets} are now specified in {@link VkSubpassDependency2KHR}{@code ::viewOffset}.
* {@link VkRenderPassMultiviewCreateInfo}{@code ::correlationMaskCount} and {@link VkRenderPassMultiviewCreateInfo}{@code ::pCorrelationMasks} are directly specified in {@link VkRenderPassCreateInfo2KHR}.
- * {@link VkInputAttachmentAspectReference}{@code ::aspectMask} is now specified in the relevant input attachment description in {@link VkAttachmentDescription2KHR}{@code ::aspectMask}
+ * {@link VkInputAttachmentAspectReference}{@code ::aspectMask} is now specified in the relevant input attachment reference in {@link VkAttachmentReference2KHR}{@code ::aspectMask}
*
*
* The details of these mappings are explained fully in the new structures.
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRFormatFeatureFlags2.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRFormatFeatureFlags2.java
index e158418b5d..0ce9d33000 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRFormatFeatureFlags2.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRFormatFeatureFlags2.java
@@ -17,7 +17,7 @@
* {@link #VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR} indicates that an implementation supports depth comparison performed by {@code OpImage*Dref*} instructions on a given {@code VkFormat}. Previously the result of executing a {@code OpImage*Dref*} instruction on an image view, where the {@code format} was not one of the depth/stencil formats with a depth component, was undefined. This bit clarifies on which formats such instructions can be used.
*
*
- * Prior to version 2 of this extension, implementations exposing the {@code shaderStorageImageReadWithoutFormat} and {@code shaderStorageImageWriteWithoutFormat} implementations may not report {@link #VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR} and {@link #VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR} in {@link VkFormatProperties3KHR}{@code ::bufferFeatures}. Despite this, buffer reads/writes are supported as intended by the original features.
+ * Prior to version 2 of this extension, implementations exposing the {@code shaderStorageImageReadWithoutFormat} and {@code shaderStorageImageWriteWithoutFormat} features may not report {@link #VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR} and {@link #VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR} in {@link VkFormatProperties3KHR}{@code ::bufferFeatures}. Despite this, buffer reads/writes are supported as intended by the original features.
*
* Promotion to Vulkan 1.3
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRRayTracingMaintenance1.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRRayTracingMaintenance1.java
index 02505c4439..b776abbb39 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRRayTracingMaintenance1.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRRayTracingMaintenance1.java
@@ -162,7 +162,6 @@ protected KHRRayTracingMaintenance1() {
* If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* A valid pipeline must be bound to the pipeline bind point used by this command
- * If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link VK10#VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link VK10#VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRRayTracingPipeline.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRRayTracingPipeline.java
index f69b40daaf..c880093544 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRRayTracingPipeline.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRRayTracingPipeline.java
@@ -334,7 +334,6 @@ public static void nvkCmdTraceRaysKHR(VkCommandBuffer commandBuffer, long pRayge
* If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* A valid pipeline must be bound to the pipeline bind point used by this command
- * If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link VK10#VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link VK10#VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -609,9 +608,11 @@ public static int nvkGetRayTracingShaderGroupHandlesKHR(VkDevice device, long pi
* {@code firstGroup} must be less than the number of shader groups in {@code pipeline}
* The sum of {@code firstGroup} and {@code groupCount} must be less than or equal to the number of shader groups in {@code pipeline}
* {@code dataSize} must be at least {@link VkPhysicalDeviceRayTracingPipelinePropertiesKHR}::shaderGroupHandleSize × groupCount
- * {@code pipeline} must not have been created with {@link KHRPipelineLibrary#VK_PIPELINE_CREATE_LIBRARY_BIT_KHR PIPELINE_CREATE_LIBRARY_BIT_KHR}
+ * If the pipelineLibraryGroupHandles feature is not enabled, {@code pipeline} must not have been created with {@link KHRPipelineLibrary#VK_PIPELINE_CREATE_LIBRARY_BIT_KHR PIPELINE_CREATE_LIBRARY_BIT_KHR}
*
*
+ * If {@code pipeline} was created with {@link KHRPipelineLibrary#VK_PIPELINE_CREATE_LIBRARY_BIT_KHR PIPELINE_CREATE_LIBRARY_BIT_KHR} and the pipelineLibraryGroupHandles feature is enabled applications can query group handles from that pipeline, even if the pipeline is a library and is never bound to a command buffer. These group handles remain bitwise identical for any {@code pipeline} which references the pipeline library. Group indices are assigned as-if the pipeline was created without {@link KHRPipelineLibrary#VK_PIPELINE_CREATE_LIBRARY_BIT_KHR PIPELINE_CREATE_LIBRARY_BIT_KHR}.
+ *
* Valid Usage (Implicit)
*
*
@@ -691,9 +692,11 @@ public static int nvkGetRayTracingCaptureReplayShaderGroupHandlesKHR(VkDevice de
* - {@code dataSize} must be at least
{@link VkPhysicalDeviceRayTracingPipelinePropertiesKHR}::shaderGroupHandleCaptureReplaySize × groupCount
* - {@link VkPhysicalDeviceRayTracingPipelineFeaturesKHR}{@code ::rayTracingPipelineShaderGroupHandleCaptureReplay} must be enabled to call this function
* - {@code pipeline} must have been created with a {@code flags} that included {@link #VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR}
- * - {@code pipeline} must not have been created with {@link KHRPipelineLibrary#VK_PIPELINE_CREATE_LIBRARY_BIT_KHR PIPELINE_CREATE_LIBRARY_BIT_KHR}
+ * - If the pipelineLibraryGroupHandles feature is not enabled, {@code pipeline} must not have been created with {@link KHRPipelineLibrary#VK_PIPELINE_CREATE_LIBRARY_BIT_KHR PIPELINE_CREATE_LIBRARY_BIT_KHR}
*
*
+ * If {@code pipeline} was created with {@link KHRPipelineLibrary#VK_PIPELINE_CREATE_LIBRARY_BIT_KHR PIPELINE_CREATE_LIBRARY_BIT_KHR} and the pipelineLibraryGroupHandles feature is enabled applications can query capture replay group handles from that pipeline. The capture replay handle remains bitwise identical for any {@code pipeline} which references the pipeline library. Group indices are assigned as-if the pipeline was created without {@link KHRPipelineLibrary#VK_PIPELINE_CREATE_LIBRARY_BIT_KHR PIPELINE_CREATE_LIBRARY_BIT_KHR}.
+ *
* Valid Usage (Implicit)
*
*
@@ -783,7 +786,6 @@ public static void nvkCmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer, lon
* - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* - If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* - A valid pipeline must be bound to the pipeline bind point used by this command
- * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* - There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link VK10#VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link VK10#VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRSurface.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRSurface.java
index 6a39577a4b..9df7e85a57 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRSurface.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRSurface.java
@@ -211,7 +211,7 @@ public class KHRSurface {
*
* Note
*
- *
For a traditional "Linear" or non-gamma transfer function color space use {@link EXTSwapchainColorspace#VK_COLOR_SPACE_PASS_THROUGH_EXT COLOR_SPACE_PASS_THROUGH_EXT}.
+ *
For a traditional “{@code Linear}” or non-gamma transfer function color space use {@link EXTSwapchainColorspace#VK_COLOR_SPACE_PASS_THROUGH_EXT COLOR_SPACE_PASS_THROUGH_EXT}.
*
*
* The color components of non-linear color space swap chain images must have had the appropriate transfer function applied. The color space selected for the swap chain image will not affect the processing of data written into the image by the implementation. Vulkan requires that all implementations support the sRGB transfer function by use of an SRGB pixel format. Other transfer functions, such as SMPTE 170M or SMPTE2084, can be performed by the application shader. This extension defines enums for {@code VkColorSpaceKHR} that correspond to the following color spaces:
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTVideoDecodeH264.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRVideoDecodeH264.java
similarity index 55%
rename from modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTVideoDecodeH264.java
rename to modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRVideoDecodeH264.java
index aa9f3c603d..f58e248a2e 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTVideoDecodeH264.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRVideoDecodeH264.java
@@ -8,34 +8,40 @@
/**
* This extension builds upon the {@link KHRVideoDecodeQueue VK_KHR_video_decode_queue} extension by adding support for decoding elementary video stream sequences compliant with the H.264/AVC video compression standard.
*
- * VK_EXT_video_decode_h264
+ * Note
+ *
+ *
This extension was promoted to {@code KHR} from the provisional extension {@code VK_EXT_video_decode_h264}.
+ *
+ *
+ * VK_KHR_video_decode_h264
*
*
* - Name String
- * - {@code VK_EXT_video_decode_h264}
+ * - {@code VK_KHR_video_decode_h264}
* - Extension Type
* - Device extension
* - Registered Extension Number
* - 41
* - Revision
- * - 7
+ * - 8
* - Extension and Version Dependencies
*
* - Requires support for Vulkan 1.0
* - Requires {@link KHRVideoDecodeQueue VK_KHR_video_decode_queue} to be enabled for any device-level functionality
- * - This is a provisional extension and must be used with caution. See the description of provisional header files for enablement and stability details.
*
* - Contact
*
+ * - Extension Proposal
+ * - VK_KHR_video_decode_h264
*
*
* Other Extension Metadata
*
*
* - Last Modified Date
- * - 2022-09-18
+ * - 2022-09-29
* - IP Status
* - No known IP claims.
* - Contributors
@@ -52,13 +58,13 @@
*
*
*/
-public final class EXTVideoDecodeH264 {
+public final class KHRVideoDecodeH264 {
/** The extension specification version. */
- public static final int VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION = 7;
+ public static final int VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION = 8;
/** The extension name. */
- public static final String VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_EXT_video_decode_h264";
+ public static final String VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_KHR_video_decode_h264";
/**
* Extends {@code VkStructureType}.
@@ -66,45 +72,45 @@ public final class EXTVideoDecodeH264 {
* Enum values:
*
*
- * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT}
- * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT}
- * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_EXT}
- * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT}
- * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT}
- * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT}
+ * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR}
+ * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR}
+ * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR}
+ * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR}
+ * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR}
+ * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR}
*
*/
public static final int
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT = 1000040000,
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT = 1000040001,
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_EXT = 1000040003,
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000040004,
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000040005,
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT = 1000040006;
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR = 1000040000,
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR = 1000040001,
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR = 1000040003,
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000040004,
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000040005,
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR = 1000040006;
/** Extends {@code VkVideoCodecOperationFlagBitsKHR}. */
- public static final int VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT = 0x1;
+ public static final int VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 0x1;
/**
- * VkVideoDecodeH264PictureLayoutFlagBitsEXT - H.264 video decode picture layout flags
+ * VkVideoDecodeH264PictureLayoutFlagBitsKHR - H.264 video decode picture layout flags
*
* Description
*
*
- * - {@link #VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT} specifies support for progressive content. This flag has the value 0.
- * - {@link #VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT} specifies support for or use of a picture layout for interlaced content where all lines belonging to the first field are decoded to the even-numbered lines within the picture resource, and all lines belonging to the second field are decoded to the odd-numbered lines within the picture resource.
- * - {@link #VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT} specifies support for or use of a picture layout for interlaced content where all lines belonging to the first field are grouped together in a single plane, followed by another plane containing all lines belonging to the second field.
+ * - {@link #VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR} specifies support for progressive content. This flag has the value 0.
+ * - {@link #VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR} specifies support for or use of a picture layout for interlaced content where all lines belonging to the top field are decoded to the even-numbered lines within the picture resource, and all lines belonging to the bottom field are decoded to the odd-numbered lines within the picture resource.
+ * - {@link #VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR} specifies support for or use of a picture layout for interlaced content where all lines belonging to a field are grouped together in a single image subregion, and the two fields comprising the frame can be stored in separate image subregions of the same image subresource or in separate image subresources.
*
*
* See Also
*
- * {@link VkVideoDecodeH264ProfileInfoEXT}
+ * {@link VkVideoDecodeH264ProfileInfoKHR}
*/
public static final int
- VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT = 0,
- VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT = 0x1,
- VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT = 0x2;
+ VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0,
+ VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 0x1,
+ VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 0x2;
- private EXTVideoDecodeH264() {}
+ private KHRVideoDecodeH264() {}
}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTVideoDecodeH265.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRVideoDecodeH265.java
similarity index 61%
rename from modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTVideoDecodeH265.java
rename to modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRVideoDecodeH265.java
index 4a7fedc9ae..e0551101fe 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/EXTVideoDecodeH265.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRVideoDecodeH265.java
@@ -8,27 +8,33 @@
/**
* This extension builds upon the {@link KHRVideoDecodeQueue VK_KHR_video_decode_queue} extension by adding support for decoding elementary video stream sequences compliant with the H.265/HEVC video compression standard.
*
- * VK_EXT_video_decode_h265
+ * Note
+ *
+ *
This extension was promoted to {@code KHR} from the provisional extension {@code VK_EXT_video_decode_h265}.
+ *
+ *
+ * VK_KHR_video_decode_h265
*
*
* - Name String
- * - {@code VK_EXT_video_decode_h265}
+ * - {@code VK_KHR_video_decode_h265}
* - Extension Type
* - Device extension
* - Registered Extension Number
* - 188
* - Revision
- * - 6
+ * - 7
* - Extension and Version Dependencies
*
* - Requires support for Vulkan 1.0
* - Requires {@link KHRVideoDecodeQueue VK_KHR_video_decode_queue} to be enabled for any device-level functionality
- * - This is a provisional extension and must be used with caution. See the description of provisional header files for enablement and stability details.
*
* - Contact
*
+ * - Extension Proposal
+ * - VK_KHR_video_decode_h265
*
*
* Other Extension Metadata
@@ -51,13 +57,13 @@
*
*
*/
-public final class EXTVideoDecodeH265 {
+public final class KHRVideoDecodeH265 {
/** The extension specification version. */
- public static final int VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION = 6;
+ public static final int VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION = 7;
/** The extension name. */
- public static final String VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_EXT_video_decode_h265";
+ public static final String VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_KHR_video_decode_h265";
/**
* Extends {@code VkStructureType}.
@@ -65,25 +71,25 @@ public final class EXTVideoDecodeH265 {
* Enum values:
*
*
- * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT}
- * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT}
- * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT}
- * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_EXT}
- * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT}
- * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT}
+ * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR}
+ * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR}
+ * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR}
+ * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR}
+ * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR}
+ * - {@link #VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR}
*
*/
public static final int
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT = 1000187000,
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000187001,
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT = 1000187002,
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_EXT = 1000187003,
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT = 1000187004,
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT = 1000187005;
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR = 1000187000,
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000187001,
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000187002,
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR = 1000187003,
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR = 1000187004,
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR = 1000187005;
/** Extends {@code VkVideoCodecOperationFlagBitsKHR}. */
- public static final int VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT = 0x2;
+ public static final int VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 0x2;
- private EXTVideoDecodeH265() {}
+ private KHRVideoDecodeH265() {}
}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRVideoDecodeQueue.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRVideoDecodeQueue.java
index 29ca448063..635e18dead 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRVideoDecodeQueue.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRVideoDecodeQueue.java
@@ -27,25 +27,26 @@
* Registered Extension Number
* 25
* Revision
- * 6
+ * 7
* Extension and Version Dependencies
*
* - Requires support for Vulkan 1.0
* - Requires {@link KHRVideoQueue VK_KHR_video_queue} to be enabled for any device-level functionality
* - Requires {@link KHRSynchronization2 VK_KHR_synchronization2} to be enabled for any device-level functionality
- * - This is a provisional extension and must be used with caution. See the description of provisional header files for enablement and stability details.
*
* Contact
*
+ * Extension Proposal
+ * VK_KHR_video_decode_queue
*
*
* Other Extension Metadata
*
*
* - Last Modified Date
- * - 2022-08-12
+ * - 2022-09-29
* - IP Status
* - No known IP claims.
* - Contributors
@@ -64,7 +65,7 @@
public class KHRVideoDecodeQueue {
/** The extension specification version. */
- public static final int VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 6;
+ public static final int VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 7;
/** The extension name. */
public static final String VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue";
@@ -185,15 +186,15 @@ public class KHRVideoDecodeQueue {
* Description
*
*
- * - {@link #VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR} - reports the implementation supports using the same Video Picture Resource for decode DPB and decode output.
- * - {@link #VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR} - reports the implementation supports using distinct Video Picture Resources for decode DPB and decode output.
+ * - {@link #VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR} indicates support for using the same video picture resource as the reconstructed picture and decode output picture in a video decode operation.
+ * - {@link #VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR} indicates support for using distinct video picture resources as the reconstructed picture and decode output picture in a video decode operation.
*
*
- * An implementation must report at least one of {@link #VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR} or {@link #VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR} as supported.
+ * Implementations are only required to support one of {@link #VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR} and {@link #VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR}. Accordingly, applications should handle both cases to maximize portability.
*
* Note:
*
- *
If both {@link #VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR} and {@link #VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR} are supported, an application may choose to create separate images for decode DPB and decode output in the case where linear tiling is required for output but optimal tiling must still be used for DPB. This avoids scheduling layout transitions at the expense of extra overhead during decoding to write both images and the additional memory requirements.
+ *
If both {@link #VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR} and {@link #VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR} are supported, an application can choose to create separate images for decode DPB and decode output. E.g. in cases when linear tiling is preferred (and supported) for the decode output picture and the DPB requires optimal tiling, this avoids the need for a separate copy at the expense of additional memory bandwidth requirements during decoding.
*
*/
public static final int
@@ -245,21 +246,154 @@ public static void nvkCmdDecodeVideoKHR(VkCommandBuffer commandBuffer, long pDec
}
/**
- * Decode a frame.
+ * Launch a video decode operation.
*
* C Specification
*
- * To decode a frame, call:
+ * To launch video decode operations, call:
*
*
* void vkCmdDecodeVideoKHR(
* VkCommandBuffer commandBuffer,
* const VkVideoDecodeInfoKHR* pDecodeInfo);
*
+ * Description
+ *
+ * Each call issues one or more video decode operations. The implicit parameter {@code opCount} corresponds to the number of video decode operations issued by the command. After calling this command, the active query index of each active query is incremented by {@code opCount}.
+ *
+ * Currently each call to this command results in the issue of a single video decode operation.
+ *
+ *
+ * - Active Reference Picture Information
+ *
+ * - The image subregion within the image subresource referred to by the video picture resource used as the reference picture.
+ * - The DPB slot index the reference picture is associated with.
+ * - The codec-specific reference information related to the reference picture.
+ *
+ *
+ *
+ *
+ * - Reconstructed Picture Information
+ *
+ * - The image subregion within the image subresource referred to by the video picture resource used as the reconstructed picture.
+ * - The DPB slot index to activate with the reconstructed picture.
+ * - The codec-specific reference information related to the reconstructed picture.
+ *
+ *
+ *
+ *
+ * - Decode Output Picture Information
+ *
+ * - The image subregion within the image subresource referred to by the video picture resource used as the decode output picture.
+ * - The codec-specific picture information related to the decode output picture.
+ *
+ *
+ *
+ * Several limiting values are defined below that are referenced by the relevant valid usage statements of this command.
+ *
+ *
+ * - Let {@code uint32_t activeReferencePictureCount} be the size of the list of active reference pictures used by the video decode operation. Unless otherwise defined, {@code activeReferencePictureCount} is set to the value of {@code pDecodeInfo→referenceSlotCount}.
+ *
+ *
+ * - If the bound video session was created with an H.264 decode profile, then let {@code activeReferencePictureCount} be the value of {@code pDecodeInfo→referenceSlotCount} plus the number of elements of the {@code pDecodeInfo→pReferenceSlots} array that have a {@link VkVideoDecodeH264DpbSlotInfoKHR} structure included in their {@code pNext} chain with both {@code pStdReferenceInfo→flags.top_field_flag} and {@code pStdReferenceInfo→flags.bottom_field_flag} set.
+ *
+ *
+ *
+ *
+ *
+ * - Let {@code VkOffset2D codedOffsetGranularity} be the minimum alignment requirement for the coded offset of video picture resources. Unless otherwise defined, the value of the {@code x} and {@code y} members of {@code codedOffsetGranularity} are 0.
+ *
+ *
+ * - If the bound video session was created with an H.264 decode profile with a {@link VkVideoDecodeH264ProfileInfoKHR}{@code ::pictureLayout} of {@link KHRVideoDecodeH264#VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR}, then {@code codedOffsetGranularity} is equal to {@link VkVideoDecodeH264CapabilitiesKHR}{@code ::fieldOffsetGranularity}, as returned by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR} for that video profile.
+ *
+ *
+ * - Let {@code uint32_t dpbFrameUseCount[]} be an array of size {@code maxDpbSlots}, where {@code maxDpbSlots} is the {@link VkVideoSessionCreateInfoKHR}{@code ::maxDpbSlots} the bound video session was created with, with each element indicating the number of times a frame associated with the corresponding DPB slot index is referred to by the video coding operation. Let the initial value of each element of the array be 0.
+ *
+ *
+ * - If {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, then {@code dpbFrameUseCount[i]} is incremented by one, where {@code i} equals {@code pDecodeInfo→pSetupReferenceSlot→slotIndex}. If the bound video session object was created with an H.264 decode profile, then {@code dpbFrameUseCount[i]} is decremented by one if either {@code pStdReferenceInfo→flags.top_field_flag} or {@code pStdReferenceInfo→flags.bottom_field_flag} is set in the {@link VkVideoDecodeH264DpbSlotInfoKHR} structure in the {@code pDecodeInfo→pSetupReferenceSlot→pNext} chain.
+ * - For each element of {@code pDecodeInfo→pReferenceSlots}, {@code dpbFrameUseCount[i]} is incremented by one, where {@code i} equals the {@code slotIndex} member of the corresponding element. If the bound video session object was created with an H.264 decode profile, then {@code dpbFrameUseCount[i]} is decremented by one if either {@code pStdReferenceInfo→flags.top_field_flag} or {@code pStdReferenceInfo→flags.bottom_field_flag} is set in the {@link VkVideoDecodeH264DpbSlotInfoKHR} structure in the {@code pNext} chain of the corresponding element of {@code pDecodeInfo→pReferenceSlots}.
+ *
+ *
+ * - Let {@code uint32_t dpbTopFieldUseCount[]} and {@code uint32_t dpbBottomFieldUseCount[]} be arrays of size {@code maxDpbSlots}, where {@code maxDpbSlots} is the {@link VkVideoSessionCreateInfoKHR}{@code ::maxDpbSlots} the bound video session was created with, with each element indicating the number of times the top field or the bottom field, respectively, associated with the corresponding DPB slot index is referred to by the video coding operation. Let the initial value of each element of the arrays be 0.
+ *
+ *
+ * - If the bound video session object was created with an H.264 decode profile and {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, then perform the following:
+ *
+ *
+ * - If {@code pStdReferenceInfo→flags.top_field_flag} is set in the {@link VkVideoDecodeH264DpbSlotInfoKHR} structure in the {@code pDecodeInfo→pSetupReferenceSlot→pNext} chain, then {@code dpbTopFieldUseCount[i]} is incremented by one, where {@code i} equals {@code pDecodeInfo→pSetupReferenceSlot→slotIndex}.
+ * - If {@code pStdReferenceInfo→flags.bottom_field_flag} is set in the {@link VkVideoDecodeH264DpbSlotInfoKHR} structure in the {@code pDecodeInfo→pSetupReferenceSlot→pNext} chain, then {@code dpbBottomFieldUseCount[i]} is incremented by one, where {@code i} equals {@code pDecodeInfo→pSetupReferenceSlot→slotIndex}.
+ *
+ *
+ * - If the bound video session object was created with an H.264 decode profile, then perform the following for each element of {@code pDecodeInfo→pReferenceSlots}:
+ *
+ *
+ * - If {@code pStdReferenceInfo→flags.top_field_flag} is set in the {@link VkVideoDecodeH264DpbSlotInfoKHR} structure in the {@code pNext} chain of the element, then {@code dpbTopFieldUseCount[i]} is incremented by one, where {@code i} equals the {@code slotIndex} member of the element.
+ * - If {@code pStdReferenceInfo→flags.bottom_field_flag} is set in the {@link VkVideoDecodeH264DpbSlotInfoKHR} structure in the {@code pNext} chain of the element, then {@code dpbBottomFieldUseCount[i]} is incremented by one, where {@code i} equals the {@code slotIndex} member of the element.
+ *
+ *
+ *
+ *
+ *
+ *
* Valid Usage
*
*
- * - The bound video session object must not be in uninitialized state
+ * - The bound video session must not be in uninitialized state at the time the command is executed on the device
+ * - For each active query, the active query index corresponding to the query type of that query plus {@code opCount} must be less than or equal to the last activatable query index corresponding to the query type of that query plus one
+ * - {@code pDecodeInfo→srcBuffer} must be compatible with the video profile the bound video session was created with
+ * - If {@code commandBuffer} is an unprotected command buffer and {@code protectedNoFault} is not supported, then {@code pDecodeInfo→srcBuffer} must not be a protected buffer
+ * - If {@code commandBuffer} is a protected command buffer and {@code protectedNoFault} is not supported, then {@code pDecodeInfo→srcBuffer} must be a protected buffer
+ * - {@code pDecodeInfo→srcBufferOffset} must be an integer multiple of {@link VkVideoCapabilitiesKHR}{@code ::minBitstreamBufferOffsetAlignment}, as returned by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR} for the video profile the bound video session was created with
+ * - {@code pDecodeInfo→srcBufferRange} must be an integer multiple of {@link VkVideoCapabilitiesKHR}{@code ::minBitstreamBufferSizeAlignment}, as returned by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR} for the video profile the bound video session was created with
+ * - If {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL} and {@link VkVideoDecodeCapabilitiesKHR}{@code ::flags} does not include {@link #VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR}, as returned by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR} for the video profile the bound video session was created with, then the video picture resources specified by {@code pDecodeInfo→dstPictureResource} and {@code pDecodeInfo→pSetupReferenceSlot→pPictureResource} must not match
+ * - If {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL} and {@link VkVideoDecodeCapabilitiesKHR}{@code ::flags} does not include {@link #VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR}, as returned by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR} for the video profile the bound video session was created with, then the video picture resources specified by {@code pDecodeInfo→dstPictureResource} and {@code pDecodeInfo→pSetupReferenceSlot→pPictureResource} must match
+ * - {@code pDecodeInfo→dstPictureResource.imageViewBinding} must be compatible with the video profile the bound video session was created with
+ * - The format of {@code pDecodeInfo→dstPictureResource.imageViewBinding} must match the {@link VkVideoSessionCreateInfoKHR}{@code ::pictureFormat} the bound video session was created with
+ * - {@code pDecodeInfo→dstPictureResource.codedOffset} must be an integer multiple of {@code codedOffsetGranularity}
+ * - {@code pDecodeInfo→dstPictureResource.codedExtent} must be between {@code minCodedExtent} and {@code maxCodedExtent}, inclusive, the bound video session was created with
+ * - {@code pDecodeInfo→dstPictureResource.imageViewBinding} must have been created with {@link #VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR}
+ * - If {@code commandBuffer} is an unprotected command buffer and {@code protectedNoFault} is not supported, then {@code pDecodeInfo→dstPictureResource.imageViewBinding} must not have been created from a protected image
+ * - If {@code commandBuffer} is a protected command buffer and {@code protectedNoFault} is not supported, then {@code pDecodeInfo→dstPictureResource.imageViewBinding} must have been created from a protected image
+ * - If {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, then {@code pDecodeInfo→pSetupReferenceSlot→slotIndex} must be less than the {@link VkVideoSessionCreateInfoKHR}{@code ::maxDpbSlots} specified when the bound video session was created
+ * - If {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, then {@code pDecodeInfo→pSetupReferenceSlot→pPictureResource→codedOffset} must be an integer multiple of {@code codedOffsetGranularity}
+ * - If {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, then {@code pDecodeInfo→pSetupReferenceSlot→pPictureResource} must match one of the bound reference picture resource
+ * - {@code activeReferencePictureCount} must be less than or equal to the {@link VkVideoSessionCreateInfoKHR}{@code ::maxActiveReferencePictures} specified when the bound video session was created
+ * - The {@code slotIndex} member of each element of {@code pDecodeInfo→pReferenceSlots} must be less than the {@link VkVideoSessionCreateInfoKHR}{@code ::maxDpbSlots} specified when the bound video session was created
+ * - The {@code codedOffset} member of the {@link VkVideoPictureResourceInfoKHR} structure pointed to by the {@code pPictureResource} member of each element of {@code pDecodeInfo→pReferenceSlots} must be an integer multiple of {@code codedOffsetGranularity}
+ * - The {@code pPictureResource} member of each element of {@code pDecodeInfo→pReferenceSlots} must match one of the bound reference picture resource associated with the DPB slot index specified in the {@code slotIndex} member of that element
+ * - Each video picture resource corresponding to the {@code pPictureResource} member specified in the elements of {@code pDecodeInfo→pReferenceSlots} must be unique within {@code pDecodeInfo→pReferenceSlots}
+ * - All elements of {@code dpbFrameUseCount} must be less than or equal to 1
+ * - All elements of {@code dpbTopFieldUseCount} must be less than or equal to 1
+ * - All elements of {@code dpbBottomFieldUseCount} must be less than or equal to 1
+ * - If {@code pDecodeInfo→pSetupReferenceSlot} is {@code NULL} or {@code pDecodeInfo→pSetupReferenceSlot→pPictureResource} does not refer to the same image subresource as {@code pDecodeInfo→dstPictureResource}, then the image subresource referred to by {@code pDecodeInfo→dstPictureResource} must be in the {@link #VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR} layout at the time the video decode operation is executed on the device
+ * - If {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL} and {@code pDecodeInfo→pSetupReferenceSlot→pPictureResource} refers to the same image subresource as {@code pDecodeInfo→dstPictureResource}, then the image subresource referred to by {@code pDecodeInfo→dstPictureResource} must be in the {@link #VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR} layout at the time the video decode operation is executed on the device
+ * - If {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, then the image subresource referred to by {@code pDecodeInfo→pSetupReferenceSlot→pPictureResource} must be in the {@link #VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR} layout at the time the video decode operation is executed on the device
+ * - The image subresource referred to by the {@code pPictureResource} member of each element of {@code pDecodeInfo→pReferenceSlots} must be in the {@link #VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR} layout at the time the video decode operation is executed on the device
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR}, then the {@code pNext} chain of {@code pDecodeInfo} must include a {@link VkVideoDecodeH264PictureInfoKHR} structure
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR} but was not created with interlaced frame support, then the decode output picture must represent a frame
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR}, then all elements of the {@code pSliceOffsets} member of the {@link VkVideoDecodeH264PictureInfoKHR} structure included in the {@code pNext} chain of {@code pDecodeInfo} must be less than {@code pDecodeInfo→srcBufferRange}
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR}, then the bound video session parameters object must contain a {@code StdVideoH264SequenceParameterSet} entry with {@code seq_parameter_set_id} matching {@code StdVideoDecodeH264PictureInfo}{@code ::seq_parameter_set_id} that is provided in the {@code pStdPictureInfo} member of the {@link VkVideoDecodeH264PictureInfoKHR} structure included in the {@code pNext} chain of {@code pDecodeInfo}
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR}, then the bound video session parameters object must contain a {@code StdVideoH264PictureParameterSet} entry with {@code seq_parameter_set_id} and {@code pic_parameter_set_id} matching {@code StdVideoDecodeH264PictureInfo}{@code ::seq_parameter_set_id} and {@code StdVideoDecodeH264PictureInfo}{@code ::pic_parameter_set_id}, respectively, that are provided in the {@code pStdPictureInfo} member of the {@link VkVideoDecodeH264PictureInfoKHR} structure included in the {@code pNext} chain of {@code pDecodeInfo}
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR} and {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, then the {@code pNext} chain of {@code pDecodeInfo→pSetupReferenceSlot} must include a {@link VkVideoDecodeH264DpbSlotInfoKHR} structure
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR} but was not created with interlaced frame support, and {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, then the reconstructed picture must represent a frame
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR}, then the {@code pNext} chain of each element of {@code pDecodeInfo→pReferenceSlots} must include a {@link VkVideoDecodeH264DpbSlotInfoKHR} structure
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR} but was not created with interlaced frame support, then each active reference picture corresponding to the elements of {@code pDecodeInfo→pReferenceSlots} must represent a frame
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR}, {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, and the decode output picture represents a frame, then the reconstructed picture must also represent a frame
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR}, {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, and the decode output picture represents a top field, then the reconstructed picture must also represent a top field
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR}, {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, and the decode output picture represents a bottom field, then the reconstructed picture must also represent a bottom field
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR} and an active reference picture corresponding to any element of {@code pDecodeInfo→pReferenceSlots} represents a frame, then the DPB slot index of the bound video session specified by the {@code slotIndex} member of that element must be currently associated with a frame picture matching the video picture resource specified by the {@code pPictureResource} member of the same element at the time the command is executed on the device
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR} and an active reference picture corresponding to any element of {@code pDecodeInfo→pReferenceSlots} represents a top field, then the DPB slot index of the bound video session specified by the {@code slotIndex} member of that element must be currently associated with a top field picture matching the video picture resource specified by the {@code pPictureResource} member of the same element at the time the command is executed on the device
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR} and an active reference picture corresponding to any element of {@code pDecodeInfo→pReferenceSlots} represents a bottom field, then the DPB slot index of the bound video session specified by the {@code slotIndex} member of that element must be currently associated with a bottom field picture matching the video picture resource specified by the {@code pPictureResource} member of the same element at the time the command is executed on the device
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then the {@code pNext} chain of {@code pDecodeInfo} must include a {@link VkVideoDecodeH265PictureInfoKHR} structure
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then all elements of the {@code pSliceSegmentOffsets} member of the {@link VkVideoDecodeH265PictureInfoKHR} structure included in the {@code pNext} chain of {@code pDecodeInfo} must be less than {@code pDecodeInfo→srcBufferRange}
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then the bound video session parameters object must contain a {@code StdVideoH265VideoParameterSet} entry with {@code vps_video_parameter_set_id} matching {@code StdVideoDecodeH265PictureInfo}{@code ::sps_video_parameter_set_id} that is provided in the {@code pStdPictureInfo} member of the {@link VkVideoDecodeH265PictureInfoKHR} structure included in the {@code pNext} chain of {@code pDecodeInfo}
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then the bound video session parameters object must contain a {@code StdVideoH265SequenceParameterSet} entry with {@code sps_video_parameter_set_id} and {@code sps_seq_parameter_set_id} matching {@code StdVideoDecodeH265PictureInfo}{@code ::sps_video_parameter_set_id} and {@code StdVideoDecodeH265PictureInfo}{@code ::pps_seq_parameter_set_id}, respectively, that are provided in the {@code pStdPictureInfo} member of the {@link VkVideoDecodeH265PictureInfoKHR} structure included in the {@code pNext} chain of {@code pDecodeInfo}
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then the bound video session parameters object must contain a {@code StdVideoH265PictureParameterSet} entry with {@code sps_video_parameter_set_id}, {@code pps_seq_parameter_set_id}, and {@code pps_pic_parameter_set_id} matching {@code StdVideoDecodeH265PictureInfo}{@code ::sps_video_parameter_set_id}, {@code StdVideoDecodeH265PictureInfo}{@code ::pps_seq_parameter_set_id}, and {@code StdVideoDecodeH265PictureInfo}{@code ::pps_pic_parameter_set_id}, respectively, that are provided in the {@code pStdPictureInfo} member of the {@link VkVideoDecodeH265PictureInfoKHR} structure included in the {@code pNext} chain of {@code pDecodeInfo}
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR} and {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, then the {@code pNext} chain of {@code pDecodeInfo→pSetupReferenceSlot} must include a {@link VkVideoDecodeH265DpbSlotInfoKHR} structure
+ * - If the bound video session was created with the video codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then the {@code pNext} chain of each element of {@code pDecodeInfo→pReferenceSlots} must include a {@link VkVideoDecodeH265DpbSlotInfoKHR} structure
*
*
* Valid Usage (Implicit)
@@ -292,8 +426,8 @@ public static void nvkCmdDecodeVideoKHR(VkCommandBuffer commandBuffer, long pDec
*
* {@link VkVideoDecodeInfoKHR}
*
- * @param commandBuffer the command buffer to be filled with this function for decode frame command.
- * @param pDecodeInfo a pointer to a {@link VkVideoDecodeInfoKHR} structure.
+ * @param commandBuffer the command buffer in which to record the command.
+ * @param pDecodeInfo a pointer to a {@link VkVideoDecodeInfoKHR} structure specifying the parameters of the video decode operations.
*/
public static void vkCmdDecodeVideoKHR(VkCommandBuffer commandBuffer, @NativeType("VkVideoDecodeInfoKHR const *") VkVideoDecodeInfoKHR pDecodeInfo) {
nvkCmdDecodeVideoKHR(commandBuffer, pDecodeInfo.address());
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRVideoEncodeQueue.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRVideoEncodeQueue.java
index 8974459b98..c0bb0224f1 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRVideoEncodeQueue.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRVideoEncodeQueue.java
@@ -301,7 +301,7 @@ public class KHRVideoEncodeQueue {
*
{@link #VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR} specifies the default tuning mode.
* {@link #VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR} specifies that video encoding is tuned for high quality. When using this tuning mode, the implementation may compromise the latency of video encoding operations to improve quality.
* {@link #VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR} specifies that video encoding is tuned for low latency. When using this tuning mode, the implementation may compromise quality to increase the performance and lower the latency of video encode operations.
- * {@link #VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR} specifies that video encoding is tuned for ultra-low latency. When using this tuning mode, the implementation may compromise quality to maximimize the performance and minimize the latency of video encoding operations.
+ * {@link #VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR} specifies that video encoding is tuned for ultra-low latency. When using this tuning mode, the implementation may compromise quality to maximize the performance and minimize the latency of video encoding operations.
* {@link #VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR} specifies that video encoding is tuned for lossless encoding. When using this tuning mode, video encode operations produce lossless output.
*
*
@@ -337,13 +337,25 @@ public static void nvkCmdEncodeVideoKHR(VkCommandBuffer commandBuffer, long pEnc
*
* C Specification
*
- * To launch an encode operation that results in bitstream generation, call:
+ * To launch video encode operations, call:
*
*
* void vkCmdEncodeVideoKHR(
* VkCommandBuffer commandBuffer,
* const VkVideoEncodeInfoKHR* pEncodeInfo);
*
+ * Description
+ *
+ * Each call issues one or more video encode operations. The implicit parameter {@code opCount} corresponds to the number of video encode operations issued by the command. After calling this command, the active query index of each active query is incremented by {@code opCount}.
+ *
+ * Currently each call to this command results in the issue of a single video encode operation.
+ *
+ * Valid Usage
+ *
+ *
+ *
* Valid Usage (Implicit)
*
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRVideoQueue.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRVideoQueue.java
index a5a6b3a013..0189288ea1 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRVideoQueue.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRVideoQueue.java
@@ -37,25 +37,26 @@
* - Registered Extension Number
* - 24
* - Revision
- * - 7
+ * - 8
* - Extension and Version Dependencies
*
* - Requires support for Vulkan 1.1
* - Requires {@link KHRGetPhysicalDeviceProperties2 VK_KHR_get_physical_device_properties2} to be enabled for any device-level functionality
* - Requires {@link KHRSynchronization2 VK_KHR_synchronization2} to be enabled for any device-level functionality
- * - This is a provisional extension and must be used with caution. See the description of provisional header files for enablement and stability details.
*
* - Contact
*
+ * - Extension Proposal
+ * - VK_KHR_video_queue
*
*
* Other Extension Metadata
*
*
* - Last Modified Date
- * - 2022-09-26
+ * - 2022-09-29
* - IP Status
* - No known IP claims.
* - Contributors
@@ -74,7 +75,7 @@
public class KHRVideoQueue {
/** The extension specification version. */
- public static final int VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 7;
+ public static final int VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 8;
/** The extension name. */
public static final String VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue";
@@ -166,16 +167,14 @@ public class KHRVideoQueue {
VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR = -1000023005;
/**
- * VkVideoCodecOperationFlagBitsKHR - Video codec operation types
+ * VkVideoCodecOperationFlagBitsKHR - Video codec operation bits
*
* Description
*
- * Each decode or encode codec-specific extension extends this enumeration with the appropriate bit corresponding to the extension’s codec operation:
- *
*
* - {@link #VK_VIDEO_CODEC_OPERATION_NONE_KHR VIDEO_CODEC_OPERATION_NONE_KHR} indicates no support for any video codec operations.
- * - {@link EXTVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT} specifies support for H.264 video decode operations.
- * - {@link EXTVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT} specifies support for H.265 video decode operations.
+ * - {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR} specifies support for H.264 video decode operations.
+ * - {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR} specifies support for H.265 video decode operations.
* - {@link EXTVideoEncodeH264#VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT} specifies support for H.264 video encode operations.
* - {@link EXTVideoEncodeH265#VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT} specifies support for H.265 video encode operations.
*
@@ -187,15 +186,15 @@ public class KHRVideoQueue {
public static final int VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0;
/**
- * VkVideoChromaSubsamplingFlagBitsKHR - Video chroma subsampling
+ * VkVideoChromaSubsamplingFlagBitsKHR - Video format chroma subsampling bits
*
* Description
*
*
- * - {@link #VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR} - the format is monochrome.
- * - {@link #VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR} - the format is 4:2:0 chroma subsampled. The two chroma components are each subsampled at a factor of 2 both horizontally and vertically.
- * - {@link #VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR} - the format is 4:2:2 chroma subsampled. The two chroma components are sampled at half the sample rate of luma. The horizontal chroma resolution is halved.
- * - {@link #VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR} - the format is 4:4:4 chroma sampled. Each of the three YCbCr components have the same sample rate, thus there is no chroma subsampling.
+ * - {@link #VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR} specifies that the format is monochrome.
+ * - {@link #VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR} specified that the format is 4:2:0 chroma subsampled, i.e. the two chroma components are sampled horizontally and vertically at half the sample rate of the luma component.
+ * - {@link #VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR} - the format is 4:2:2 chroma subsampled, i.e. the two chroma components are sampled horizontally at half the sample rate of luma component.
+ * - {@link #VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR} - the format is 4:4:4 chroma sampled, i.e. all three components of the Y′CBCR format are sampled at the same rate, thus there is no chroma subsampling.
*
*
* Enum values:
@@ -212,14 +211,14 @@ public class KHRVideoQueue {
VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 0x8;
/**
- * VkVideoComponentBitDepthFlagBitsKHR - Video component bit depth
+ * VkVideoComponentBitDepthFlagBitsKHR - Video format component bit depth
*
* Description
*
*
- * - {@link #VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR} - the format component bit depth is 8 bits.
- * - {@link #VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR} - the format component bit depth is 10 bits.
- * - {@link #VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR} - the format component bit depth is 12 bits.
+ * - {@link #VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR} specifies a component bit depth of 8 bits.
+ * - {@link #VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR} specifies a component bit depth of 10 bits.
+ * - {@link #VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR} specifies a component bit depth of 12 bits.
*
*
* Enum values:
@@ -235,13 +234,13 @@ public class KHRVideoQueue {
VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 0x10;
/**
- * VkVideoCapabilityFlagBitsKHR - Video Decode and Encode Capability Flags
+ * VkVideoCapabilityFlagBitsKHR - Video decode and encode capability bits
*
* Description
*
*
- * - {@link #VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR} - the decode or encode session supports protected content.
- * - {@link #VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR} - the DPB or Reconstructed Video Picture Resources for the video session may be created as a separate {@code VkImage} for each DPB picture. If not supported, the DPB must be created as single multi-layered image where each layer represents one of the DPB Video Picture Resources.
+ * - {@link #VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR} specifies that video sessions support producing and consuming protected content.
+ * - {@link #VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR} specifies that the video picture resources associated with the DPB slots of a video session can be backed by separate {@code VkImage} objects. If this capability flag is not present, then all DPB slots of a video session must be associated with video picture resources backed by the same {@code VkImage} object (e.g. using different layers of the same image).
*
*/
public static final int
@@ -249,12 +248,12 @@ public class KHRVideoQueue {
VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0x2;
/**
- * VkVideoSessionCreateFlagBitsKHR - Video decode or encode video session creation flags
+ * VkVideoSessionCreateFlagBitsKHR - Video session creation flags
*
* Description
*
*
- * - {@link #VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR} - create the video session for use with protected video content
+ * - {@link #VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR} specifies that the video session uses protected video content.
*
*/
public static final int VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0x1;
@@ -304,11 +303,11 @@ public static int nvkGetPhysicalDeviceVideoCapabilitiesKHR(VkPhysicalDevice phys
}
/**
- * Query video decode or encode capabilities.
+ * Query video coding capabilities.
*
* C Specification
*
- * To query video decode or encode capabilities for a specific codec, call:
+ * To query video coding capabilities for a specific video profile, call:
*
*
* VkResult vkGetPhysicalDeviceVideoCapabilitiesKHR(
@@ -316,6 +315,21 @@ public static int nvkGetPhysicalDeviceVideoCapabilitiesKHR(VkPhysicalDevice phys
* const VkVideoProfileInfoKHR* pVideoProfile,
* VkVideoCapabilitiesKHR* pCapabilities);
*
+ * Description
+ *
+ * If the video profile described by {@code pVideoProfile} is supported by the implementation, then this command returns {@link VK10#VK_SUCCESS SUCCESS} and {@code pCapabilities} is filled with the capabilities supported with the specified video profile. Otherwise, one of the video-profile-specific error codes are returned.
+ *
+ * Valid Usage
+ *
+ *
+ * - If {@code pVideoProfile→videoCodecOperation} specifies a decode operation, then the {@code pNext} chain of {@code pCapabilities} must include a {@link VkVideoDecodeCapabilitiesKHR} structure
+ * - If {@code pVideoProfile→videoCodecOperation} is {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR}, then the {@code pNext} chain of {@code pCapabilities} must include a {@link VkVideoDecodeH264CapabilitiesKHR} structure
+ * - If {@code pVideoProfile→videoCodecOperation} is {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then the {@code pNext} chain of {@code pCapabilities} must include a {@link VkVideoDecodeH265CapabilitiesKHR} structure
+ * - If {@code pVideoProfile→videoCodecOperation} specifies an encode operation, then the {@code pNext} chain of {@code pCapabilities} must include a {@link VkVideoEncodeCapabilitiesKHR} structure
+ * - If {@code pVideoProfile→videoCodecOperation} is {@link EXTVideoEncodeH264#VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT}, then the {@code pNext} chain of {@code pCapabilities} must include a {@link VkVideoEncodeH264CapabilitiesEXT} structure
+ * - If {@code pVideoProfile→videoCodecOperation} is {@link EXTVideoEncodeH265#VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT}, then the {@code pNext} chain of {@code pCapabilities} must include a {@link VkVideoEncodeH265CapabilitiesEXT} structure
+ *
+ *
* Valid Usage (Implicit)
*
*
@@ -346,8 +360,8 @@ public static int nvkGetPhysicalDeviceVideoCapabilitiesKHR(VkPhysicalDevice phys
*
* {@link VkVideoCapabilitiesKHR}, {@link VkVideoProfileInfoKHR}
*
- * @param physicalDevice the physical device whose video decode or encode capabilities will be queried.
- * @param pVideoProfile a pointer to a {@link VkVideoProfileInfoKHR} structure with a chained codec-operation specific video profile structure.
+ * @param physicalDevice the physical device from which to query the video decode or encode capabilities.
+ * @param pVideoProfile a pointer to a {@link VkVideoProfileInfoKHR} structure.
* @param pCapabilities a pointer to a {@link VkVideoCapabilitiesKHR} structure in which the capabilities are returned.
*/
@NativeType("VkResult")
@@ -371,11 +385,11 @@ public static int nvkGetPhysicalDeviceVideoFormatPropertiesKHR(VkPhysicalDevice
}
/**
- * Query supported Video Decode and Encode image formats.
+ * Query supported video decode and encode image formats and capabilities.
*
* C Specification
*
- * To enumerate the supported output, input and DPB image formats for a specific codec operation and video profile, call:
+ * To enumerate the supported output, input and DPB image formats and corresponding capabilities for a specific video profile, call:
*
*
* VkResult vkGetPhysicalDeviceVideoFormatPropertiesKHR(
@@ -388,9 +402,17 @@ public static int nvkGetPhysicalDeviceVideoFormatPropertiesKHR(VkPhysicalDevice
*
* If {@code pVideoFormatProperties} is {@code NULL}, then the number of video format properties supported for the given {@code physicalDevice} is returned in {@code pVideoFormatPropertyCount}. Otherwise, {@code pVideoFormatPropertyCount} must point to a variable set by the user to the number of elements in the {@code pVideoFormatProperties} array, and on return the variable is overwritten with the number of values actually written to {@code pVideoFormatProperties}. If the value of {@code pVideoFormatPropertyCount} is less than the number of video format properties supported, at most {@code pVideoFormatPropertyCount} values will be written to {@code pVideoFormatProperties}, and {@link VK10#VK_INCOMPLETE INCOMPLETE} will be returned instead of {@link VK10#VK_SUCCESS SUCCESS}, to indicate that not all the available values were returned.
*
- * If an implementation reports {@link KHRVideoDecodeQueue#VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR} is supported but {@link KHRVideoDecodeQueue#VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR} is not supported in {@link VkVideoDecodeCapabilitiesKHR}{@code ::flags}, then to query for video format properties for decode DPB or output, {@link VkPhysicalDeviceVideoFormatInfoKHR}{@code ::imageUsage} must have both {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR} and {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR} set. Otherwise, the call will fail with {@link #VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR}.
+ * Video format properties are always queried with respect to a specific set of video profiles. These are specified by chaining the {@link VkVideoProfileListInfoKHR} structure to {@code pVideoFormatInfo}.
*
- * If an implementation reports {@link KHRVideoDecodeQueue#VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR} is supported but {@link KHRVideoDecodeQueue#VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR} is not supported in {@link VkVideoDecodeCapabilitiesKHR}{@code ::flags}, then to query for video format properties for decode DPB, {@link VkPhysicalDeviceVideoFormatInfoKHR}{@code ::imageUsage} must have {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR} set and {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR} not set. Otherwise, the call will fail with {@link #VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR}. Similarly, to query for video format properties for decode output, {@link VkPhysicalDeviceVideoFormatInfoKHR}{@code ::imageUsage} must have {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR} set and {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR} not set. Otherwise, the call will fail with {@link #VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR}.
+ * For most use cases, the images are used by a single video session and a single video profile is provided. For a use case such as video transcoding, where a decode session output image can be used as encode input in one or more encode sessions, multiple video profiles corresponding to the video sessions that will share the image must be provided.
+ *
+ * If any of the video profiles specified via {@link VkVideoProfileListInfoKHR}{@code ::pProfiles} are not supported, then this command returns one of the video-profile-specific error codes. Furthermore, if {@link VkPhysicalDeviceVideoFormatInfoKHR}{@code ::imageUsage} includes any image usage flags not supported by the specified video profiles, then this command returns {@link #VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR}.
+ *
+ * This command also returns {@link #VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR} if {@link VkPhysicalDeviceVideoFormatInfoKHR}{@code ::imageUsage} does not include the appropriate flags as dictated by the decode capability flags returned in {@link VkVideoDecodeCapabilitiesKHR}{@code ::flags} for any of the profiles specified in the {@link VkVideoProfileListInfoKHR} structure provided in the {@code pNext} chain of {@code pVideoFormatInfo}.
+ *
+ * If the decode capability flags include {@link KHRVideoDecodeQueue#VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR} but not {@link KHRVideoDecodeQueue#VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR}, then in order to query video format properties for decode DPB and output usage, {@link VkPhysicalDeviceVideoFormatInfoKHR}{@code ::imageUsage} must include both {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR} and {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR}. Otherwise, the call will fail with {@link #VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR}.
+ *
+ * If the decode capability flags include {@link KHRVideoDecodeQueue#VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR} but not {@link KHRVideoDecodeQueue#VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR}, then in order to query video format properties for decode DPB usage, {@link VkPhysicalDeviceVideoFormatInfoKHR}{@code ::imageUsage} must include {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR}, but not {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR}. Otherwise, the call will fail with {@link #VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR}. Similarly, to query video format properties for decode output usage, {@link VkPhysicalDeviceVideoFormatInfoKHR}{@code ::imageUsage} must include {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR}, but not {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR}. Otherwise, the call will fail with {@link #VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR}.
*
* The {@code imageUsage} member of the {@link VkPhysicalDeviceVideoFormatInfoKHR} structure specifies the expected video usage flags that the returned video formats must support. Correspondingly, the {@code imageUsageFlags} member of each {@link VkVideoFormatPropertiesKHR} structure returned will contain at least the same set of image usage flags.
*
@@ -401,12 +423,6 @@ public static int nvkGetPhysicalDeviceVideoFormatPropertiesKHR(VkPhysicalDevice
* For most use cases, only decode or encode related usage flags are going to be specified. For a use case such as transcode, if the image were to be shared between decode and encode session(s), then both decode and encode related usage flags can be set.
*
*
- * Video format properties are always queried with respect to a specific set of video profiles, as defined by the {@link VkVideoProfileInfoKHR} structure. These are specified by chaining the {@link VkVideoProfileListInfoKHR} structure to {@code pVideoFormatInfo}.
- *
- * For most use cases, the images are used by a single video session and a single video profile is provided. For a use case such as transcode, where a decode session output image can be used as encode input in one or more encode sessions, multiple video profiles corresponding to the video sessions that will share the image must be provided.
- *
- * If any of the profiles specified via {@link VkVideoProfileListInfoKHR}{@code ::pProfiles} are not supported, then {@code vkGetPhysicalDeviceVideoFormatPropertiesKHR} returns one of the video-profile-specific error codes. Furthermore, if {@link VkPhysicalDeviceVideoFormatInfoKHR}{@code ::imageUsage} includes any image usage flags not supported by the specified video profiles then {@code vkGetPhysicalDeviceVideoFormatPropertiesKHR} returns {@link #VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR}.
- *
* Multiple {@link VkVideoFormatPropertiesKHR} entries may be returned with the same {@code format} member with different {@code componentMapping}, {@code imageType}, or {@code imageTiling} values, as described later.
*
* In addition, a different set of {@link VkVideoFormatPropertiesKHR} entries may be returned depending on the {@code imageUsage} member of the {@link VkPhysicalDeviceVideoFormatInfoKHR} structure, even for the same set of video profiles, for example, based on whether encode input, encode DPB, decode output, and/or decode DPB usage is requested.
@@ -426,7 +442,7 @@ public static int nvkGetPhysicalDeviceVideoFormatPropertiesKHR(VkPhysicalDevice
* Valid Usage
*
*
- * - The {@code pNext} chain of {@code pVideoFormatInfo} must include a valid {@link VkVideoProfileListInfoKHR} structure with {@code profileCount} greater than 0
+ * - The {@code pNext} chain of {@code pVideoFormatInfo} must include a {@link VkVideoProfileListInfoKHR} structure with {@code profileCount} greater than 0
*
*
* Valid Usage (Implicit)
@@ -462,10 +478,10 @@ public static int nvkGetPhysicalDeviceVideoFormatPropertiesKHR(VkPhysicalDevice
*
* {@link VkPhysicalDeviceVideoFormatInfoKHR}, {@link VkVideoFormatPropertiesKHR}
*
- * @param physicalDevice the physical device being queried.
- * @param pVideoFormatInfo a pointer to a {@link VkPhysicalDeviceVideoFormatInfoKHR} structure specifying the codec and video profile for which information is returned.
+ * @param physicalDevice the physical device from which to query the video format properties.
+ * @param pVideoFormatInfo a pointer to a {@link VkPhysicalDeviceVideoFormatInfoKHR} structure specifying the usage and video profiles for which supported image formats and capabilities are returned.
* @param pVideoFormatPropertyCount a pointer to an integer related to the number of video format properties available or queried, as described below.
- * @param pVideoFormatProperties a pointer to an array of {@link VkVideoFormatPropertiesKHR} structures in which supported formats and image parameters are returned.
+ * @param pVideoFormatProperties a pointer to an array of {@link VkVideoFormatPropertiesKHR} structures in which supported image formats and capabilities are returned.
*/
@NativeType("VkResult")
public static int vkGetPhysicalDeviceVideoFormatPropertiesKHR(VkPhysicalDevice physicalDevice, @NativeType("VkPhysicalDeviceVideoFormatInfoKHR const *") VkPhysicalDeviceVideoFormatInfoKHR pVideoFormatInfo, @NativeType("uint32_t *") IntBuffer pVideoFormatPropertyCount, @Nullable @NativeType("VkVideoFormatPropertiesKHR *") VkVideoFormatPropertiesKHR.Buffer pVideoFormatProperties) {
@@ -504,7 +520,19 @@ public static int nvkCreateVideoSessionKHR(VkDevice device, long pCreateInfo, lo
*
* Description
*
- * Video session objects are created in uninitialized state. In order to transition the video session into initial state, the application must issue a {@link #vkCmdControlVideoCodingKHR CmdControlVideoCodingKHR} command with the {@code flags} member of {@link VkVideoCodingControlInfoKHR} including {@link #VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR VIDEO_CODING_CONTROL_RESET_BIT_KHR}.
+ * The resulting video session object is said to be created with the video codec operation specified in {@code pCreateInfo→pVideoProfile→videoCodecOperation}.
+ *
+ * The name and version of the codec-specific Video Std header to be used with the video session is specified by the {@link VkExtensionProperties} structure pointed to by {@code pCreateInfo→pStdHeaderVersion}. If a non-existent or unsupported Video Std header version is specified in {@code pCreateInfo→pStdHeaderVersion→specVersion}, then this command returns {@link #VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR}.
+ *
+ * Video session objects are created in uninitialized state. In order to transition the video session into initial state, the application must issue a {@link #vkCmdControlVideoCodingKHR CmdControlVideoCodingKHR} command with {@link VkVideoCodingControlInfoKHR}{@code ::flags} including {@link #VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR VIDEO_CODING_CONTROL_RESET_BIT_KHR}.
+ *
+ * Video session objects also maintain the state of the DPB. The number of DPB slots usable with the created video session is specified in {@code pCreateInfo→maxDpbSlots}, and each slot is initially in the inactive state.
+ *
+ * Each DPB slot maintained by the created video session can refer to a reference picture representing a video frame.
+ *
+ * In addition, if the {@code videoCodecOperation} member of the {@link VkVideoProfileInfoKHR} structure pointed to by {@code pCreateInfo→pVideoProfile} is {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR} and the {@code pictureLayout} member of the {@link VkVideoDecodeH264ProfileInfoKHR} structure provided in the {@link VkVideoProfileInfoKHR}{@code ::pNext} chain is not {@link KHRVideoDecodeH264#VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR}, then the created video session supports interlaced frames and each DPB slot maintained by the created video session can instead refer to separate top field and bottom field reference pictures that together can represent a full video frame. In this case, it is up to the application, driven by the video content, whether it associates any individual DPB slot with separate top and/or bottom field pictures or a single picture representing a full frame.
+ *
+ * The created video session can be used to perform video coding operations using video frames up to the maximum size specified in {@code pCreateInfo→maxCodedExtent}. The minimum frame size allowed is implicitly derived from {@link VkVideoCapabilitiesKHR}{@code ::minCodedExtent}, as returned by {@link #vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR} for the video profile specified by {@code pCreateInfo→pVideoProfile}. Accordingly, the created video session is said to be created with a {@code minCodedExtent} equal to that.
*
* Valid Usage (Implicit)
*
@@ -535,10 +563,10 @@ public static int nvkCreateVideoSessionKHR(VkDevice device, long pCreateInfo, lo
*
* {@link VkAllocationCallbacks}, {@link VkVideoSessionCreateInfoKHR}
*
- * @param device the logical device that creates the decode or encode session object.
- * @param pCreateInfo a pointer to a {@link VkVideoSessionCreateInfoKHR} structure containing parameters specifying the creation of the decode or encode session.
+ * @param device the logical device that creates the video session.
+ * @param pCreateInfo a pointer to a {@link VkVideoSessionCreateInfoKHR} structure containing parameters to be used to create the video session.
* @param pAllocator controls host memory allocation as described in the Memory Allocation chapter.
- * @param pVideoSession a pointer to a {@code VkVideoSessionKHR} structure specifying the decode or encode video session object which will be created by this function when it returns {@link VK10#VK_SUCCESS SUCCESS}
+ * @param pVideoSession a pointer to a {@code VkVideoSessionKHR} handle in which the resulting video session object is returned.
*/
@NativeType("VkResult")
public static int vkCreateVideoSessionKHR(VkDevice device, @NativeType("VkVideoSessionCreateInfoKHR const *") VkVideoSessionCreateInfoKHR pCreateInfo, @Nullable @NativeType("VkAllocationCallbacks const *") VkAllocationCallbacks pAllocator, @NativeType("VkVideoSessionKHR *") LongBuffer pVideoSession) {
@@ -560,11 +588,11 @@ public static void nvkDestroyVideoSessionKHR(VkDevice device, long videoSession,
}
/**
- * Destroy decode session object.
+ * Destroy video session object.
*
* C Specification
*
- * To destroy a decode session object, call:
+ * To destroy a video session, call:
*
*
* void vkDestroyVideoSessionKHR(
@@ -572,6 +600,14 @@ public static void nvkDestroyVideoSessionKHR(VkDevice device, long videoSession,
* VkVideoSessionKHR videoSession,
* const VkAllocationCallbacks* pAllocator);
*
+ * Valid Usage
+ *
+ *
+ * - All submitted commands that refer to {@code videoSession} must have completed execution
+ * - If {@link VkAllocationCallbacks} were provided when {@code videoSession} was created, a compatible set of callbacks must be provided here
+ * - If no {@link VkAllocationCallbacks} were provided when {@code videoSession} was created, {@code pAllocator} must be {@code NULL}
+ *
+ *
* Valid Usage (Implicit)
*
*
@@ -591,8 +627,8 @@ public static void nvkDestroyVideoSessionKHR(VkDevice device, long videoSession,
*
* {@link VkAllocationCallbacks}
*
- * @param device the device that was used for the creation of the video session.
- * @param videoSession the decode or encode video session to be destroyed.
+ * @param device the logical device that destroys the video session.
+ * @param videoSession the video session to destroy.
* @param pAllocator controls host memory allocation as described in the Memory Allocation chapter.
*/
public static void vkDestroyVideoSessionKHR(VkDevice device, @NativeType("VkVideoSessionKHR") long videoSession, @Nullable @NativeType("VkAllocationCallbacks const *") VkAllocationCallbacks pAllocator) {
@@ -615,11 +651,11 @@ public static int nvkGetVideoSessionMemoryRequirementsKHR(VkDevice device, long
}
/**
- * Get Memory Requirements.
+ * Get the memory requirements for a video session.
*
* C Specification
*
- * To get memory requirements for a video session, call:
+ * To determine the memory requirements for a video session object, call:
*
*
* VkResult vkGetVideoSessionMemoryRequirementsKHR(
@@ -650,10 +686,6 @@ public static int nvkGetVideoSessionMemoryRequirementsKHR(VkDevice device, long
* - {@link VK10#VK_SUCCESS SUCCESS}
* - {@link VK10#VK_INCOMPLETE INCOMPLETE}
*
- * On failure, this command returns
- *
- * - {@link VK10#VK_ERROR_INITIALIZATION_FAILED ERROR_INITIALIZATION_FAILED}
- *
*
*
* See Also
@@ -703,6 +735,26 @@ public static int nvkBindVideoSessionMemoryKHR(VkDevice device, long videoSessio
* uint32_t bindSessionMemoryInfoCount,
* const VkBindVideoSessionMemoryInfoKHR* pBindSessionMemoryInfos);
*
+ * Description
+ *
+ * The valid usage statements below refer to the {@link VkMemoryRequirements} structure corresponding to a specific element of {@code pBindSessionMemoryInfos}, which is defined as follows:
+ *
+ *
+ * - If the {@code memoryBindIndex} member of the element of {@code pBindSessionMemoryInfos} in question matches the {@code memoryBindIndex} member of one of the elements returned in {@code pMemoryRequirements} when {@link #vkGetVideoSessionMemoryRequirementsKHR GetVideoSessionMemoryRequirementsKHR} is called with the same {@code videoSession} and with {@code pMemoryRequirementsCount} equal to {@code bindSessionMemoryInfoCount}, then the {@code memoryRequirements} member of that element of {@code pMemoryRequirements} is the {@link VkMemoryRequirements} structure corresponding to the element of {@code pBindSessionMemoryInfos} in question.
+ * - Otherwise the element of {@code pBindSessionMemoryInfos} in question is said to not have a corresponding {@link VkMemoryRequirements} structure.
+ *
+ *
+ * Valid Usage
+ *
+ *
+ * - The memory binding of {@code videoSession} identified by the {@code memoryBindIndex} member of any element of {@code pBindSessionMemoryInfos} must not already be backed by a memory object
+ * - The {@code memoryBindIndex} member of each element of {@code pBindSessionMemoryInfos} must be unique within {@code pBindSessionMemoryInfos}
+ * - Each element of {@code pBindSessionMemoryInfos} must have a corresponding {@link VkMemoryRequirements} structure
+ * - If an element of {@code pBindSessionMemoryInfos} has a corresponding {@link VkMemoryRequirements} structure, then the {@code memory} member of that element of {@code pBindSessionMemoryInfos} must have been allocated using one of the memory types allowed in the {@code memoryTypeBits} member of the corresponding {@link VkMemoryRequirements} structure
+ * - If an element of {@code pBindSessionMemoryInfos} has a corresponding {@link VkMemoryRequirements} structure, then the {@code memoryOffset} member of that element of {@code pBindSessionMemoryInfos} must be an integer multiple of the {@code alignment} member of the corresponding {@link VkMemoryRequirements} structure
+ * - If an element of {@code pBindSessionMemoryInfos} has a corresponding {@link VkMemoryRequirements} structure, then the {@code memorySize} member of that element of {@code pBindSessionMemoryInfos} must equal the {@code size} member of the corresponding {@link VkMemoryRequirements} structure
+ *
+ *
* Valid Usage (Implicit)
*
*
@@ -730,7 +782,6 @@ public static int nvkBindVideoSessionMemoryKHR(VkDevice device, long videoSessio
*
* - {@link VK10#VK_ERROR_OUT_OF_HOST_MEMORY ERROR_OUT_OF_HOST_MEMORY}
* - {@link VK10#VK_ERROR_OUT_OF_DEVICE_MEMORY ERROR_OUT_OF_DEVICE_MEMORY}
- * - {@link VK10#VK_ERROR_INITIALIZATION_FAILED ERROR_INITIALIZATION_FAILED}
*
*
*
@@ -759,7 +810,7 @@ public static int nvkCreateVideoSessionParametersKHR(VkDevice device, long pCrea
}
/**
- * Creates video session video session parameter object.
+ * Creates video session parameters object.
*
* C Specification
*
@@ -772,6 +823,57 @@ public static int nvkCreateVideoSessionParametersKHR(VkDevice device, long pCrea
* const VkAllocationCallbacks* pAllocator,
* VkVideoSessionParametersKHR* pVideoSessionParameters);
*
+ * Description
+ *
+ * The resulting video session parameters object is said to be created with the video codec operation {@code pCreateInfo→videoSession} was created with.
+ *
+ * If {@code pCreateInfo→videoSessionParametersTemplate} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, then it will be used as a template for constructing the new video session parameters object. This happens by first adding any parameters according to the additional creation parameters provided in the {@code pCreateInfo→pNext} chain, followed by adding any parameters from the template object that have a key that does not match the key of any of the already added parameters.
+ *
+ * If {@code pCreateInfo→videoSession} was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR}, then the created video session parameters object will initially contain the following sets of parameter entries:
+ *
+ *
+ * - {@code StdVideoH264SequenceParameterSet} structures representing H.264 SPS entries, as follows:
+ *
+ *
+ * - If the {@code pParametersAddInfo} member of the {@link VkVideoDecodeH264SessionParametersCreateInfoKHR} structure provided in the {@code pCreateInfo→pNext} chain is not {@code NULL}, then the set of {@code StdVideoH264SequenceParameterSet} entries specified in {@code pParametersAddInfo→pStdSPSs} are added first;
+ * - If {@code pCreateInfo→videoSessionParametersTemplate} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, then each {@code StdVideoH264SequenceParameterSet} entry stored in it is copied to the created video session parameters object if the created object does not already contain such an entry with the same {@code seq_parameter_set_id}.
+ *
+ *
+ * - {@code StdVideoH264PictureParameterSet} structures representing H.264 PPS entries, as follows:
+ *
+ *
+ * - If the {@code pParametersAddInfo} member of the {@link VkVideoDecodeH264SessionParametersCreateInfoKHR} structure provided in the {@code pCreateInfo→pNext} chain is not {@code NULL}, then the set of {@code StdVideoH264PictureParameterSet} entries specified in {@code pParametersAddInfo→pStdPPSs} are added first;
+ * - If {@code pCreateInfo→videoSessionParametersTemplate} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, then each {@code StdVideoH264PictureParameterSet} entry stored in it is copied to the created video session parameters object if the created object does not already contain such an entry with the same {@code seq_parameter_set_id} and {@code pic_parameter_set_id}.
+ *
+ *
+ *
+ *
+ * If {@code pCreateInfo→videoSession} was created with the video codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then the created video session parameters object will initially contain the following sets of parameter entries:
+ *
+ *
+ * - {@code StdVideoH265VideoParameterSet} structures representing H.264 VPS entries, as follows:
+ *
+ *
+ * - If the {@code pParametersAddInfo} member of the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR} structure provided in the {@code pCreateInfo→pNext} chain is not {@code NULL}, then the set of {@code StdVideoH265VideoParameterSet} entries specified in {@code pParametersAddInfo→pStdVPSs} are added first;
+ * - If {@code pCreateInfo→videoSessionParametersTemplate} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, then each {@code StdVideoH265VideoParameterSet} entry stored in it is copied to the created video session parameters object if the created object does not already contain such an entry with the same {@code vps_video_parameter_set_id}.
+ *
+ *
+ * - {@code StdVideoH265SequenceParameterSet} structures representing H.265 SPS entries, as follows:
+ *
+ *
+ * - If the {@code pParametersAddInfo} member of the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR} structure provided in the {@code pCreateInfo→pNext} chain is not {@code NULL}, then the set of {@code StdVideoH265SequenceParameterSet} entries specified in {@code pParametersAddInfo→pStdSPSs} are added first;
+ * - If {@code pCreateInfo→videoSessionParametersTemplate} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, then each {@code StdVideoH265SequenceParameterSet} entry stored in it is copied to the created video session parameters object if the created object does not already contain such an entry with the same {@code sps_video_parameter_set_id} and {@code sps_seq_parameter_set_id}.
+ *
+ *
+ * - {@code StdVideoH265PictureParameterSet} structures representing H.265 PPS entries, as follows:
+ *
+ *
+ * - If the {@code pParametersAddInfo} member of the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR} structure provided in the {@code pCreateInfo→pNext} chain is not {@code NULL}, then the set of {@code StdVideoH265PictureParameterSet} entries specified in {@code pParametersAddInfo→pStdPPSs} are added first;
+ * - If {@code pCreateInfo→videoSessionParametersTemplate} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, then each {@code StdVideoH265PictureParameterSet} entry stored in it is copied to the created video session parameters object if the created object does not already contain such an entry with the same {@code sps_video_parameter_set_id}, {@code pps_seq_parameter_set_id}, and {@code pps_pic_parameter_set_id}.
+ *
+ *
+ *
+ *
* Valid Usage (Implicit)
*
*
@@ -790,10 +892,9 @@ public static int nvkCreateVideoSessionParametersKHR(VkDevice device, long pCrea
*
* - On failure, this command returns
*
- * - {@link VK10#VK_ERROR_INITIALIZATION_FAILED ERROR_INITIALIZATION_FAILED}
* - {@link VK10#VK_ERROR_OUT_OF_HOST_MEMORY ERROR_OUT_OF_HOST_MEMORY}
* - {@link VK10#VK_ERROR_OUT_OF_DEVICE_MEMORY ERROR_OUT_OF_DEVICE_MEMORY}
- * - {@link VK10#VK_ERROR_TOO_MANY_OBJECTS ERROR_TOO_MANY_OBJECTS}
+ * - {@link VK10#VK_ERROR_INITIALIZATION_FAILED ERROR_INITIALIZATION_FAILED}
*
*
*
@@ -801,10 +902,10 @@ public static int nvkCreateVideoSessionParametersKHR(VkDevice device, long pCrea
*
* {@link VkAllocationCallbacks}, {@link VkVideoSessionParametersCreateInfoKHR}
*
- * @param device the logical device that was used for the creation of the video session object.
- * @param pCreateInfo a pointer to {@link VkVideoSessionParametersCreateInfoKHR} structure specifying the video session parameters.
+ * @param device the logical device that creates the video session parameters object.
+ * @param pCreateInfo a pointer to {@link VkVideoSessionParametersCreateInfoKHR} structure containing parameters to be used to create the video session parameters object.
* @param pAllocator controls host memory allocation as described in the Memory Allocation chapter.
- * @param pVideoSessionParameters a pointer to a {@code VkVideoSessionParametersKHR} handle in which the video session parameters object is returned.
+ * @param pVideoSessionParameters a pointer to a {@code VkVideoSessionParametersKHR} handle in which the resulting video session parameters object is returned.
*/
@NativeType("VkResult")
public static int vkCreateVideoSessionParametersKHR(VkDevice device, @NativeType("VkVideoSessionParametersCreateInfoKHR const *") VkVideoSessionParametersCreateInfoKHR pCreateInfo, @Nullable @NativeType("VkAllocationCallbacks const *") VkAllocationCallbacks pAllocator, @NativeType("VkVideoSessionParametersKHR *") LongBuffer pVideoSessionParameters) {
@@ -826,11 +927,11 @@ public static int nvkUpdateVideoSessionParametersKHR(VkDevice device, long video
}
/**
- * Update video session video session parameter object.
+ * Update video session parameters object.
*
* C Specification
*
- * To update, add, or remove video session parameters state, call:
+ * To update video session parameters object with new parameters, call:
*
*
* VkResult vkUpdateVideoSessionParametersKHR(
@@ -838,6 +939,51 @@ public static int nvkUpdateVideoSessionParametersKHR(VkDevice device, long video
* VkVideoSessionParametersKHR videoSessionParameters,
* const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
*
+ * Description
+ *
+ * After a successful call to this command, the update sequence counter of {@code videoSessionParameters} is changed to the value specified in {@code pUpdateInfo→updateSequenceCount}.
+ *
+ * Note:
+ *
+ *
As each update issued to a video session parameters object needs to specify the next available update sequence count value, concurrent updates of the same video session parameters object are inherently disallowed. However, recording video coding operations to command buffers referring to parameters previously added to the video session parameters object is allowed, even if there is a concurrent update in progress adding some new entries to the object.
+ *
+ *
+ * If {@code videoSessionParameters} was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR} and the {@code pUpdateInfo→pNext} chain includes a {@link VkVideoDecodeH264SessionParametersAddInfoKHR} structure, then this command adds the following parameter entries to {@code videoSessionParameters}:
+ *
+ *
+ * - The H.264 SPS entries specified in {@link VkVideoDecodeH264SessionParametersAddInfoKHR}{@code ::pStdSPSs}.
+ * - The H.264 PPS entries specified in {@link VkVideoDecodeH264SessionParametersAddInfoKHR}{@code ::pStdPPSs}.
+ *
+ *
+ * If {@code videoSessionParameters} was created with the video codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR} and the {@code pUpdateInfo→pNext} chain includes a {@link VkVideoDecodeH265SessionParametersAddInfoKHR} structure, then this command adds the following parameter entries to {@code videoSessionParameters}:
+ *
+ *
+ * - The H.265 VPS entries specified in {@link VkVideoDecodeH265SessionParametersAddInfoKHR}{@code ::pStdVPSs}.
+ * - The H.265 SPS entries specified in {@link VkVideoDecodeH265SessionParametersAddInfoKHR}{@code ::pStdSPSs}.
+ * - The H.265 PPS entries specified in {@link VkVideoDecodeH265SessionParametersAddInfoKHR}{@code ::pStdPPSs}.
+ *
+ *
+ * Valid Usage
+ *
+ *
+ * - {@code pUpdateInfo→updateSequenceCount} must equal the current update sequence counter of {@code videoSessionParameters} plus one
+ * - If {@code videoSessionParameters} was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR} and the {@code pNext} chain of {@code pUpdateInfo} includes a {@link VkVideoDecodeH264SessionParametersAddInfoKHR} structure, then {@code videoSessionParameters} must not already contain a {@code StdVideoH264SequenceParameterSet} entry with {@code seq_parameter_set_id} matching any of the elements of {@link VkVideoDecodeH264SessionParametersAddInfoKHR}{@code ::pStdSPSs}
+ * - If {@code videoSessionParameters} was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR}, then the number of {@code StdVideoH264SequenceParameterSet} entries already stored in it plus the value of the {@code stdSPSCount} member of the {@link VkVideoDecodeH264SessionParametersAddInfoKHR} structure included in the {@code pUpdateInfo→pNext} chain must be less than or equal to the {@link VkVideoDecodeH264SessionParametersCreateInfoKHR}{@code ::maxStdSPSCount} {@code videoSessionParameters} was created with
+ * - If {@code videoSessionParameters} was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR} and the {@code pNext} chain of {@code pUpdateInfo} includes a {@link VkVideoDecodeH264SessionParametersAddInfoKHR} structure, then {@code videoSessionParameters} must not already contain a {@code StdVideoH264PictureParameterSet} entry with both {@code seq_parameter_set_id} and {@code pic_parameter_set_id} matching any of the elements of {@link VkVideoDecodeH264SessionParametersAddInfoKHR}{@code ::pStdPPSs}
+ * - If {@code videoSessionParameters} was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR}, then the number of {@code StdVideoH264PictureParameterSet} entries already stored in it plus the value of the {@code stdPPSCount} member of the {@link VkVideoDecodeH264SessionParametersAddInfoKHR} structure included in the {@code pUpdateInfo→pNext} chain must be less than or equal to the {@link VkVideoDecodeH264SessionParametersCreateInfoKHR}{@code ::maxStdPPSCount} {@code videoSessionParameters} was created with
+ * - If {@code videoSessionParameters} was created with the video codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR} and the {@code pNext} chain of {@code pUpdateInfo} includes a {@link VkVideoDecodeH265SessionParametersAddInfoKHR} structure, then {@code videoSessionParameters} must not already contain a {@code StdVideoH265VideoParameterSet} entry with {@code vps_video_parameter_set_id} matching any of the elements of {@link VkVideoDecodeH265SessionParametersAddInfoKHR}{@code ::pStdVPSs}
+ * - If {@code videoSessionParameters} was created with the video codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then the number of {@code StdVideoH265VideoParameterSet} entries already stored in it plus the value of the {@code stdVPSCount} member of the {@link VkVideoDecodeH265SessionParametersAddInfoKHR} structure included in the {@code pUpdateInfo→pNext} chain must be less than or equal to the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR}{@code ::maxStdVPSCount} {@code videoSessionParameters} was created with
+ * - If {@code videoSessionParameters} was created with the video codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR} and the {@code pNext} chain of {@code pUpdateInfo} includes a {@link VkVideoDecodeH265SessionParametersAddInfoKHR} structure, then {@code videoSessionParameters} must not already contain a {@code StdVideoH265SequenceParameterSet} entry with both {@code sps_video_parameter_set_id} and {@code sps_seq_parameter_set_id} matching any of the elements of {@link VkVideoDecodeH265SessionParametersAddInfoKHR}{@code ::pStdSPSs}
+ * - If {@code videoSessionParameters} was created with the video codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then the number of {@code StdVideoH265SequenceParameterSet} entries already stored in it plus the value of the {@code stdSPSCount} member of the {@link VkVideoDecodeH265SessionParametersAddInfoKHR} structure included in the {@code pUpdateInfo→pNext} chain must be less than or equal to the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR}{@code ::maxStdSPSCount} {@code videoSessionParameters} was created with
+ * - If {@code videoSessionParameters} was created with the video codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR} and the {@code pNext} chain of {@code pUpdateInfo} includes a {@link VkVideoDecodeH265SessionParametersAddInfoKHR} structure, then {@code videoSessionParameters} must not already contain a {@code StdVideoH265PictureParameterSet} entry with {@code sps_video_parameter_set_id}, {@code pps_seq_parameter_set_id}, and {@code pps_pic_parameter_set_id} all matching any of the elements of {@link VkVideoDecodeH265SessionParametersAddInfoKHR}{@code ::pStdPPSs}
+ * - If {@code videoSessionParameters} was created with the video codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then the number of {@code StdVideoH265PictureParameterSet} entries already stored in it plus the value of the {@code stdPPSCount} member of the {@link VkVideoDecodeH265SessionParametersAddInfoKHR} structure included in the {@code pUpdateInfo→pNext} chain must be less than or equal to the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR}{@code ::maxStdPPSCount} {@code videoSessionParameters} was created with
+ * - If {@code videoSessionParameters} was created with the video codec operation {@link EXTVideoEncodeH264#VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT} and the {@code pNext} chain of {@code pUpdateInfo} includes a {@link VkVideoEncodeH264SessionParametersAddInfoEXT} structure, then {@code videoSessionParameters} must not already contain a {@code StdVideoH264SequenceParameterSet} entry with {@code seq_parameter_set_id} matching any of the elements of {@link VkVideoEncodeH264SessionParametersAddInfoEXT}{@code ::pStdSPSs}
+ * - If {@code videoSessionParameters} was created with the video codec operation {@link EXTVideoEncodeH264#VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT} and the {@code pNext} chain of {@code pUpdateInfo} includes a {@link VkVideoEncodeH264SessionParametersAddInfoEXT} structure, then {@code videoSessionParameters} must not already contain a {@code StdVideoH264PictureParameterSet} entry with both {@code seq_parameter_set_id} and {@code pic_parameter_set_id} matching any of the elements of {@link VkVideoEncodeH264SessionParametersAddInfoEXT}{@code ::pStdPPSs}
+ * - If {@code videoSessionParameters} was created with the video codec operation {@link EXTVideoEncodeH265#VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT} and the {@code pNext} chain of {@code pUpdateInfo} includes a {@link VkVideoEncodeH265SessionParametersAddInfoEXT} structure, then {@code videoSessionParameters} must not already contain a {@code StdVideoH265VideoParameterSet} entry with {@code vps_video_parameter_set_id} matching any of the elements of {@link VkVideoEncodeH265SessionParametersAddInfoEXT}{@code ::pStdVPSs}
+ * - If {@code videoSessionParameters} was created with the video codec operation {@link EXTVideoEncodeH265#VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT} and the {@code pNext} chain of {@code pUpdateInfo} includes a {@link VkVideoEncodeH265SessionParametersAddInfoEXT} structure, then {@code videoSessionParameters} must not already contain a {@code StdVideoH265SequenceParameterSet} entry with both {@code sps_video_parameter_set_id} and {@code sps_seq_parameter_set_id} matching any of the elements of {@link VkVideoEncodeH265SessionParametersAddInfoEXT}{@code ::pStdSPSs}
+ * - If {@code videoSessionParameters} was created with the video codec operation {@link EXTVideoEncodeH265#VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT} and the {@code pNext} chain of {@code pUpdateInfo} includes a {@link VkVideoEncodeH265SessionParametersAddInfoEXT} structure, then {@code videoSessionParameters} must not already contain a {@code StdVideoH265PictureParameterSet} entry with {@code sps_video_parameter_set_id}, {@code pps_seq_parameter_set_id}, and {@code pps_pic_parameter_set_id} all matching any of the elements of {@link VkVideoEncodeH265SessionParametersAddInfoEXT}{@code ::pStdPPSs}
+ *
+ *
* Valid Usage (Implicit)
*
*
@@ -855,8 +1001,8 @@ public static int nvkUpdateVideoSessionParametersKHR(VkDevice device, long video
*
* On failure, this command returns
*
- * - {@link VK10#VK_ERROR_INITIALIZATION_FAILED ERROR_INITIALIZATION_FAILED}
- * - {@link VK10#VK_ERROR_TOO_MANY_OBJECTS ERROR_TOO_MANY_OBJECTS}
+ * - {@link VK10#VK_ERROR_OUT_OF_HOST_MEMORY ERROR_OUT_OF_HOST_MEMORY}
+ * - {@link VK10#VK_ERROR_OUT_OF_DEVICE_MEMORY ERROR_OUT_OF_DEVICE_MEMORY}
*
*
*
@@ -864,9 +1010,9 @@ public static int nvkUpdateVideoSessionParametersKHR(VkDevice device, long video
*
* {@link VkVideoSessionParametersUpdateInfoKHR}
*
- * @param device the logical device that was used for the creation of the video session object.
- * @param videoSessionParameters the video session parameters object that is going to be updated.
- * @param pUpdateInfo a pointer to a {@link VkVideoSessionParametersUpdateInfoKHR} structure containing the session parameters update information.
+ * @param device the logical device that updates the video session parameters.
+ * @param videoSessionParameters the video session parameters object to update.
+ * @param pUpdateInfo a pointer to a {@link VkVideoSessionParametersUpdateInfoKHR} structure specifying the parameter update information.
*/
@NativeType("VkResult")
public static int vkUpdateVideoSessionParametersKHR(VkDevice device, @NativeType("VkVideoSessionParametersKHR") long videoSessionParameters, @NativeType("VkVideoSessionParametersUpdateInfoKHR const *") VkVideoSessionParametersUpdateInfoKHR pUpdateInfo) {
@@ -897,6 +1043,14 @@ public static void nvkDestroyVideoSessionParametersKHR(VkDevice device, long vid
* VkVideoSessionParametersKHR videoSessionParameters,
* const VkAllocationCallbacks* pAllocator);
*
+ * Valid Usage
+ *
+ *
+ * - All submitted commands that refer to {@code videoSessionParameters} must have completed execution
+ * - If {@link VkAllocationCallbacks} were provided when {@code videoSessionParameters} was created, a compatible set of callbacks must be provided here
+ * - If no {@link VkAllocationCallbacks} were provided when {@code videoSessionParameters} was created, {@code pAllocator} must be {@code NULL}
+ *
+ *
* Valid Usage (Implicit)
*
*
@@ -915,8 +1069,8 @@ public static void nvkDestroyVideoSessionParametersKHR(VkDevice device, long vid
*
* {@link VkAllocationCallbacks}
*
- * @param device the device the video session parameters object was created with.
- * @param videoSessionParameters the video session parameters object to be destroyed.
+ * @param device the logical device that destroys the video session parameters object.
+ * @param videoSessionParameters the video session parameters object to destroy.
* @param pAllocator controls host memory allocation as described in the Memory Allocation chapter.
*/
public static void vkDestroyVideoSessionParametersKHR(VkDevice device, @NativeType("VkVideoSessionParametersKHR") long videoSessionParameters, @Nullable @NativeType("VkAllocationCallbacks const *") VkAllocationCallbacks pAllocator) {
@@ -936,7 +1090,7 @@ public static void nvkCmdBeginVideoCodingKHR(VkCommandBuffer commandBuffer, long
}
/**
- * Start decode jobs.
+ * Begin video coding scope.
*
* C Specification
*
@@ -949,7 +1103,50 @@ public static void nvkCmdBeginVideoCodingKHR(VkCommandBuffer commandBuffer, long
*
* Description
*
- * After beginning a video coding scope, the session object specified by the {@code videoSession} member of {@link VkVideoBeginCodingInfoKHR} is bound to the command buffer, and the command buffer is ready to record video coding operations.
+ * After beginning a video coding scope, the video session object specified in {@code pBeginInfo→videoSession} is bound to the command buffer, and the command buffer is ready to record video coding operations. Similarly, if {@code pBeginInfo→videoSessionParameters} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, it is also bound to the command buffer, and video coding operations can refer to the codec-specific parameters stored in it.
+ *
+ * This command also establishes the set of bound reference picture resources that can be used as reconstructed pictures or reference pictures within the video coding scope. Each element of this set consists of a video picture resource and the DPB slot index associated with it, if there is one.
+ *
+ * The set of bound reference picture resources is immutable within a video coding scope, however, the DPB slot index associated with any of the bound reference picture resources can change during the video coding scope in response to video coding operations.
+ *
+ * The {@link VkVideoReferenceSlotInfoKHR} structures provided as the elements of {@code pBeginInfo→pReferenceSlots} are interpreted by this command as follows:
+ *
+ *
+ * - If {@code slotIndex} is non-negative and {@code pPictureResource} is not {@code NULL}, then the video picture resource defined by the {@link VkVideoPictureResourceInfoKHR} structure pointed to by {@code pPictureResource} is added to the set of bound reference picture resources and is associated with the DPB slot index specified in {@code slotIndex}.
+ * - If {@code slotIndex} is non-negative and {@code pPictureResource} is {@code NULL}, then the DPB slot with index {@code slotIndex} is deactivated by this command.
+ * - If {@code slotIndex} is negative and {@code pPictureResource} is not {@code NULL}, then the video picture resource defined by the {@link VkVideoPictureResourceInfoKHR} structure pointed to by {@code pPictureResource} is added to the set of bound reference picture resources without an associated DPB slot. Such a picture resource can be subsequently used as a reconstructed picture to associate it with a DPB slot.
+ * - If {@code slotIndex} is negative and {@code pPictureResource} is {@code NULL}, then the element is ignored.
+ *
+ *
+ * Note:
+ *
+ *
It is possible for multiple bound reference picture resources to be associated with the same DPB slot index, or for a single bound reference picture to refer to multiple separate reference pictures. For example, in case of an H.264 decode profile with interlaced frame support a single DPB slot can refer to two separate pictures for the top and bottom fields. Depending on the picture layout used by the H.264 decode profile, the following special cases may arise:
+ *
+ *
+ * - If the picture layout is {@link KHRVideoDecodeH264#VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR}, then the top and bottom field pictures are physically co-located in the same video picture resource with even scanlines corresponding to the top field and odd scanlines corresponding to the bottom field, respectively.
+ * - If the picture layout is {@link KHRVideoDecodeH264#VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR}, then the top and bottom field pictures are stored in separate video picture resources (in separate subregions of the same image layer, in separate layers of the same image, or in entirely separate images), hence two elements of {@link VkVideoBeginCodingInfoKHR}{@code ::pReferenceSlots} can contain the same {@code slotIndex} but specify different video picture resources in their {@code pPictureResource} members.
+ *
+ *
+ *
+ * All non-negative {@code slotIndex} values specified in the elements of {@code pBeginInfo→pReferenceSlots} must identify DPB slots of the video session that are in the active state at the time this command is executed on the device.
+ *
+ * Note:
+ *
+ *
The application does not have to specify an entry in {@code pBeginInfo→pReferenceSlots} corresponding to all active DPB slots of the video session, but only for those which are intended to be used in the video coding scope. This way the application can avoid any potential runtime cost associated with binding the corresponding picture resources to the command buffer.
+ *
+ *
+ * Valid Usage
+ *
+ *
+ * - The {@code VkCommandPool} that {@code commandBuffer} was allocated from must support the video codec operation {@code pBeginInfo→videoSession} was created with, as returned by {@link VK11#vkGetPhysicalDeviceQueueFamilyProperties2 GetPhysicalDeviceQueueFamilyProperties2} in {@link VkQueueFamilyVideoPropertiesKHR}{@code ::videoCodecOperations}
+ * - There must be no active queries
+ * - If {@code commandBuffer} is an unprotected command buffer and {@code protectedNoFault} is not supported, then {@code pBeginInfo→videoSession} must not have been created with {@link #VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR}
+ * - If {@code commandBuffer} is a protected command buffer and {@code protectedNoFault} is not supported, then {@code pBeginInfo→videoSession} must have been created with {@link #VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR}
+ * - If {@code commandBuffer} is an unprotected command buffer, {@code protectedNoFault} is not supported, and the {@code pPictureResource} member of any element of {@code pBeginInfo→pReferenceSlots} is not {@code NULL}, then {@code pPictureResource→imageViewBinding} for that element must not specify an image view created from a protected image
+ * - If {@code commandBuffer} is a protected command buffer {@code protectedNoFault} is not supported, and the {@code pPictureResource} member of any element of {@code pBeginInfo→pReferenceSlots} is not {@code NULL}, then {@code pPictureResource→imageViewBinding} for that element must specify an image view created from a protected image
+ * - If the {@code slotIndex} member of any element of {@code pBeginInfo→pReferenceSlots} is not negative, then it must specify the index of a DPB slot that is in the active state in {@code pBeginInfo→videoSession} at the time the command is executed on the device
+ * - Each video picture resource specified by any non-{@code NULL} {@code pPictureResource} member specified in the elements of {@code pBeginInfo→pReferenceSlots} for which {@code slotIndex} is not negative must match one of the video picture resources currently associated with the DPB slot index of {@code pBeginInfo→videoSession} specified by {@code slotIndex} at the time the command is executed on the device
+ *
*
* Valid Usage (Implicit)
*
@@ -981,8 +1178,8 @@ public static void nvkCmdBeginVideoCodingKHR(VkCommandBuffer commandBuffer, long
*
* {@link VkVideoBeginCodingInfoKHR}
*
- * @param commandBuffer the command buffer to be used when recording commands for the video decode or encode operations.
- * @param pBeginInfo a pointer to a {@link VkVideoBeginCodingInfoKHR} structure.
+ * @param commandBuffer the command buffer in which to record the command.
+ * @param pBeginInfo a pointer to a {@link VkVideoBeginCodingInfoKHR} structure specifying the parameters of the video coding scope, including the video session and video session parameters object to use.
*/
public static void vkCmdBeginVideoCodingKHR(VkCommandBuffer commandBuffer, @NativeType("VkVideoBeginCodingInfoKHR const *") VkVideoBeginCodingInfoKHR pBeginInfo) {
nvkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo.address());
@@ -1000,7 +1197,7 @@ public static void nvkCmdEndVideoCodingKHR(VkCommandBuffer commandBuffer, long p
}
/**
- * End decode jobs.
+ * End video coding scope.
*
* C Specification
*
@@ -1013,7 +1210,13 @@ public static void nvkCmdEndVideoCodingKHR(VkCommandBuffer commandBuffer, long p
*
* Description
*
- * After ending a video coding scope, the session object previously bound by the corresponding {@link #vkCmdBeginVideoCodingKHR CmdBeginVideoCodingKHR} command is unbound.
+ * After ending a video coding scope, the video session object, the optional video session parameters object, and all reference picture resources previously bound by the corresponding {@link #vkCmdBeginVideoCodingKHR CmdBeginVideoCodingKHR} command are unbound.
+ *
+ * Valid Usage
+ *
+ *
+ * - There must be no active queries
+ *
*
* Valid Usage (Implicit)
*
@@ -1045,8 +1248,8 @@ public static void nvkCmdEndVideoCodingKHR(VkCommandBuffer commandBuffer, long p
*
* {@link VkVideoEndCodingInfoKHR}
*
- * @param commandBuffer the command buffer to be filled by this function.
- * @param pEndCodingInfo a pointer to a {@link VkVideoEndCodingInfoKHR} structure.
+ * @param commandBuffer the command buffer in which to record the command.
+ * @param pEndCodingInfo a pointer to a {@link VkVideoEndCodingInfoKHR} structure specifying the parameters for ending the video coding scope.
*/
public static void vkCmdEndVideoCodingKHR(VkCommandBuffer commandBuffer, @NativeType("VkVideoEndCodingInfoKHR const *") VkVideoEndCodingInfoKHR pEndCodingInfo) {
nvkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo.address());
@@ -1064,7 +1267,7 @@ public static void nvkCmdControlVideoCodingKHR(VkCommandBuffer commandBuffer, lo
}
/**
- * Set encode rate control parameters.
+ * Control video coding parameters.
*
* C Specification
*
@@ -1075,6 +1278,22 @@ public static void nvkCmdControlVideoCodingKHR(VkCommandBuffer commandBuffer, lo
* VkCommandBuffer commandBuffer,
* const VkVideoCodingControlInfoKHR* pCodingControlInfo);
*
+ * Description
+ *
+ * The control parameters provided in this call are applied to the video session at the time the command executes on the device and are in effect until a subsequent call to this command with the same video session bound changes the corresponding control parameters.
+ *
+ * A newly created video session must be reset before performing video coding operations using it by including {@link #VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR VIDEO_CODING_CONTROL_RESET_BIT_KHR} in {@code pCodingControlInfo→flags}. The reset operation also returns all DPB slots of the video session to the inactive state. Correspondingly, any DPB slot index associated with the bound reference picture resources is removed.
+ *
+ * For encode sessions, the reset operation returns rate control configuration to implementation default settings.
+ *
+ * After video coding operations are performed using a video session, the reset operation can be used to return the video session to the same initial state as after the reset of a newly created video session. This can be used, for example, when different video sequences are needed to be processed with the same video session object.
+ *
+ * Valid Usage
+ *
+ *
+ * - If {@code pCodingControlInfo→flags} does not include {@link #VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR VIDEO_CODING_CONTROL_RESET_BIT_KHR}, then the bound video session must not be in uninitialized state at the time the command is executed on the device
+ *
+ *
* Valid Usage (Implicit)
*
*
@@ -1105,8 +1324,8 @@ public static void nvkCmdControlVideoCodingKHR(VkCommandBuffer commandBuffer, lo
*
* {@link VkVideoCodingControlInfoKHR}
*
- * @param commandBuffer the command buffer to be filled by this function.
- * @param pCodingControlInfo a pointer to a {@link VkVideoCodingControlInfoKHR} structure.
+ * @param commandBuffer the command buffer in which to record the command.
+ * @param pCodingControlInfo a pointer to a {@link VkVideoCodingControlInfoKHR} structure specifying the control parameters.
*/
public static void vkCmdControlVideoCodingKHR(VkCommandBuffer commandBuffer, @NativeType("VkVideoCodingControlInfoKHR const *") VkVideoCodingControlInfoKHR pCodingControlInfo) {
nvkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo.address());
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRXcbSurface.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRXcbSurface.java
new file mode 100644
index 0000000000..235cc6bcd7
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/KHRXcbSurface.java
@@ -0,0 +1,211 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package org.lwjgl.vulkan;
+
+import javax.annotation.*;
+
+import java.nio.*;
+
+import org.lwjgl.system.*;
+
+import static org.lwjgl.system.Checks.*;
+import static org.lwjgl.system.JNI.*;
+import static org.lwjgl.system.MemoryUtil.*;
+
+/**
+ * The {@code VK_KHR_xcb_surface} extension is an instance extension. It provides a mechanism to create a {@code VkSurfaceKHR} object (defined by the {@link KHRSurface VK_KHR_surface} extension) that refers to an X11 {@code Window}, using the XCB client-side library, as well as a query to determine support for rendering via XCB.
+ *
+ * VK_KHR_xcb_surface
+ *
+ *
+ * - Name String
+ * - {@code VK_KHR_xcb_surface}
+ * - Extension Type
+ * - Instance extension
+ * - Registered Extension Number
+ * - 6
+ * - Revision
+ * - 6
+ * - Extension and Version Dependencies
+ *
+ * - Requires support for Vulkan 1.0
+ * - Requires {@link KHRSurface VK_KHR_surface} to be enabled
+ *
+ * - Contact
+ *
+ *
+ *
+ * Other Extension Metadata
+ *
+ *
+ * - Last Modified Date
+ * - 2015-11-28
+ * - IP Status
+ * - No known IP claims.
+ * - Contributors
+ *
+ * - Patrick Doane, Blizzard
+ * - Jason Ekstrand, Intel
+ * - Ian Elliott, LunarG
+ * - Courtney Goeltzenleuchter, LunarG
+ * - Jesse Hall, Google
+ * - James Jones, NVIDIA
+ * - Antoine Labour, Google
+ * - Jon Leech, Khronos
+ * - David Mao, AMD
+ * - Norbert Nopper, Freescale
+ * - Alon Or-bach, Samsung
+ * - Daniel Rakos, AMD
+ * - Graham Sellers, AMD
+ * - Ray Smith, ARM
+ * - Jeff Vigil, Qualcomm
+ * - Chia-I Wu, LunarG
+ *
+ *
+ */
+public class KHRXcbSurface {
+
+ /** The extension specification version. */
+ public static final int VK_KHR_XCB_SURFACE_SPEC_VERSION = 6;
+
+ /** The extension name. */
+ public static final String VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface";
+
+ /** Extends {@code VkStructureType}. */
+ public static final int VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000;
+
+ protected KHRXcbSurface() {
+ throw new UnsupportedOperationException();
+ }
+
+ // --- [ vkCreateXcbSurfaceKHR ] ---
+
+ /** Unsafe version of: {@link #vkCreateXcbSurfaceKHR CreateXcbSurfaceKHR} */
+ public static int nvkCreateXcbSurfaceKHR(VkInstance instance, long pCreateInfo, long pAllocator, long pSurface) {
+ long __functionAddress = instance.getCapabilities().vkCreateXcbSurfaceKHR;
+ if (CHECKS) {
+ check(__functionAddress);
+ }
+ return callPPPPI(instance.address(), pCreateInfo, pAllocator, pSurface, __functionAddress);
+ }
+
+ /**
+ * Create a {@code VkSurfaceKHR} object for a X11 window, using the XCB client-side library.
+ *
+ * C Specification
+ *
+ * To create a {@code VkSurfaceKHR} object for an X11 window, using the XCB client-side library, call:
+ *
+ *
+ * VkResult vkCreateXcbSurfaceKHR(
+ * VkInstance instance,
+ * const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
+ * const VkAllocationCallbacks* pAllocator,
+ * VkSurfaceKHR* pSurface);
+ *
+ * Valid Usage (Implicit)
+ *
+ *
+ * - {@code instance} must be a valid {@code VkInstance} handle
+ * - {@code pCreateInfo} must be a valid pointer to a valid {@link VkXcbSurfaceCreateInfoKHR} structure
+ * - If {@code pAllocator} is not {@code NULL}, {@code pAllocator} must be a valid pointer to a valid {@link VkAllocationCallbacks} structure
+ * - {@code pSurface} must be a valid pointer to a {@code VkSurfaceKHR} handle
+ *
+ *
+ * Return Codes
+ *
+ *
+ * - On success, this command returns
+ *
+ * - {@link VK10#VK_SUCCESS SUCCESS}
+ *
+ * - On failure, this command returns
+ *
+ * - {@link VK10#VK_ERROR_OUT_OF_HOST_MEMORY ERROR_OUT_OF_HOST_MEMORY}
+ * - {@link VK10#VK_ERROR_OUT_OF_DEVICE_MEMORY ERROR_OUT_OF_DEVICE_MEMORY}
+ *
+ *
+ *
+ * See Also
+ *
+ * {@link VkAllocationCallbacks}, {@link VkXcbSurfaceCreateInfoKHR}
+ *
+ * @param instance the instance to associate the surface with.
+ * @param pCreateInfo a pointer to a {@link VkXcbSurfaceCreateInfoKHR} structure containing parameters affecting the creation of the surface object.
+ * @param pAllocator the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see Memory Allocation).
+ * @param pSurface a pointer to a {@code VkSurfaceKHR} handle in which the created surface object is returned.
+ */
+ @NativeType("VkResult")
+ public static int vkCreateXcbSurfaceKHR(VkInstance instance, @NativeType("VkXcbSurfaceCreateInfoKHR const *") VkXcbSurfaceCreateInfoKHR pCreateInfo, @Nullable @NativeType("VkAllocationCallbacks const *") VkAllocationCallbacks pAllocator, @NativeType("VkSurfaceKHR *") LongBuffer pSurface) {
+ if (CHECKS) {
+ check(pSurface, 1);
+ }
+ return nvkCreateXcbSurfaceKHR(instance, pCreateInfo.address(), memAddressSafe(pAllocator), memAddress(pSurface));
+ }
+
+ // --- [ vkGetPhysicalDeviceXcbPresentationSupportKHR ] ---
+
+ /**
+ * Query physical device for presentation to X11 server using XCB.
+ *
+ * C Specification
+ *
+ * To determine whether a queue family of a physical device supports presentation to an X11 server, using the XCB client-side library, call:
+ *
+ *
+ * VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR(
+ * VkPhysicalDevice physicalDevice,
+ * uint32_t queueFamilyIndex,
+ * xcb_connection_t* connection,
+ * xcb_visualid_t visual_id);
+ *
+ * Description
+ *
+ * This platform-specific function can be called prior to creating a surface.
+ *
+ * Valid Usage
+ *
+ *
+ * - {@code queueFamilyIndex} must be less than {@code pQueueFamilyPropertyCount} returned by {@code vkGetPhysicalDeviceQueueFamilyProperties} for the given {@code physicalDevice}
+ *
+ *
+ * Valid Usage (Implicit)
+ *
+ *
+ * - {@code physicalDevice} must be a valid {@code VkPhysicalDevice} handle
+ * - {@code connection} must be a valid pointer to an {@code xcb_connection_t} value
+ *
+ *
+ * @param physicalDevice the physical device.
+ * @param queueFamilyIndex the queue family index.
+ * @param connection a pointer to an {@code xcb_connection_t} to the X server.
+ * @param visual_id an X11 visual ({@code xcb_visualid_t}).
+ */
+ @NativeType("VkBool32")
+ public static boolean vkGetPhysicalDeviceXcbPresentationSupportKHR(VkPhysicalDevice physicalDevice, @NativeType("uint32_t") int queueFamilyIndex, @NativeType("xcb_connection_t *") long connection, @NativeType("xcb_visualid_t") int visual_id) {
+ long __functionAddress = physicalDevice.getCapabilities().vkGetPhysicalDeviceXcbPresentationSupportKHR;
+ if (CHECKS) {
+ check(__functionAddress);
+ check(connection);
+ }
+ return callPPI(physicalDevice.address(), queueFamilyIndex, connection, visual_id, __functionAddress) != 0;
+ }
+
+ /** Array version of: {@link #vkCreateXcbSurfaceKHR CreateXcbSurfaceKHR} */
+ @NativeType("VkResult")
+ public static int vkCreateXcbSurfaceKHR(VkInstance instance, @NativeType("VkXcbSurfaceCreateInfoKHR const *") VkXcbSurfaceCreateInfoKHR pCreateInfo, @Nullable @NativeType("VkAllocationCallbacks const *") VkAllocationCallbacks pAllocator, @NativeType("VkSurfaceKHR *") long[] pSurface) {
+ long __functionAddress = instance.getCapabilities().vkCreateXcbSurfaceKHR;
+ if (CHECKS) {
+ check(__functionAddress);
+ check(pSurface, 1);
+ }
+ return callPPPPI(instance.address(), pCreateInfo.address(), memAddressSafe(pAllocator), pSurface, __functionAddress);
+ }
+
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/NVDeviceGeneratedCommands.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/NVDeviceGeneratedCommands.java
index cbf5d3d152..8f7903bef0 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/NVDeviceGeneratedCommands.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/NVDeviceGeneratedCommands.java
@@ -391,7 +391,6 @@ public static void nvkCmdExecuteGeneratedCommandsNV(VkCommandBuffer commandBuffe
* If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* A valid pipeline must be bound to the pipeline bind point used by this command
- * If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link VK10#VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link VK10#VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -430,9 +429,27 @@ public static void nvkCmdExecuteGeneratedCommandsNV(VkCommandBuffer commandBuffe
* If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
* If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
* If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be {@link VK10#VK_STENCIL_OP_KEEP STENCIL_OP_KEEP}
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_VIEWPORT DYNAMIC_STATE_VIEWPORT} dynamic state enabled then {@link VK10#vkCmdSetViewport CmdSetViewport} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_SCISSOR DYNAMIC_STATE_SCISSOR} dynamic state enabled then {@link VK10#vkCmdSetScissor CmdSetScissor} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_LINE_WIDTH DYNAMIC_STATE_LINE_WIDTH} dynamic state enabled then {@link VK10#vkCmdSetLineWidth CmdSetLineWidth} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BIAS DYNAMIC_STATE_DEPTH_BIAS} dynamic state enabled then {@link VK10#vkCmdSetDepthBias CmdSetDepthBias} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_BLEND_CONSTANTS DYNAMIC_STATE_BLEND_CONSTANTS} dynamic state enabled then {@link VK10#vkCmdSetBlendConstants CmdSetBlendConstants} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BOUNDS DYNAMIC_STATE_DEPTH_BOUNDS} dynamic state enabled then {@link VK10#vkCmdSetDepthBounds CmdSetDepthBounds} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK DYNAMIC_STATE_STENCIL_COMPARE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilCompareMask CmdSetStencilCompareMask} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_WRITE_MASK DYNAMIC_STATE_STENCIL_WRITE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilWriteMask CmdSetStencilWriteMask} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_REFERENCE DYNAMIC_STATE_STENCIL_REFERENCE} dynamic state enabled then {@link VK10#vkCmdSetStencilReference CmdSetStencilReference} must have been called in the current command buffer prior to this drawing command
* If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to {@link VkPhysicalDeviceMultiviewProperties}{@code ::maxMultiviewInstanceIndex}
* If the bound graphics pipeline was created with {@link VkPipelineSampleLocationsStateCreateInfoEXT}{@code ::sampleLocationsEnable} set to {@link VK10#VK_TRUE TRUE} and the current subpass has a depth/stencil attachment, then that attachment must have been created with the {@link EXTSampleLocations#VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT} bit set
* If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} dynamic state enabled then {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_CULL_MODE DYNAMIC_STATE_CULL_MODE} dynamic state enabled then {@link VK13#vkCmdSetCullMode CmdSetCullMode} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_FRONT_FACE DYNAMIC_STATE_FRONT_FACE} dynamic state enabled then {@link VK13#vkCmdSetFrontFace CmdSetFrontFace} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY DYNAMIC_STATE_PRIMITIVE_TOPOLOGY} dynamic state enabled then {@link VK13#vkCmdSetPrimitiveTopology CmdSetPrimitiveTopology} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE DYNAMIC_STATE_DEPTH_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthTestEnable CmdSetDepthTestEnable} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE DYNAMIC_STATE_DEPTH_WRITE_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthWriteEnable CmdSetDepthWriteEnable} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_COMPARE_OP DYNAMIC_STATE_DEPTH_COMPARE_OP} dynamic state enabled then {@link VK13#vkCmdSetDepthCompareOp CmdSetDepthCompareOp} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthBoundsTestEnable CmdSetDepthBoundsTestEnable} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE DYNAMIC_STATE_STENCIL_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetStencilTestEnable CmdSetStencilTestEnable} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_OP DYNAMIC_STATE_STENCIL_OP} dynamic state enabled then {@link VK13#vkCmdSetStencilOp CmdSetStencilOp} must have been called in the current command buffer prior to this drawing command
* If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::scissorCount} of the pipeline
* If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::viewportCount} of the pipeline
* If the bound graphics pipeline state was created with both the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} and {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic states enabled then both {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} and {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -460,7 +477,7 @@ public static void nvkCmdExecuteGeneratedCommandsNV(VkCommandBuffer commandBuffe
* If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::colorAttachmentCount} greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must have the corresponding element of {@link VkPipelineRenderingCreateInfo}{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then {@link EXTColorWriteEnable#vkCmdSetColorWriteEnableEXT CmdSetColorWriteEnableEXT} must have been called in the current command buffer prior to this drawing command
* If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the {@link VkPipelineColorBlendStateCreateInfo}{@code ::attachmentCount} of the currently bound graphics pipeline
- * If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command for each discard rectangle in {@link VkPipelineDiscardRectangleStateCreateInfoEXT}{@code ::discardRectangleCount}
* If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
* If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
@@ -476,37 +493,38 @@ public static void nvkCmdExecuteGeneratedCommandsNV(VkCommandBuffer commandBuffe
* If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline must have been created with a {@link VkGraphicsPipelineCreateInfo}{@code ::renderPass} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE}
* If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, rasterization discard must not be enabled
* If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, the bound graphics pipeline must not have been created with a non-zero value in {@link VkPipelineRasterizationStateStreamCreateInfoEXT}{@code ::rasterizationStream}
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTLineRasterization#VK_DYNAMIC_STATE_LINE_STIPPLE_EXT DYNAMIC_STATE_LINE_STIPPLE_EXT} dynamic state enabled then {@link EXTLineRasterization#vkCmdSetLineStippleEXT CmdSetLineStippleEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRepresentativeFragmentTestEnableNV CmdSetRepresentativeFragmentTestEnableNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} set {@code pColorBlendEnables} for any attachment to {@link VK10#VK_TRUE TRUE}, then for those attachments in the subpass the corresponding image view’s format features must contain {@link VK10#VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT}
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must follow the rules for a zero-attachment subpass
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state disabled, then the {@code samples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must be greater or equal to the {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -526,7 +544,7 @@ public static void nvkCmdExecuteGeneratedCommandsNV(VkCommandBuffer commandBuffe
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link VK10#VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} set {@code coverageModulationTableEnable} to {@link VK10#VK_TRUE TRUE}, then the {@code coverageModulationTableCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
* If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
* If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by {@link NVCoverageReductionMode#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV}
* If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportSwizzleStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
* If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
@@ -537,6 +555,7 @@ public static void nvkCmdExecuteGeneratedCommandsNV(VkCommandBuffer commandBuffe
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link VK10#VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT LINE_RASTERIZATION_MODE_DEFAULT_EXT}, then the {@code stippledRectangularLines} feature must be enabled and {@link VkPhysicalDeviceLimits}{@code ::strictLines} must be VK_TRUE
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must be {@link EXTConservativeRasterization#VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT}
* If the currently bound pipeline was created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link VK10#VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link VK10#VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}, then Mesh Shader Queries must not be active
+ * If dynamic state was inherited from {@link VkCommandBufferInheritanceViewportScissorInfoNV}, it must be set in the current command buffer prior to this drawing command
*
*
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/NVMeshShader.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/NVMeshShader.java
index de65ab5daf..16c14f1fb9 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/NVMeshShader.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/NVMeshShader.java
@@ -159,7 +159,6 @@ protected NVMeshShader() {
* - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* - If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* - A valid pipeline must be bound to the pipeline bind point used by this command
- * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* - There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link VK10#VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link VK10#VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -198,9 +197,27 @@ protected NVMeshShader() {
* - If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be {@link VK10#VK_STENCIL_OP_KEEP STENCIL_OP_KEEP}
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_VIEWPORT DYNAMIC_STATE_VIEWPORT} dynamic state enabled then {@link VK10#vkCmdSetViewport CmdSetViewport} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_SCISSOR DYNAMIC_STATE_SCISSOR} dynamic state enabled then {@link VK10#vkCmdSetScissor CmdSetScissor} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_LINE_WIDTH DYNAMIC_STATE_LINE_WIDTH} dynamic state enabled then {@link VK10#vkCmdSetLineWidth CmdSetLineWidth} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BIAS DYNAMIC_STATE_DEPTH_BIAS} dynamic state enabled then {@link VK10#vkCmdSetDepthBias CmdSetDepthBias} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_BLEND_CONSTANTS DYNAMIC_STATE_BLEND_CONSTANTS} dynamic state enabled then {@link VK10#vkCmdSetBlendConstants CmdSetBlendConstants} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BOUNDS DYNAMIC_STATE_DEPTH_BOUNDS} dynamic state enabled then {@link VK10#vkCmdSetDepthBounds CmdSetDepthBounds} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK DYNAMIC_STATE_STENCIL_COMPARE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilCompareMask CmdSetStencilCompareMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_WRITE_MASK DYNAMIC_STATE_STENCIL_WRITE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilWriteMask CmdSetStencilWriteMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_REFERENCE DYNAMIC_STATE_STENCIL_REFERENCE} dynamic state enabled then {@link VK10#vkCmdSetStencilReference CmdSetStencilReference} must have been called in the current command buffer prior to this drawing command
* - If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to {@link VkPhysicalDeviceMultiviewProperties}{@code ::maxMultiviewInstanceIndex}
* - If the bound graphics pipeline was created with {@link VkPipelineSampleLocationsStateCreateInfoEXT}{@code ::sampleLocationsEnable} set to {@link VK10#VK_TRUE TRUE} and the current subpass has a depth/stencil attachment, then that attachment must have been created with the {@link EXTSampleLocations#VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT} bit set
* - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} dynamic state enabled then {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_CULL_MODE DYNAMIC_STATE_CULL_MODE} dynamic state enabled then {@link VK13#vkCmdSetCullMode CmdSetCullMode} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_FRONT_FACE DYNAMIC_STATE_FRONT_FACE} dynamic state enabled then {@link VK13#vkCmdSetFrontFace CmdSetFrontFace} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY DYNAMIC_STATE_PRIMITIVE_TOPOLOGY} dynamic state enabled then {@link VK13#vkCmdSetPrimitiveTopology CmdSetPrimitiveTopology} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE DYNAMIC_STATE_DEPTH_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthTestEnable CmdSetDepthTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE DYNAMIC_STATE_DEPTH_WRITE_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthWriteEnable CmdSetDepthWriteEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_COMPARE_OP DYNAMIC_STATE_DEPTH_COMPARE_OP} dynamic state enabled then {@link VK13#vkCmdSetDepthCompareOp CmdSetDepthCompareOp} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthBoundsTestEnable CmdSetDepthBoundsTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE DYNAMIC_STATE_STENCIL_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetStencilTestEnable CmdSetStencilTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_OP DYNAMIC_STATE_STENCIL_OP} dynamic state enabled then {@link VK13#vkCmdSetStencilOp CmdSetStencilOp} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::scissorCount} of the pipeline
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::viewportCount} of the pipeline
* - If the bound graphics pipeline state was created with both the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} and {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic states enabled then both {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} and {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -228,7 +245,7 @@ protected NVMeshShader() {
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::colorAttachmentCount} greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must have the corresponding element of {@link VkPipelineRenderingCreateInfo}{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then {@link EXTColorWriteEnable#vkCmdSetColorWriteEnableEXT CmdSetColorWriteEnableEXT} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the {@link VkPipelineColorBlendStateCreateInfo}{@code ::attachmentCount} of the currently bound graphics pipeline
- * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command for each discard rectangle in {@link VkPipelineDiscardRectangleStateCreateInfoEXT}{@code ::discardRectangleCount}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
@@ -244,37 +261,38 @@ protected NVMeshShader() {
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline must have been created with a {@link VkGraphicsPipelineCreateInfo}{@code ::renderPass} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE}
* - If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, rasterization discard must not be enabled
* - If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, the bound graphics pipeline must not have been created with a non-zero value in {@link VkPipelineRasterizationStateStreamCreateInfoEXT}{@code ::rasterizationStream}
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTLineRasterization#VK_DYNAMIC_STATE_LINE_STIPPLE_EXT DYNAMIC_STATE_LINE_STIPPLE_EXT} dynamic state enabled then {@link EXTLineRasterization#vkCmdSetLineStippleEXT CmdSetLineStippleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRepresentativeFragmentTestEnableNV CmdSetRepresentativeFragmentTestEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} set {@code pColorBlendEnables} for any attachment to {@link VK10#VK_TRUE TRUE}, then for those attachments in the subpass the corresponding image view’s format features must contain {@link VK10#VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must follow the rules for a zero-attachment subpass
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state disabled, then the {@code samples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must be greater or equal to the {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -294,7 +312,7 @@ protected NVMeshShader() {
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link VK10#VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} set {@code coverageModulationTableEnable} to {@link VK10#VK_TRUE TRUE}, then the {@code coverageModulationTableCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
* - If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
* - If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by {@link NVCoverageReductionMode#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportSwizzleStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
@@ -305,6 +323,7 @@ protected NVMeshShader() {
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link VK10#VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT LINE_RASTERIZATION_MODE_DEFAULT_EXT}, then the {@code stippledRectangularLines} feature must be enabled and {@link VkPhysicalDeviceLimits}{@code ::strictLines} must be VK_TRUE
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must be {@link EXTConservativeRasterization#VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT}
* - If the currently bound pipeline was created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link VK10#VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link VK10#VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}, then Mesh Shader Queries must not be active
+ * - If dynamic state was inherited from {@link VkCommandBufferInheritanceViewportScissorInfoNV}, it must be set in the current command buffer prior to this drawing command
*
*
*
@@ -396,7 +415,6 @@ public static void vkCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer, @NativeTy
* - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* - If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* - A valid pipeline must be bound to the pipeline bind point used by this command
- * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* - There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link VK10#VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link VK10#VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -435,9 +453,27 @@ public static void vkCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer, @NativeTy
* - If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be {@link VK10#VK_STENCIL_OP_KEEP STENCIL_OP_KEEP}
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_VIEWPORT DYNAMIC_STATE_VIEWPORT} dynamic state enabled then {@link VK10#vkCmdSetViewport CmdSetViewport} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_SCISSOR DYNAMIC_STATE_SCISSOR} dynamic state enabled then {@link VK10#vkCmdSetScissor CmdSetScissor} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_LINE_WIDTH DYNAMIC_STATE_LINE_WIDTH} dynamic state enabled then {@link VK10#vkCmdSetLineWidth CmdSetLineWidth} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BIAS DYNAMIC_STATE_DEPTH_BIAS} dynamic state enabled then {@link VK10#vkCmdSetDepthBias CmdSetDepthBias} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_BLEND_CONSTANTS DYNAMIC_STATE_BLEND_CONSTANTS} dynamic state enabled then {@link VK10#vkCmdSetBlendConstants CmdSetBlendConstants} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BOUNDS DYNAMIC_STATE_DEPTH_BOUNDS} dynamic state enabled then {@link VK10#vkCmdSetDepthBounds CmdSetDepthBounds} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK DYNAMIC_STATE_STENCIL_COMPARE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilCompareMask CmdSetStencilCompareMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_WRITE_MASK DYNAMIC_STATE_STENCIL_WRITE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilWriteMask CmdSetStencilWriteMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_REFERENCE DYNAMIC_STATE_STENCIL_REFERENCE} dynamic state enabled then {@link VK10#vkCmdSetStencilReference CmdSetStencilReference} must have been called in the current command buffer prior to this drawing command
* - If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to {@link VkPhysicalDeviceMultiviewProperties}{@code ::maxMultiviewInstanceIndex}
* - If the bound graphics pipeline was created with {@link VkPipelineSampleLocationsStateCreateInfoEXT}{@code ::sampleLocationsEnable} set to {@link VK10#VK_TRUE TRUE} and the current subpass has a depth/stencil attachment, then that attachment must have been created with the {@link EXTSampleLocations#VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT} bit set
* - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} dynamic state enabled then {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_CULL_MODE DYNAMIC_STATE_CULL_MODE} dynamic state enabled then {@link VK13#vkCmdSetCullMode CmdSetCullMode} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_FRONT_FACE DYNAMIC_STATE_FRONT_FACE} dynamic state enabled then {@link VK13#vkCmdSetFrontFace CmdSetFrontFace} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY DYNAMIC_STATE_PRIMITIVE_TOPOLOGY} dynamic state enabled then {@link VK13#vkCmdSetPrimitiveTopology CmdSetPrimitiveTopology} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE DYNAMIC_STATE_DEPTH_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthTestEnable CmdSetDepthTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE DYNAMIC_STATE_DEPTH_WRITE_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthWriteEnable CmdSetDepthWriteEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_COMPARE_OP DYNAMIC_STATE_DEPTH_COMPARE_OP} dynamic state enabled then {@link VK13#vkCmdSetDepthCompareOp CmdSetDepthCompareOp} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthBoundsTestEnable CmdSetDepthBoundsTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE DYNAMIC_STATE_STENCIL_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetStencilTestEnable CmdSetStencilTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_OP DYNAMIC_STATE_STENCIL_OP} dynamic state enabled then {@link VK13#vkCmdSetStencilOp CmdSetStencilOp} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::scissorCount} of the pipeline
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::viewportCount} of the pipeline
* - If the bound graphics pipeline state was created with both the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} and {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic states enabled then both {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} and {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -465,7 +501,7 @@ public static void vkCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer, @NativeTy
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::colorAttachmentCount} greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must have the corresponding element of {@link VkPipelineRenderingCreateInfo}{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then {@link EXTColorWriteEnable#vkCmdSetColorWriteEnableEXT CmdSetColorWriteEnableEXT} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the {@link VkPipelineColorBlendStateCreateInfo}{@code ::attachmentCount} of the currently bound graphics pipeline
- * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command for each discard rectangle in {@link VkPipelineDiscardRectangleStateCreateInfoEXT}{@code ::discardRectangleCount}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
@@ -481,37 +517,38 @@ public static void vkCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer, @NativeTy
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline must have been created with a {@link VkGraphicsPipelineCreateInfo}{@code ::renderPass} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE}
* - If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, rasterization discard must not be enabled
* - If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, the bound graphics pipeline must not have been created with a non-zero value in {@link VkPipelineRasterizationStateStreamCreateInfoEXT}{@code ::rasterizationStream}
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTLineRasterization#VK_DYNAMIC_STATE_LINE_STIPPLE_EXT DYNAMIC_STATE_LINE_STIPPLE_EXT} dynamic state enabled then {@link EXTLineRasterization#vkCmdSetLineStippleEXT CmdSetLineStippleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRepresentativeFragmentTestEnableNV CmdSetRepresentativeFragmentTestEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} set {@code pColorBlendEnables} for any attachment to {@link VK10#VK_TRUE TRUE}, then for those attachments in the subpass the corresponding image view’s format features must contain {@link VK10#VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must follow the rules for a zero-attachment subpass
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state disabled, then the {@code samples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must be greater or equal to the {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -531,7 +568,7 @@ public static void vkCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer, @NativeTy
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link VK10#VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} set {@code coverageModulationTableEnable} to {@link VK10#VK_TRUE TRUE}, then the {@code coverageModulationTableCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
* - If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
* - If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by {@link NVCoverageReductionMode#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportSwizzleStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
@@ -542,6 +579,7 @@ public static void vkCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer, @NativeTy
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link VK10#VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT LINE_RASTERIZATION_MODE_DEFAULT_EXT}, then the {@code stippledRectangularLines} feature must be enabled and {@link VkPhysicalDeviceLimits}{@code ::strictLines} must be VK_TRUE
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must be {@link EXTConservativeRasterization#VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT}
* - If the currently bound pipeline was created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link VK10#VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link VK10#VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}, then Mesh Shader Queries must not be active
+ * - If dynamic state was inherited from {@link VkCommandBufferInheritanceViewportScissorInfoNV}, it must be set in the current command buffer prior to this drawing command
*
*
*
@@ -653,7 +691,6 @@ public static void vkCmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer, @
* - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* - If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* - A valid pipeline must be bound to the pipeline bind point used by this command
- * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* - There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link VK10#VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link VK10#VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -692,9 +729,27 @@ public static void vkCmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer, @
* - If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be {@link VK10#VK_STENCIL_OP_KEEP STENCIL_OP_KEEP}
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_VIEWPORT DYNAMIC_STATE_VIEWPORT} dynamic state enabled then {@link VK10#vkCmdSetViewport CmdSetViewport} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_SCISSOR DYNAMIC_STATE_SCISSOR} dynamic state enabled then {@link VK10#vkCmdSetScissor CmdSetScissor} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_LINE_WIDTH DYNAMIC_STATE_LINE_WIDTH} dynamic state enabled then {@link VK10#vkCmdSetLineWidth CmdSetLineWidth} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BIAS DYNAMIC_STATE_DEPTH_BIAS} dynamic state enabled then {@link VK10#vkCmdSetDepthBias CmdSetDepthBias} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_BLEND_CONSTANTS DYNAMIC_STATE_BLEND_CONSTANTS} dynamic state enabled then {@link VK10#vkCmdSetBlendConstants CmdSetBlendConstants} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BOUNDS DYNAMIC_STATE_DEPTH_BOUNDS} dynamic state enabled then {@link VK10#vkCmdSetDepthBounds CmdSetDepthBounds} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK DYNAMIC_STATE_STENCIL_COMPARE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilCompareMask CmdSetStencilCompareMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_WRITE_MASK DYNAMIC_STATE_STENCIL_WRITE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilWriteMask CmdSetStencilWriteMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_REFERENCE DYNAMIC_STATE_STENCIL_REFERENCE} dynamic state enabled then {@link VK10#vkCmdSetStencilReference CmdSetStencilReference} must have been called in the current command buffer prior to this drawing command
* - If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to {@link VkPhysicalDeviceMultiviewProperties}{@code ::maxMultiviewInstanceIndex}
* - If the bound graphics pipeline was created with {@link VkPipelineSampleLocationsStateCreateInfoEXT}{@code ::sampleLocationsEnable} set to {@link VK10#VK_TRUE TRUE} and the current subpass has a depth/stencil attachment, then that attachment must have been created with the {@link EXTSampleLocations#VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT} bit set
* - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} dynamic state enabled then {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_CULL_MODE DYNAMIC_STATE_CULL_MODE} dynamic state enabled then {@link VK13#vkCmdSetCullMode CmdSetCullMode} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_FRONT_FACE DYNAMIC_STATE_FRONT_FACE} dynamic state enabled then {@link VK13#vkCmdSetFrontFace CmdSetFrontFace} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY DYNAMIC_STATE_PRIMITIVE_TOPOLOGY} dynamic state enabled then {@link VK13#vkCmdSetPrimitiveTopology CmdSetPrimitiveTopology} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE DYNAMIC_STATE_DEPTH_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthTestEnable CmdSetDepthTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE DYNAMIC_STATE_DEPTH_WRITE_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthWriteEnable CmdSetDepthWriteEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_COMPARE_OP DYNAMIC_STATE_DEPTH_COMPARE_OP} dynamic state enabled then {@link VK13#vkCmdSetDepthCompareOp CmdSetDepthCompareOp} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthBoundsTestEnable CmdSetDepthBoundsTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE DYNAMIC_STATE_STENCIL_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetStencilTestEnable CmdSetStencilTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_OP DYNAMIC_STATE_STENCIL_OP} dynamic state enabled then {@link VK13#vkCmdSetStencilOp CmdSetStencilOp} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::scissorCount} of the pipeline
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::viewportCount} of the pipeline
* - If the bound graphics pipeline state was created with both the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} and {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic states enabled then both {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} and {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -722,7 +777,7 @@ public static void vkCmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer, @
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::colorAttachmentCount} greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must have the corresponding element of {@link VkPipelineRenderingCreateInfo}{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then {@link EXTColorWriteEnable#vkCmdSetColorWriteEnableEXT CmdSetColorWriteEnableEXT} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the {@link VkPipelineColorBlendStateCreateInfo}{@code ::attachmentCount} of the currently bound graphics pipeline
- * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command for each discard rectangle in {@link VkPipelineDiscardRectangleStateCreateInfoEXT}{@code ::discardRectangleCount}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
@@ -738,37 +793,38 @@ public static void vkCmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer, @
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline must have been created with a {@link VkGraphicsPipelineCreateInfo}{@code ::renderPass} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE}
* - If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, rasterization discard must not be enabled
* - If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, the bound graphics pipeline must not have been created with a non-zero value in {@link VkPipelineRasterizationStateStreamCreateInfoEXT}{@code ::rasterizationStream}
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTLineRasterization#VK_DYNAMIC_STATE_LINE_STIPPLE_EXT DYNAMIC_STATE_LINE_STIPPLE_EXT} dynamic state enabled then {@link EXTLineRasterization#vkCmdSetLineStippleEXT CmdSetLineStippleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRepresentativeFragmentTestEnableNV CmdSetRepresentativeFragmentTestEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} set {@code pColorBlendEnables} for any attachment to {@link VK10#VK_TRUE TRUE}, then for those attachments in the subpass the corresponding image view’s format features must contain {@link VK10#VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must follow the rules for a zero-attachment subpass
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state disabled, then the {@code samples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must be greater or equal to the {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -788,7 +844,7 @@ public static void vkCmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer, @
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link VK10#VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} set {@code coverageModulationTableEnable} to {@link VK10#VK_TRUE TRUE}, then the {@code coverageModulationTableCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
* - If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
* - If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by {@link NVCoverageReductionMode#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportSwizzleStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
@@ -799,6 +855,7 @@ public static void vkCmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer, @
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link VK10#VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT LINE_RASTERIZATION_MODE_DEFAULT_EXT}, then the {@code stippledRectangularLines} feature must be enabled and {@link VkPhysicalDeviceLimits}{@code ::strictLines} must be VK_TRUE
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must be {@link EXTConservativeRasterization#VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT}
* - If the currently bound pipeline was created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link VK10#VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link VK10#VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}, then Mesh Shader Queries must not be active
+ * - If dynamic state was inherited from {@link VkCommandBufferInheritanceViewportScissorInfoNV}, it must be set in the current command buffer prior to this drawing command
*
*
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/NVRayTracing.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/NVRayTracing.java
index 0d11e00ac9..d05488d280 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/NVRayTracing.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/NVRayTracing.java
@@ -649,6 +649,7 @@ public static void nvkCmdBuildAccelerationStructureNV(VkCommandBuffer commandBuf
* - If {@code update} is {@link VK10#VK_TRUE TRUE}, then objects that were previously active must not be made inactive as per Inactive Primitives and Instances
* - If {@code update} is {@link VK10#VK_TRUE TRUE}, then objects that were previously inactive must not be made active as per Inactive Primitives and Instances
* - If {@code update} is {@link VK10#VK_TRUE TRUE}, the {@code src} and {@code dst} objects must either be the same object or not have any memory aliasing
+ * - {@code dst} must be bound completely and contiguously to a single {@code VkDeviceMemory} object via {@link #vkBindAccelerationStructureMemoryNV BindAccelerationStructureMemoryNV}
*
*
* Valid Usage (Implicit)
@@ -727,6 +728,8 @@ public static void vkCmdBuildAccelerationStructureNV(VkCommandBuffer commandBuff
* If {@code mode} is {@link KHRAccelerationStructure#VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR}, {@code src} must have been constructed with {@link KHRAccelerationStructure#VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR} in the build
* The {@code buffer} used to create {@code src} must be bound to device memory
* The {@code buffer} used to create {@code dst} must be bound to device memory
+ * The range of memory backing {@code dst} that is accessed by this command must not overlap the memory backing {@code src} that is accessed by this command
+ * {@code dst} must be bound completely and contiguously to a single {@code VkDeviceMemory} object via {@link #vkBindAccelerationStructureMemoryNV BindAccelerationStructureMemoryNV}
*
*
* Valid Usage (Implicit)
@@ -824,7 +827,6 @@ public static void vkCmdCopyAccelerationStructureNV(VkCommandBuffer commandBuffe
* If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* A valid pipeline must be bound to the pipeline bind point used by this command
- * If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link VK10#VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link VK10#VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VK10.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VK10.java
index a36d1b26db..616b6d7c72 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VK10.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VK10.java
@@ -123,7 +123,7 @@ public class VK10 {
*
* See Also
*
- * {@link VkAccelerationStructureBuildGeometryInfoKHR}, {@link VkAccelerationStructureBuildSizesInfoKHR}, {@link VkAccelerationStructureCaptureDescriptorDataInfoEXT}, {@link VkAccelerationStructureCreateInfoKHR}, {@link VkAccelerationStructureCreateInfoNV}, {@link VkAccelerationStructureDeviceAddressInfoKHR}, {@link VkAccelerationStructureGeometryAabbsDataKHR}, {@link VkAccelerationStructureGeometryInstancesDataKHR}, {@link VkAccelerationStructureGeometryKHR}, {@link VkAccelerationStructureGeometryMotionTrianglesDataNV}, {@link VkAccelerationStructureGeometryTrianglesDataKHR}, {@link VkAccelerationStructureInfoNV}, {@link VkAccelerationStructureMemoryRequirementsInfoNV}, {@link VkAccelerationStructureMotionInfoNV}, {@link VkAccelerationStructureTrianglesOpacityMicromapEXT}, {@link VkAccelerationStructureVersionInfoKHR}, {@link VkAcquireNextImageInfoKHR}, {@link VkAcquireProfilingLockInfoKHR}, {@link VkAmigoProfilingSubmitInfoSEC}, {@link VkApplicationInfo}, {@link VkAttachmentDescription2}, {@link VkAttachmentDescriptionStencilLayout}, {@link VkAttachmentReference2}, {@link VkAttachmentReferenceStencilLayout}, {@link VkAttachmentSampleCountInfoAMD}, {@link VkBaseInStructure}, {@link VkBaseOutStructure}, {@link VkBindAccelerationStructureMemoryInfoNV}, {@link VkBindBufferMemoryDeviceGroupInfo}, {@link VkBindBufferMemoryInfo}, {@link VkBindImageMemoryDeviceGroupInfo}, {@link VkBindImageMemoryInfo}, {@link VkBindImageMemorySwapchainInfoKHR}, {@link VkBindImagePlaneMemoryInfo}, {@link VkBindSparseInfo}, {@link VkBindVideoSessionMemoryInfoKHR}, {@link VkBlitImageInfo2}, {@link VkBufferCaptureDescriptorDataInfoEXT}, {@link VkBufferCopy2}, {@link VkBufferCreateInfo}, {@link VkBufferDeviceAddressCreateInfoEXT}, {@link VkBufferDeviceAddressInfo}, {@link VkBufferImageCopy2}, {@link VkBufferMemoryBarrier}, {@link VkBufferMemoryBarrier2}, {@link VkBufferMemoryRequirementsInfo2}, {@link VkBufferOpaqueCaptureAddressCreateInfo}, {@link VkBufferViewCreateInfo}, {@link VkCalibratedTimestampInfoEXT}, {@link VkCheckpointData2NV}, {@link VkCheckpointDataNV}, {@link VkCommandBufferAllocateInfo}, {@link VkCommandBufferBeginInfo}, {@link VkCommandBufferInheritanceConditionalRenderingInfoEXT}, {@link VkCommandBufferInheritanceInfo}, {@link VkCommandBufferInheritanceRenderPassTransformInfoQCOM}, {@link VkCommandBufferInheritanceRenderingInfo}, {@link VkCommandBufferInheritanceViewportScissorInfoNV}, {@link VkCommandBufferSubmitInfo}, {@link VkCommandPoolCreateInfo}, {@link VkComputePipelineCreateInfo}, {@link VkConditionalRenderingBeginInfoEXT}, {@link VkCooperativeMatrixPropertiesNV}, {@link VkCopyAccelerationStructureInfoKHR}, {@link VkCopyAccelerationStructureToMemoryInfoKHR}, {@link VkCopyBufferInfo2}, {@link VkCopyBufferToImageInfo2}, {@link VkCopyCommandTransformInfoQCOM}, {@link VkCopyDescriptorSet}, {@link VkCopyImageInfo2}, {@link VkCopyImageToBufferInfo2}, {@link VkCopyMemoryToAccelerationStructureInfoKHR}, {@link VkCopyMemoryToMicromapInfoEXT}, {@link VkCopyMicromapInfoEXT}, {@link VkCopyMicromapToMemoryInfoEXT}, {@link VkCuFunctionCreateInfoNVX}, {@link VkCuLaunchInfoNVX}, {@link VkCuModuleCreateInfoNVX}, {@link VkD3D12FenceSubmitInfoKHR}, {@link VkDebugMarkerMarkerInfoEXT}, {@link VkDebugMarkerObjectNameInfoEXT}, {@link VkDebugMarkerObjectTagInfoEXT}, {@link VkDebugReportCallbackCreateInfoEXT}, {@link VkDebugUtilsLabelEXT}, {@link VkDebugUtilsMessengerCallbackDataEXT}, {@link VkDebugUtilsMessengerCreateInfoEXT}, {@link VkDebugUtilsObjectNameInfoEXT}, {@link VkDebugUtilsObjectTagInfoEXT}, {@link VkDedicatedAllocationBufferCreateInfoNV}, {@link VkDedicatedAllocationImageCreateInfoNV}, {@link VkDedicatedAllocationMemoryAllocateInfoNV}, {@link VkDependencyInfo}, {@link VkDescriptorAddressInfoEXT}, {@link VkDescriptorBufferBindingInfoEXT}, {@link VkDescriptorBufferBindingPushDescriptorBufferHandleEXT}, {@link VkDescriptorGetInfoEXT}, {@link VkDescriptorPoolCreateInfo}, {@link VkDescriptorPoolInlineUniformBlockCreateInfo}, {@link VkDescriptorSetAllocateInfo}, {@link VkDescriptorSetBindingReferenceVALVE}, {@link VkDescriptorSetLayoutBindingFlagsCreateInfo}, {@link VkDescriptorSetLayoutCreateInfo}, {@link VkDescriptorSetLayoutHostMappingInfoVALVE}, {@link VkDescriptorSetLayoutSupport}, {@link VkDescriptorSetVariableDescriptorCountAllocateInfo}, {@link VkDescriptorSetVariableDescriptorCountLayoutSupport}, {@link VkDescriptorUpdateTemplateCreateInfo}, {@link VkDeviceAddressBindingCallbackDataEXT}, {@link VkDeviceBufferMemoryRequirements}, {@link VkDeviceCreateInfo}, {@link VkDeviceDeviceMemoryReportCreateInfoEXT}, {@link VkDeviceDiagnosticsConfigCreateInfoNV}, {@link VkDeviceEventInfoEXT}, {@link VkDeviceFaultCountsEXT}, {@link VkDeviceFaultInfoEXT}, {@link VkDeviceGroupBindSparseInfo}, {@link VkDeviceGroupCommandBufferBeginInfo}, {@link VkDeviceGroupDeviceCreateInfo}, {@link VkDeviceGroupPresentCapabilitiesKHR}, {@link VkDeviceGroupPresentInfoKHR}, {@link VkDeviceGroupRenderPassBeginInfo}, {@link VkDeviceGroupSubmitInfo}, {@link VkDeviceGroupSwapchainCreateInfoKHR}, {@link VkDeviceImageMemoryRequirements}, {@link VkDeviceMemoryOpaqueCaptureAddressInfo}, {@link VkDeviceMemoryOverallocationCreateInfoAMD}, {@link VkDeviceMemoryReportCallbackDataEXT}, {@link VkDevicePrivateDataCreateInfo}, {@link VkDeviceQueueCreateInfo}, {@link VkDeviceQueueGlobalPriorityCreateInfoKHR}, {@link VkDeviceQueueInfo2}, {@link VkDirectDriverLoadingInfoLUNARG}, {@link VkDirectDriverLoadingListLUNARG}, {@link VkDisplayEventInfoEXT}, {@link VkDisplayModeCreateInfoKHR}, {@link VkDisplayModeProperties2KHR}, {@link VkDisplayNativeHdrSurfaceCapabilitiesAMD}, {@link VkDisplayPlaneCapabilities2KHR}, {@link VkDisplayPlaneInfo2KHR}, {@link VkDisplayPlaneProperties2KHR}, {@link VkDisplayPowerInfoEXT}, {@link VkDisplayPresentInfoKHR}, {@link VkDisplayProperties2KHR}, {@link VkDisplaySurfaceCreateInfoKHR}, {@link VkDrmFormatModifierPropertiesList2EXT}, {@link VkDrmFormatModifierPropertiesListEXT}, {@link VkEventCreateInfo}, {@link VkExportFenceCreateInfo}, {@link VkExportFenceWin32HandleInfoKHR}, {@link VkExportMemoryAllocateInfo}, {@link VkExportMemoryAllocateInfoNV}, {@link VkExportMemoryWin32HandleInfoKHR}, {@link VkExportMemoryWin32HandleInfoNV}, {@link VkExportMetalBufferInfoEXT}, {@link VkExportMetalCommandQueueInfoEXT}, {@link VkExportMetalDeviceInfoEXT}, {@link VkExportMetalIOSurfaceInfoEXT}, {@link VkExportMetalObjectCreateInfoEXT}, {@link VkExportMetalObjectsInfoEXT}, {@link VkExportMetalSharedEventInfoEXT}, {@link VkExportMetalTextureInfoEXT}, {@link VkExportSemaphoreCreateInfo}, {@link VkExportSemaphoreWin32HandleInfoKHR}, {@link VkExternalBufferProperties}, {@link VkExternalFenceProperties}, {@link VkExternalImageFormatProperties}, {@link VkExternalMemoryBufferCreateInfo}, {@link VkExternalMemoryImageCreateInfo}, {@link VkExternalMemoryImageCreateInfoNV}, {@link VkExternalSemaphoreProperties}, {@link VkFenceCreateInfo}, {@link VkFenceGetFdInfoKHR}, {@link VkFenceGetWin32HandleInfoKHR}, {@link VkFilterCubicImageViewImageFormatPropertiesEXT}, {@link VkFormatProperties2}, {@link VkFormatProperties3}, {@link VkFragmentShadingRateAttachmentInfoKHR}, {@link VkFramebufferAttachmentImageInfo}, {@link VkFramebufferAttachmentsCreateInfo}, {@link VkFramebufferCreateInfo}, {@link VkFramebufferMixedSamplesCombinationNV}, {@link VkGeneratedCommandsInfoNV}, {@link VkGeneratedCommandsMemoryRequirementsInfoNV}, {@link VkGeometryAABBNV}, {@link VkGeometryNV}, {@link VkGeometryTrianglesNV}, {@link VkGraphicsPipelineCreateInfo}, {@link VkGraphicsPipelineLibraryCreateInfoEXT}, {@link VkGraphicsPipelineShaderGroupsCreateInfoNV}, {@link VkGraphicsShaderGroupCreateInfoNV}, {@link VkHdrMetadataEXT}, {@link VkHeadlessSurfaceCreateInfoEXT}, {@link VkImageBlit2}, {@link VkImageCaptureDescriptorDataInfoEXT}, {@link VkImageCompressionControlEXT}, {@link VkImageCompressionPropertiesEXT}, {@link VkImageCopy2}, {@link VkImageCreateInfo}, {@link VkImageDrmFormatModifierExplicitCreateInfoEXT}, {@link VkImageDrmFormatModifierListCreateInfoEXT}, {@link VkImageDrmFormatModifierPropertiesEXT}, {@link VkImageFormatListCreateInfo}, {@link VkImageFormatProperties2}, {@link VkImageMemoryBarrier}, {@link VkImageMemoryBarrier2}, {@link VkImageMemoryRequirementsInfo2}, {@link VkImagePlaneMemoryRequirementsInfo}, {@link VkImageResolve2}, {@link VkImageSparseMemoryRequirementsInfo2}, {@link VkImageStencilUsageCreateInfo}, {@link VkImageSubresource2EXT}, {@link VkImageSwapchainCreateInfoKHR}, {@link VkImageViewASTCDecodeModeEXT}, {@link VkImageViewAddressPropertiesNVX}, {@link VkImageViewCaptureDescriptorDataInfoEXT}, {@link VkImageViewCreateInfo}, {@link VkImageViewHandleInfoNVX}, {@link VkImageViewMinLodCreateInfoEXT}, {@link VkImageViewSampleWeightCreateInfoQCOM}, {@link VkImageViewUsageCreateInfo}, {@link VkImportFenceFdInfoKHR}, {@link VkImportFenceWin32HandleInfoKHR}, {@link VkImportMemoryFdInfoKHR}, {@link VkImportMemoryHostPointerInfoEXT}, {@link VkImportMemoryWin32HandleInfoKHR}, {@link VkImportMemoryWin32HandleInfoNV}, {@link VkImportMetalBufferInfoEXT}, {@link VkImportMetalIOSurfaceInfoEXT}, {@link VkImportMetalSharedEventInfoEXT}, {@link VkImportMetalTextureInfoEXT}, {@link VkImportSemaphoreFdInfoKHR}, {@link VkImportSemaphoreWin32HandleInfoKHR}, {@link VkIndirectCommandsLayoutCreateInfoNV}, {@link VkIndirectCommandsLayoutTokenNV}, {@link VkInitializePerformanceApiInfoINTEL}, {@link VkInstanceCreateInfo}, {@link VkMacOSSurfaceCreateInfoMVK}, {@link VkMappedMemoryRange}, {@link VkMemoryAllocateFlagsInfo}, {@link VkMemoryAllocateInfo}, {@link VkMemoryBarrier}, {@link VkMemoryBarrier2}, {@link VkMemoryDedicatedAllocateInfo}, {@link VkMemoryDedicatedRequirements}, {@link VkMemoryFdPropertiesKHR}, {@link VkMemoryGetFdInfoKHR}, {@link VkMemoryGetRemoteAddressInfoNV}, {@link VkMemoryGetWin32HandleInfoKHR}, {@link VkMemoryHostPointerPropertiesEXT}, {@link VkMemoryOpaqueCaptureAddressAllocateInfo}, {@link VkMemoryPriorityAllocateInfoEXT}, {@link VkMemoryRequirements2}, {@link VkMemoryWin32HandlePropertiesKHR}, {@link VkMetalSurfaceCreateInfoEXT}, {@link VkMicromapBuildInfoEXT}, {@link VkMicromapBuildSizesInfoEXT}, {@link VkMicromapCreateInfoEXT}, {@link VkMicromapVersionInfoEXT}, {@link VkMultisamplePropertiesEXT}, {@link VkMultisampledRenderToSingleSampledInfoEXT}, {@link VkMultiviewPerViewAttributesInfoNVX}, {@link VkMutableDescriptorTypeCreateInfoEXT}, {@link VkOpaqueCaptureDescriptorDataCreateInfoEXT}, {@link VkOpticalFlowExecuteInfoNV}, {@link VkOpticalFlowImageFormatInfoNV}, {@link VkOpticalFlowImageFormatPropertiesNV}, {@link VkOpticalFlowSessionCreateInfoNV}, {@link VkOpticalFlowSessionCreatePrivateDataInfoNV}, {@link VkPerformanceConfigurationAcquireInfoINTEL}, {@link VkPerformanceCounterDescriptionKHR}, {@link VkPerformanceCounterKHR}, {@link VkPerformanceMarkerInfoINTEL}, {@link VkPerformanceOverrideInfoINTEL}, {@link VkPerformanceQuerySubmitInfoKHR}, {@link VkPerformanceStreamMarkerInfoINTEL}, {@link VkPhysicalDevice16BitStorageFeatures}, {@link VkPhysicalDevice4444FormatsFeaturesEXT}, {@link VkPhysicalDevice8BitStorageFeatures}, {@link VkPhysicalDeviceASTCDecodeFeaturesEXT}, {@link VkPhysicalDeviceAccelerationStructureFeaturesKHR}, {@link VkPhysicalDeviceAccelerationStructurePropertiesKHR}, {@link VkPhysicalDeviceAddressBindingReportFeaturesEXT}, {@link VkPhysicalDeviceAmigoProfilingFeaturesSEC}, {@link VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT}, {@link VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT}, {@link VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT}, {@link VkPhysicalDeviceBorderColorSwizzleFeaturesEXT}, {@link VkPhysicalDeviceBufferDeviceAddressFeatures}, {@link VkPhysicalDeviceBufferDeviceAddressFeaturesEXT}, {@link VkPhysicalDeviceCoherentMemoryFeaturesAMD}, {@link VkPhysicalDeviceColorWriteEnableFeaturesEXT}, {@link VkPhysicalDeviceComputeShaderDerivativesFeaturesNV}, {@link VkPhysicalDeviceConditionalRenderingFeaturesEXT}, {@link VkPhysicalDeviceConservativeRasterizationPropertiesEXT}, {@link VkPhysicalDeviceCooperativeMatrixFeaturesNV}, {@link VkPhysicalDeviceCooperativeMatrixPropertiesNV}, {@link VkPhysicalDeviceCopyMemoryIndirectFeaturesNV}, {@link VkPhysicalDeviceCopyMemoryIndirectPropertiesNV}, {@link VkPhysicalDeviceCornerSampledImageFeaturesNV}, {@link VkPhysicalDeviceCoverageReductionModeFeaturesNV}, {@link VkPhysicalDeviceCustomBorderColorFeaturesEXT}, {@link VkPhysicalDeviceCustomBorderColorPropertiesEXT}, {@link VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV}, {@link VkPhysicalDeviceDepthClampZeroOneFeaturesEXT}, {@link VkPhysicalDeviceDepthClipControlFeaturesEXT}, {@link VkPhysicalDeviceDepthClipEnableFeaturesEXT}, {@link VkPhysicalDeviceDepthStencilResolveProperties}, {@link VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT}, {@link VkPhysicalDeviceDescriptorBufferFeaturesEXT}, {@link VkPhysicalDeviceDescriptorBufferPropertiesEXT}, {@link VkPhysicalDeviceDescriptorIndexingFeatures}, {@link VkPhysicalDeviceDescriptorIndexingProperties}, {@link VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE}, {@link VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV}, {@link VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV}, {@link VkPhysicalDeviceDeviceMemoryReportFeaturesEXT}, {@link VkPhysicalDeviceDiagnosticsConfigFeaturesNV}, {@link VkPhysicalDeviceDiscardRectanglePropertiesEXT}, {@link VkPhysicalDeviceDriverProperties}, {@link VkPhysicalDeviceDrmPropertiesEXT}, {@link VkPhysicalDeviceDynamicRenderingFeatures}, {@link VkPhysicalDeviceExclusiveScissorFeaturesNV}, {@link VkPhysicalDeviceExtendedDynamicState2FeaturesEXT}, {@link VkPhysicalDeviceExtendedDynamicState3FeaturesEXT}, {@link VkPhysicalDeviceExtendedDynamicState3PropertiesEXT}, {@link VkPhysicalDeviceExtendedDynamicStateFeaturesEXT}, {@link VkPhysicalDeviceExternalBufferInfo}, {@link VkPhysicalDeviceExternalFenceInfo}, {@link VkPhysicalDeviceExternalImageFormatInfo}, {@link VkPhysicalDeviceExternalMemoryHostPropertiesEXT}, {@link VkPhysicalDeviceExternalMemoryRDMAFeaturesNV}, {@link VkPhysicalDeviceExternalSemaphoreInfo}, {@link VkPhysicalDeviceFaultFeaturesEXT}, {@link VkPhysicalDeviceFeatures2}, {@link VkPhysicalDeviceFloatControlsProperties}, {@link VkPhysicalDeviceFragmentDensityMap2FeaturesEXT}, {@link VkPhysicalDeviceFragmentDensityMap2PropertiesEXT}, {@link VkPhysicalDeviceFragmentDensityMapFeaturesEXT}, {@link VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM}, {@link VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM}, {@link VkPhysicalDeviceFragmentDensityMapPropertiesEXT}, {@link VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR}, {@link VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR}, {@link VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT}, {@link VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV}, {@link VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV}, {@link VkPhysicalDeviceFragmentShadingRateFeaturesKHR}, {@link VkPhysicalDeviceFragmentShadingRateKHR}, {@link VkPhysicalDeviceFragmentShadingRatePropertiesKHR}, {@link VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR}, {@link VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT}, {@link VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT}, {@link VkPhysicalDeviceGroupProperties}, {@link VkPhysicalDeviceHostQueryResetFeatures}, {@link VkPhysicalDeviceIDProperties}, {@link VkPhysicalDeviceImage2DViewOf3DFeaturesEXT}, {@link VkPhysicalDeviceImageCompressionControlFeaturesEXT}, {@link VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT}, {@link VkPhysicalDeviceImageDrmFormatModifierInfoEXT}, {@link VkPhysicalDeviceImageFormatInfo2}, {@link VkPhysicalDeviceImageProcessingFeaturesQCOM}, {@link VkPhysicalDeviceImageProcessingPropertiesQCOM}, {@link VkPhysicalDeviceImageRobustnessFeatures}, {@link VkPhysicalDeviceImageViewImageFormatInfoEXT}, {@link VkPhysicalDeviceImageViewMinLodFeaturesEXT}, {@link VkPhysicalDeviceImagelessFramebufferFeatures}, {@link VkPhysicalDeviceIndexTypeUint8FeaturesEXT}, {@link VkPhysicalDeviceInheritedViewportScissorFeaturesNV}, {@link VkPhysicalDeviceInlineUniformBlockFeatures}, {@link VkPhysicalDeviceInlineUniformBlockProperties}, {@link VkPhysicalDeviceInvocationMaskFeaturesHUAWEI}, {@link VkPhysicalDeviceLegacyDitheringFeaturesEXT}, {@link VkPhysicalDeviceLineRasterizationFeaturesEXT}, {@link VkPhysicalDeviceLineRasterizationPropertiesEXT}, {@link VkPhysicalDeviceLinearColorAttachmentFeaturesNV}, {@link VkPhysicalDeviceMaintenance3Properties}, {@link VkPhysicalDeviceMaintenance4Features}, {@link VkPhysicalDeviceMaintenance4Properties}, {@link VkPhysicalDeviceMemoryBudgetPropertiesEXT}, {@link VkPhysicalDeviceMemoryDecompressionFeaturesNV}, {@link VkPhysicalDeviceMemoryDecompressionPropertiesNV}, {@link VkPhysicalDeviceMemoryPriorityFeaturesEXT}, {@link VkPhysicalDeviceMemoryProperties2}, {@link VkPhysicalDeviceMeshShaderFeaturesEXT}, {@link VkPhysicalDeviceMeshShaderFeaturesNV}, {@link VkPhysicalDeviceMeshShaderPropertiesEXT}, {@link VkPhysicalDeviceMeshShaderPropertiesNV}, {@link VkPhysicalDeviceMultiDrawFeaturesEXT}, {@link VkPhysicalDeviceMultiDrawPropertiesEXT}, {@link VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT}, {@link VkPhysicalDeviceMultiviewFeatures}, {@link VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX}, {@link VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM}, {@link VkPhysicalDeviceMultiviewProperties}, {@link VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT}, {@link VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT}, {@link VkPhysicalDeviceOpacityMicromapFeaturesEXT}, {@link VkPhysicalDeviceOpacityMicromapPropertiesEXT}, {@link VkPhysicalDeviceOpticalFlowFeaturesNV}, {@link VkPhysicalDeviceOpticalFlowPropertiesNV}, {@link VkPhysicalDevicePCIBusInfoPropertiesEXT}, {@link VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT}, {@link VkPhysicalDevicePerformanceQueryFeaturesKHR}, {@link VkPhysicalDevicePerformanceQueryPropertiesKHR}, {@link VkPhysicalDevicePipelineCreationCacheControlFeatures}, {@link VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR}, {@link VkPhysicalDevicePipelinePropertiesFeaturesEXT}, {@link VkPhysicalDevicePipelineProtectedAccessFeaturesEXT}, {@link VkPhysicalDevicePipelineRobustnessFeaturesEXT}, {@link VkPhysicalDevicePipelineRobustnessPropertiesEXT}, {@link VkPhysicalDevicePointClippingProperties}, {@link VkPhysicalDevicePortabilitySubsetFeaturesKHR}, {@link VkPhysicalDevicePortabilitySubsetPropertiesKHR}, {@link VkPhysicalDevicePresentBarrierFeaturesNV}, {@link VkPhysicalDevicePresentIdFeaturesKHR}, {@link VkPhysicalDevicePresentWaitFeaturesKHR}, {@link VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT}, {@link VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT}, {@link VkPhysicalDevicePrivateDataFeatures}, {@link VkPhysicalDeviceProperties2}, {@link VkPhysicalDeviceProtectedMemoryFeatures}, {@link VkPhysicalDeviceProtectedMemoryProperties}, {@link VkPhysicalDeviceProvokingVertexFeaturesEXT}, {@link VkPhysicalDeviceProvokingVertexPropertiesEXT}, {@link VkPhysicalDevicePushDescriptorPropertiesKHR}, {@link VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT}, {@link VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT}, {@link VkPhysicalDeviceRayQueryFeaturesKHR}, {@link VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV}, {@link VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV}, {@link VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR}, {@link VkPhysicalDeviceRayTracingMotionBlurFeaturesNV}, {@link VkPhysicalDeviceRayTracingPipelineFeaturesKHR}, {@link VkPhysicalDeviceRayTracingPipelinePropertiesKHR}, {@link VkPhysicalDeviceRayTracingPropertiesNV}, {@link VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV}, {@link VkPhysicalDeviceRobustness2FeaturesEXT}, {@link VkPhysicalDeviceRobustness2PropertiesEXT}, {@link VkPhysicalDeviceSampleLocationsPropertiesEXT}, {@link VkPhysicalDeviceSamplerFilterMinmaxProperties}, {@link VkPhysicalDeviceSamplerYcbcrConversionFeatures}, {@link VkPhysicalDeviceScalarBlockLayoutFeatures}, {@link VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures}, {@link VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT}, {@link VkPhysicalDeviceShaderAtomicFloatFeaturesEXT}, {@link VkPhysicalDeviceShaderAtomicInt64Features}, {@link VkPhysicalDeviceShaderClockFeaturesKHR}, {@link VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM}, {@link VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM}, {@link VkPhysicalDeviceShaderCoreProperties2AMD}, {@link VkPhysicalDeviceShaderCorePropertiesAMD}, {@link VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures}, {@link VkPhysicalDeviceShaderDrawParametersFeatures}, {@link VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD}, {@link VkPhysicalDeviceShaderFloat16Int8Features}, {@link VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT}, {@link VkPhysicalDeviceShaderImageFootprintFeaturesNV}, {@link VkPhysicalDeviceShaderIntegerDotProductFeatures}, {@link VkPhysicalDeviceShaderIntegerDotProductProperties}, {@link VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL}, {@link VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT}, {@link VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT}, {@link VkPhysicalDeviceShaderSMBuiltinsFeaturesNV}, {@link VkPhysicalDeviceShaderSMBuiltinsPropertiesNV}, {@link VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures}, {@link VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR}, {@link VkPhysicalDeviceShaderTerminateInvocationFeatures}, {@link VkPhysicalDeviceShadingRateImageFeaturesNV}, {@link VkPhysicalDeviceShadingRateImagePropertiesNV}, {@link VkPhysicalDeviceSparseImageFormatInfo2}, {@link VkPhysicalDeviceSubgroupProperties}, {@link VkPhysicalDeviceSubgroupSizeControlFeatures}, {@link VkPhysicalDeviceSubgroupSizeControlProperties}, {@link VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT}, {@link VkPhysicalDeviceSubpassShadingFeaturesHUAWEI}, {@link VkPhysicalDeviceSubpassShadingPropertiesHUAWEI}, {@link VkPhysicalDeviceSurfaceInfo2KHR}, {@link VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT}, {@link VkPhysicalDeviceSynchronization2Features}, {@link VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT}, {@link VkPhysicalDeviceTexelBufferAlignmentProperties}, {@link VkPhysicalDeviceTextureCompressionASTCHDRFeatures}, {@link VkPhysicalDeviceTilePropertiesFeaturesQCOM}, {@link VkPhysicalDeviceTimelineSemaphoreFeatures}, {@link VkPhysicalDeviceTimelineSemaphoreProperties}, {@link VkPhysicalDeviceToolProperties}, {@link VkPhysicalDeviceTransformFeedbackFeaturesEXT}, {@link VkPhysicalDeviceTransformFeedbackPropertiesEXT}, {@link VkPhysicalDeviceUniformBufferStandardLayoutFeatures}, {@link VkPhysicalDeviceVariablePointersFeatures}, {@link VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT}, {@link VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT}, {@link VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT}, {@link VkPhysicalDeviceVideoFormatInfoKHR}, {@link VkPhysicalDeviceVulkan11Features}, {@link VkPhysicalDeviceVulkan11Properties}, {@link VkPhysicalDeviceVulkan12Features}, {@link VkPhysicalDeviceVulkan12Properties}, {@link VkPhysicalDeviceVulkan13Features}, {@link VkPhysicalDeviceVulkan13Properties}, {@link VkPhysicalDeviceVulkanMemoryModelFeatures}, {@link VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR}, {@link VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT}, {@link VkPhysicalDeviceYcbcrImageArraysFeaturesEXT}, {@link VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures}, {@link VkPipelineCacheCreateInfo}, {@link VkPipelineColorBlendAdvancedStateCreateInfoEXT}, {@link VkPipelineColorBlendStateCreateInfo}, {@link VkPipelineColorWriteCreateInfoEXT}, {@link VkPipelineCompilerControlCreateInfoAMD}, {@link VkPipelineCoverageModulationStateCreateInfoNV}, {@link VkPipelineCoverageReductionStateCreateInfoNV}, {@link VkPipelineCoverageToColorStateCreateInfoNV}, {@link VkPipelineCreationFeedbackCreateInfo}, {@link VkPipelineDepthStencilStateCreateInfo}, {@link VkPipelineDiscardRectangleStateCreateInfoEXT}, {@link VkPipelineDynamicStateCreateInfo}, {@link VkPipelineExecutableInfoKHR}, {@link VkPipelineExecutableInternalRepresentationKHR}, {@link VkPipelineExecutablePropertiesKHR}, {@link VkPipelineExecutableStatisticKHR}, {@link VkPipelineFragmentShadingRateEnumStateCreateInfoNV}, {@link VkPipelineFragmentShadingRateStateCreateInfoKHR}, {@link VkPipelineInfoKHR}, {@link VkPipelineInputAssemblyStateCreateInfo}, {@link VkPipelineLayoutCreateInfo}, {@link VkPipelineLibraryCreateInfoKHR}, {@link VkPipelineMultisampleStateCreateInfo}, {@link VkPipelinePropertiesIdentifierEXT}, {@link VkPipelineRasterizationConservativeStateCreateInfoEXT}, {@link VkPipelineRasterizationDepthClipStateCreateInfoEXT}, {@link VkPipelineRasterizationLineStateCreateInfoEXT}, {@link VkPipelineRasterizationProvokingVertexStateCreateInfoEXT}, {@link VkPipelineRasterizationStateCreateInfo}, {@link VkPipelineRasterizationStateRasterizationOrderAMD}, {@link VkPipelineRasterizationStateStreamCreateInfoEXT}, {@link VkPipelineRenderingCreateInfo}, {@link VkPipelineRepresentativeFragmentTestStateCreateInfoNV}, {@link VkPipelineRobustnessCreateInfoEXT}, {@link VkPipelineSampleLocationsStateCreateInfoEXT}, {@link VkPipelineShaderStageCreateInfo}, {@link VkPipelineShaderStageModuleIdentifierCreateInfoEXT}, {@link VkPipelineShaderStageRequiredSubgroupSizeCreateInfo}, {@link VkPipelineTessellationDomainOriginStateCreateInfo}, {@link VkPipelineTessellationStateCreateInfo}, {@link VkPipelineVertexInputDivisorStateCreateInfoEXT}, {@link VkPipelineVertexInputStateCreateInfo}, {@link VkPipelineViewportCoarseSampleOrderStateCreateInfoNV}, {@link VkPipelineViewportDepthClipControlCreateInfoEXT}, {@link VkPipelineViewportExclusiveScissorStateCreateInfoNV}, {@link VkPipelineViewportShadingRateImageStateCreateInfoNV}, {@link VkPipelineViewportStateCreateInfo}, {@link VkPipelineViewportSwizzleStateCreateInfoNV}, {@link VkPipelineViewportWScalingStateCreateInfoNV}, {@link VkPresentIdKHR}, {@link VkPresentInfoKHR}, {@link VkPresentRegionsKHR}, {@link VkPresentTimesInfoGOOGLE}, {@link VkPrivateDataSlotCreateInfo}, {@link VkProtectedSubmitInfo}, {@link VkQueryPoolCreateInfo}, {@link VkQueryPoolPerformanceCreateInfoKHR}, {@link VkQueryPoolPerformanceQueryCreateInfoINTEL}, {@link VkQueueFamilyCheckpointProperties2NV}, {@link VkQueueFamilyCheckpointPropertiesNV}, {@link VkQueueFamilyGlobalPriorityPropertiesKHR}, {@link VkQueueFamilyProperties2}, {@link VkQueueFamilyQueryResultStatusPropertiesKHR}, {@link VkQueueFamilyVideoPropertiesKHR}, {@link VkRayTracingPipelineCreateInfoKHR}, {@link VkRayTracingPipelineCreateInfoNV}, {@link VkRayTracingPipelineInterfaceCreateInfoKHR}, {@link VkRayTracingShaderGroupCreateInfoKHR}, {@link VkRayTracingShaderGroupCreateInfoNV}, {@link VkReleaseSwapchainImagesInfoEXT}, {@link VkRenderPassAttachmentBeginInfo}, {@link VkRenderPassBeginInfo}, {@link VkRenderPassCreateInfo}, {@link VkRenderPassCreateInfo2}, {@link VkRenderPassCreationControlEXT}, {@link VkRenderPassCreationFeedbackCreateInfoEXT}, {@link VkRenderPassFragmentDensityMapCreateInfoEXT}, {@link VkRenderPassInputAttachmentAspectCreateInfo}, {@link VkRenderPassMultiviewCreateInfo}, {@link VkRenderPassSampleLocationsBeginInfoEXT}, {@link VkRenderPassSubpassFeedbackCreateInfoEXT}, {@link VkRenderPassTransformBeginInfoQCOM}, {@link VkRenderingAttachmentInfo}, {@link VkRenderingFragmentDensityMapAttachmentInfoEXT}, {@link VkRenderingFragmentShadingRateAttachmentInfoKHR}, {@link VkRenderingInfo}, {@link VkResolveImageInfo2}, {@link VkSampleLocationsInfoEXT}, {@link VkSamplerBorderColorComponentMappingCreateInfoEXT}, {@link VkSamplerCaptureDescriptorDataInfoEXT}, {@link VkSamplerCreateInfo}, {@link VkSamplerCustomBorderColorCreateInfoEXT}, {@link VkSamplerReductionModeCreateInfo}, {@link VkSamplerYcbcrConversionCreateInfo}, {@link VkSamplerYcbcrConversionImageFormatProperties}, {@link VkSamplerYcbcrConversionInfo}, {@link VkSemaphoreCreateInfo}, {@link VkSemaphoreGetFdInfoKHR}, {@link VkSemaphoreGetWin32HandleInfoKHR}, {@link VkSemaphoreSignalInfo}, {@link VkSemaphoreSubmitInfo}, {@link VkSemaphoreTypeCreateInfo}, {@link VkSemaphoreWaitInfo}, {@link VkShaderModuleCreateInfo}, {@link VkShaderModuleIdentifierEXT}, {@link VkShaderModuleValidationCacheCreateInfoEXT}, {@link VkSharedPresentSurfaceCapabilitiesKHR}, {@link VkSparseImageFormatProperties2}, {@link VkSparseImageMemoryRequirements2}, {@link VkSubmitInfo}, {@link VkSubmitInfo2}, {@link VkSubpassBeginInfo}, {@link VkSubpassDependency2}, {@link VkSubpassDescription2}, {@link VkSubpassDescriptionDepthStencilResolve}, {@link VkSubpassEndInfo}, {@link VkSubpassFragmentDensityMapOffsetEndInfoQCOM}, {@link VkSubpassResolvePerformanceQueryEXT}, {@link VkSubpassShadingPipelineCreateInfoHUAWEI}, {@link VkSubresourceLayout2EXT}, {@link VkSurfaceCapabilities2EXT}, {@link VkSurfaceCapabilities2KHR}, {@link VkSurfaceCapabilitiesFullScreenExclusiveEXT}, {@link VkSurfaceCapabilitiesPresentBarrierNV}, {@link VkSurfaceFormat2KHR}, {@link VkSurfaceFullScreenExclusiveInfoEXT}, {@link VkSurfaceFullScreenExclusiveWin32InfoEXT}, {@link VkSurfacePresentModeCompatibilityEXT}, {@link VkSurfacePresentModeEXT}, {@link VkSurfacePresentScalingCapabilitiesEXT}, {@link VkSurfaceProtectedCapabilitiesKHR}, {@link VkSwapchainCounterCreateInfoEXT}, {@link VkSwapchainCreateInfoKHR}, {@link VkSwapchainDisplayNativeHdrCreateInfoAMD}, {@link VkSwapchainPresentBarrierCreateInfoNV}, {@link VkSwapchainPresentFenceInfoEXT}, {@link VkSwapchainPresentModeInfoEXT}, {@link VkSwapchainPresentModesCreateInfoEXT}, {@link VkSwapchainPresentScalingCreateInfoEXT}, {@link VkTextureLODGatherFormatPropertiesAMD}, {@link VkTilePropertiesQCOM}, {@link VkTimelineSemaphoreSubmitInfo}, {@link VkValidationCacheCreateInfoEXT}, {@link VkValidationFeaturesEXT}, {@link VkValidationFlagsEXT}, {@link VkVertexInputAttributeDescription2EXT}, {@link VkVertexInputBindingDescription2EXT}, {@link VkVideoBeginCodingInfoKHR}, {@link VkVideoCapabilitiesKHR}, {@link VkVideoCodingControlInfoKHR}, {@link VkVideoDecodeCapabilitiesKHR}, {@link VkVideoDecodeH264CapabilitiesEXT}, {@link VkVideoDecodeH264DpbSlotInfoEXT}, {@link VkVideoDecodeH264PictureInfoEXT}, {@link VkVideoDecodeH264ProfileInfoEXT}, {@link VkVideoDecodeH264SessionParametersAddInfoEXT}, {@link VkVideoDecodeH264SessionParametersCreateInfoEXT}, {@link VkVideoDecodeH265CapabilitiesEXT}, {@link VkVideoDecodeH265DpbSlotInfoEXT}, {@link VkVideoDecodeH265PictureInfoEXT}, {@link VkVideoDecodeH265ProfileInfoEXT}, {@link VkVideoDecodeH265SessionParametersAddInfoEXT}, {@link VkVideoDecodeH265SessionParametersCreateInfoEXT}, {@link VkVideoDecodeInfoKHR}, {@link VkVideoDecodeUsageInfoKHR}, {@link VkVideoEncodeCapabilitiesKHR}, {@link VkVideoEncodeH264CapabilitiesEXT}, {@link VkVideoEncodeH264DpbSlotInfoEXT}, {@link VkVideoEncodeH264EmitPictureParametersInfoEXT}, {@link VkVideoEncodeH264NaluSliceInfoEXT}, {@link VkVideoEncodeH264ProfileInfoEXT}, {@link VkVideoEncodeH264RateControlInfoEXT}, {@link VkVideoEncodeH264RateControlLayerInfoEXT}, {@link VkVideoEncodeH264ReferenceListsInfoEXT}, {@link VkVideoEncodeH264SessionParametersAddInfoEXT}, {@link VkVideoEncodeH264SessionParametersCreateInfoEXT}, {@link VkVideoEncodeH264VclFrameInfoEXT}, {@link VkVideoEncodeH265CapabilitiesEXT}, {@link VkVideoEncodeH265DpbSlotInfoEXT}, {@link VkVideoEncodeH265EmitPictureParametersInfoEXT}, {@link VkVideoEncodeH265NaluSliceSegmentInfoEXT}, {@link VkVideoEncodeH265ProfileInfoEXT}, {@link VkVideoEncodeH265RateControlInfoEXT}, {@link VkVideoEncodeH265RateControlLayerInfoEXT}, {@link VkVideoEncodeH265ReferenceListsInfoEXT}, {@link VkVideoEncodeH265SessionParametersAddInfoEXT}, {@link VkVideoEncodeH265SessionParametersCreateInfoEXT}, {@link VkVideoEncodeH265VclFrameInfoEXT}, {@link VkVideoEncodeInfoKHR}, {@link VkVideoEncodeRateControlInfoKHR}, {@link VkVideoEncodeRateControlLayerInfoKHR}, {@link VkVideoEncodeUsageInfoKHR}, {@link VkVideoEndCodingInfoKHR}, {@link VkVideoFormatPropertiesKHR}, {@link VkVideoPictureResourceInfoKHR}, {@link VkVideoProfileInfoKHR}, {@link VkVideoProfileListInfoKHR}, {@link VkVideoReferenceSlotInfoKHR}, {@link VkVideoSessionCreateInfoKHR}, {@link VkVideoSessionMemoryRequirementsKHR}, {@link VkVideoSessionParametersCreateInfoKHR}, {@link VkVideoSessionParametersUpdateInfoKHR}, {@link VkWaylandSurfaceCreateInfoKHR}, {@link VkWin32KeyedMutexAcquireReleaseInfoKHR}, {@link VkWin32KeyedMutexAcquireReleaseInfoNV}, {@link VkWin32SurfaceCreateInfoKHR}, {@link VkWriteDescriptorSet}, {@link VkWriteDescriptorSetAccelerationStructureKHR}, {@link VkWriteDescriptorSetAccelerationStructureNV}, {@link VkWriteDescriptorSetInlineUniformBlock}, {@link VkXlibSurfaceCreateInfoKHR}
+ * {@link VkAccelerationStructureBuildGeometryInfoKHR}, {@link VkAccelerationStructureBuildSizesInfoKHR}, {@link VkAccelerationStructureCaptureDescriptorDataInfoEXT}, {@link VkAccelerationStructureCreateInfoKHR}, {@link VkAccelerationStructureCreateInfoNV}, {@link VkAccelerationStructureDeviceAddressInfoKHR}, {@link VkAccelerationStructureGeometryAabbsDataKHR}, {@link VkAccelerationStructureGeometryInstancesDataKHR}, {@link VkAccelerationStructureGeometryKHR}, {@link VkAccelerationStructureGeometryMotionTrianglesDataNV}, {@link VkAccelerationStructureGeometryTrianglesDataKHR}, {@link VkAccelerationStructureInfoNV}, {@link VkAccelerationStructureMemoryRequirementsInfoNV}, {@link VkAccelerationStructureMotionInfoNV}, {@link VkAccelerationStructureTrianglesOpacityMicromapEXT}, {@link VkAccelerationStructureVersionInfoKHR}, {@link VkAcquireNextImageInfoKHR}, {@link VkAcquireProfilingLockInfoKHR}, {@link VkAmigoProfilingSubmitInfoSEC}, {@link VkAndroidHardwareBufferFormatProperties2ANDROID}, {@link VkAndroidHardwareBufferFormatPropertiesANDROID}, {@link VkAndroidHardwareBufferPropertiesANDROID}, {@link VkAndroidHardwareBufferUsageANDROID}, {@link VkAndroidSurfaceCreateInfoKHR}, {@link VkApplicationInfo}, {@link VkAttachmentDescription2}, {@link VkAttachmentDescriptionStencilLayout}, {@link VkAttachmentReference2}, {@link VkAttachmentReferenceStencilLayout}, {@link VkAttachmentSampleCountInfoAMD}, {@link VkBaseInStructure}, {@link VkBaseOutStructure}, {@link VkBindAccelerationStructureMemoryInfoNV}, {@link VkBindBufferMemoryDeviceGroupInfo}, {@link VkBindBufferMemoryInfo}, {@link VkBindImageMemoryDeviceGroupInfo}, {@link VkBindImageMemoryInfo}, {@link VkBindImageMemorySwapchainInfoKHR}, {@link VkBindImagePlaneMemoryInfo}, {@link VkBindSparseInfo}, {@link VkBindVideoSessionMemoryInfoKHR}, {@link VkBlitImageInfo2}, {@link VkBufferCaptureDescriptorDataInfoEXT}, {@link VkBufferCopy2}, {@link VkBufferCreateInfo}, {@link VkBufferDeviceAddressCreateInfoEXT}, {@link VkBufferDeviceAddressInfo}, {@link VkBufferImageCopy2}, {@link VkBufferMemoryBarrier}, {@link VkBufferMemoryBarrier2}, {@link VkBufferMemoryRequirementsInfo2}, {@link VkBufferOpaqueCaptureAddressCreateInfo}, {@link VkBufferViewCreateInfo}, {@link VkCalibratedTimestampInfoEXT}, {@link VkCheckpointData2NV}, {@link VkCheckpointDataNV}, {@link VkCommandBufferAllocateInfo}, {@link VkCommandBufferBeginInfo}, {@link VkCommandBufferInheritanceConditionalRenderingInfoEXT}, {@link VkCommandBufferInheritanceInfo}, {@link VkCommandBufferInheritanceRenderPassTransformInfoQCOM}, {@link VkCommandBufferInheritanceRenderingInfo}, {@link VkCommandBufferInheritanceViewportScissorInfoNV}, {@link VkCommandBufferSubmitInfo}, {@link VkCommandPoolCreateInfo}, {@link VkComputePipelineCreateInfo}, {@link VkConditionalRenderingBeginInfoEXT}, {@link VkCooperativeMatrixPropertiesNV}, {@link VkCopyAccelerationStructureInfoKHR}, {@link VkCopyAccelerationStructureToMemoryInfoKHR}, {@link VkCopyBufferInfo2}, {@link VkCopyBufferToImageInfo2}, {@link VkCopyCommandTransformInfoQCOM}, {@link VkCopyDescriptorSet}, {@link VkCopyImageInfo2}, {@link VkCopyImageToBufferInfo2}, {@link VkCopyMemoryToAccelerationStructureInfoKHR}, {@link VkCopyMemoryToMicromapInfoEXT}, {@link VkCopyMicromapInfoEXT}, {@link VkCopyMicromapToMemoryInfoEXT}, {@link VkCuFunctionCreateInfoNVX}, {@link VkCuLaunchInfoNVX}, {@link VkCuModuleCreateInfoNVX}, {@link VkD3D12FenceSubmitInfoKHR}, {@link VkDebugMarkerMarkerInfoEXT}, {@link VkDebugMarkerObjectNameInfoEXT}, {@link VkDebugMarkerObjectTagInfoEXT}, {@link VkDebugReportCallbackCreateInfoEXT}, {@link VkDebugUtilsLabelEXT}, {@link VkDebugUtilsMessengerCallbackDataEXT}, {@link VkDebugUtilsMessengerCreateInfoEXT}, {@link VkDebugUtilsObjectNameInfoEXT}, {@link VkDebugUtilsObjectTagInfoEXT}, {@link VkDedicatedAllocationBufferCreateInfoNV}, {@link VkDedicatedAllocationImageCreateInfoNV}, {@link VkDedicatedAllocationMemoryAllocateInfoNV}, {@link VkDependencyInfo}, {@link VkDescriptorAddressInfoEXT}, {@link VkDescriptorBufferBindingInfoEXT}, {@link VkDescriptorBufferBindingPushDescriptorBufferHandleEXT}, {@link VkDescriptorGetInfoEXT}, {@link VkDescriptorPoolCreateInfo}, {@link VkDescriptorPoolInlineUniformBlockCreateInfo}, {@link VkDescriptorSetAllocateInfo}, {@link VkDescriptorSetBindingReferenceVALVE}, {@link VkDescriptorSetLayoutBindingFlagsCreateInfo}, {@link VkDescriptorSetLayoutCreateInfo}, {@link VkDescriptorSetLayoutHostMappingInfoVALVE}, {@link VkDescriptorSetLayoutSupport}, {@link VkDescriptorSetVariableDescriptorCountAllocateInfo}, {@link VkDescriptorSetVariableDescriptorCountLayoutSupport}, {@link VkDescriptorUpdateTemplateCreateInfo}, {@link VkDeviceAddressBindingCallbackDataEXT}, {@link VkDeviceBufferMemoryRequirements}, {@link VkDeviceCreateInfo}, {@link VkDeviceDeviceMemoryReportCreateInfoEXT}, {@link VkDeviceDiagnosticsConfigCreateInfoNV}, {@link VkDeviceEventInfoEXT}, {@link VkDeviceFaultCountsEXT}, {@link VkDeviceFaultInfoEXT}, {@link VkDeviceGroupBindSparseInfo}, {@link VkDeviceGroupCommandBufferBeginInfo}, {@link VkDeviceGroupDeviceCreateInfo}, {@link VkDeviceGroupPresentCapabilitiesKHR}, {@link VkDeviceGroupPresentInfoKHR}, {@link VkDeviceGroupRenderPassBeginInfo}, {@link VkDeviceGroupSubmitInfo}, {@link VkDeviceGroupSwapchainCreateInfoKHR}, {@link VkDeviceImageMemoryRequirements}, {@link VkDeviceMemoryOpaqueCaptureAddressInfo}, {@link VkDeviceMemoryOverallocationCreateInfoAMD}, {@link VkDeviceMemoryReportCallbackDataEXT}, {@link VkDevicePrivateDataCreateInfo}, {@link VkDeviceQueueCreateInfo}, {@link VkDeviceQueueGlobalPriorityCreateInfoKHR}, {@link VkDeviceQueueInfo2}, {@link VkDirectDriverLoadingInfoLUNARG}, {@link VkDirectDriverLoadingListLUNARG}, {@link VkDirectFBSurfaceCreateInfoEXT}, {@link VkDisplayEventInfoEXT}, {@link VkDisplayModeCreateInfoKHR}, {@link VkDisplayModeProperties2KHR}, {@link VkDisplayNativeHdrSurfaceCapabilitiesAMD}, {@link VkDisplayPlaneCapabilities2KHR}, {@link VkDisplayPlaneInfo2KHR}, {@link VkDisplayPlaneProperties2KHR}, {@link VkDisplayPowerInfoEXT}, {@link VkDisplayPresentInfoKHR}, {@link VkDisplayProperties2KHR}, {@link VkDisplaySurfaceCreateInfoKHR}, {@link VkDrmFormatModifierPropertiesList2EXT}, {@link VkDrmFormatModifierPropertiesListEXT}, {@link VkEventCreateInfo}, {@link VkExportFenceCreateInfo}, {@link VkExportFenceWin32HandleInfoKHR}, {@link VkExportMemoryAllocateInfo}, {@link VkExportMemoryAllocateInfoNV}, {@link VkExportMemoryWin32HandleInfoKHR}, {@link VkExportMemoryWin32HandleInfoNV}, {@link VkExportMetalBufferInfoEXT}, {@link VkExportMetalCommandQueueInfoEXT}, {@link VkExportMetalDeviceInfoEXT}, {@link VkExportMetalIOSurfaceInfoEXT}, {@link VkExportMetalObjectCreateInfoEXT}, {@link VkExportMetalObjectsInfoEXT}, {@link VkExportMetalSharedEventInfoEXT}, {@link VkExportMetalTextureInfoEXT}, {@link VkExportSemaphoreCreateInfo}, {@link VkExportSemaphoreWin32HandleInfoKHR}, {@link VkExternalBufferProperties}, {@link VkExternalFenceProperties}, {@link VkExternalFormatANDROID}, {@link VkExternalImageFormatProperties}, {@link VkExternalMemoryBufferCreateInfo}, {@link VkExternalMemoryImageCreateInfo}, {@link VkExternalMemoryImageCreateInfoNV}, {@link VkExternalSemaphoreProperties}, {@link VkFenceCreateInfo}, {@link VkFenceGetFdInfoKHR}, {@link VkFenceGetWin32HandleInfoKHR}, {@link VkFilterCubicImageViewImageFormatPropertiesEXT}, {@link VkFormatProperties2}, {@link VkFormatProperties3}, {@link VkFragmentShadingRateAttachmentInfoKHR}, {@link VkFramebufferAttachmentImageInfo}, {@link VkFramebufferAttachmentsCreateInfo}, {@link VkFramebufferCreateInfo}, {@link VkFramebufferMixedSamplesCombinationNV}, {@link VkGeneratedCommandsInfoNV}, {@link VkGeneratedCommandsMemoryRequirementsInfoNV}, {@link VkGeometryAABBNV}, {@link VkGeometryNV}, {@link VkGeometryTrianglesNV}, {@link VkGraphicsPipelineCreateInfo}, {@link VkGraphicsPipelineLibraryCreateInfoEXT}, {@link VkGraphicsPipelineShaderGroupsCreateInfoNV}, {@link VkGraphicsShaderGroupCreateInfoNV}, {@link VkHdrMetadataEXT}, {@link VkHeadlessSurfaceCreateInfoEXT}, {@link VkImageBlit2}, {@link VkImageCaptureDescriptorDataInfoEXT}, {@link VkImageCompressionControlEXT}, {@link VkImageCompressionPropertiesEXT}, {@link VkImageCopy2}, {@link VkImageCreateInfo}, {@link VkImageDrmFormatModifierExplicitCreateInfoEXT}, {@link VkImageDrmFormatModifierListCreateInfoEXT}, {@link VkImageDrmFormatModifierPropertiesEXT}, {@link VkImageFormatListCreateInfo}, {@link VkImageFormatProperties2}, {@link VkImageMemoryBarrier}, {@link VkImageMemoryBarrier2}, {@link VkImageMemoryRequirementsInfo2}, {@link VkImagePlaneMemoryRequirementsInfo}, {@link VkImageResolve2}, {@link VkImageSparseMemoryRequirementsInfo2}, {@link VkImageStencilUsageCreateInfo}, {@link VkImageSubresource2EXT}, {@link VkImageSwapchainCreateInfoKHR}, {@link VkImageViewASTCDecodeModeEXT}, {@link VkImageViewAddressPropertiesNVX}, {@link VkImageViewCaptureDescriptorDataInfoEXT}, {@link VkImageViewCreateInfo}, {@link VkImageViewHandleInfoNVX}, {@link VkImageViewMinLodCreateInfoEXT}, {@link VkImageViewSampleWeightCreateInfoQCOM}, {@link VkImageViewUsageCreateInfo}, {@link VkImportAndroidHardwareBufferInfoANDROID}, {@link VkImportFenceFdInfoKHR}, {@link VkImportFenceWin32HandleInfoKHR}, {@link VkImportMemoryFdInfoKHR}, {@link VkImportMemoryHostPointerInfoEXT}, {@link VkImportMemoryWin32HandleInfoKHR}, {@link VkImportMemoryWin32HandleInfoNV}, {@link VkImportMetalBufferInfoEXT}, {@link VkImportMetalIOSurfaceInfoEXT}, {@link VkImportMetalSharedEventInfoEXT}, {@link VkImportMetalTextureInfoEXT}, {@link VkImportSemaphoreFdInfoKHR}, {@link VkImportSemaphoreWin32HandleInfoKHR}, {@link VkIndirectCommandsLayoutCreateInfoNV}, {@link VkIndirectCommandsLayoutTokenNV}, {@link VkInitializePerformanceApiInfoINTEL}, {@link VkInstanceCreateInfo}, {@link VkMacOSSurfaceCreateInfoMVK}, {@link VkMappedMemoryRange}, {@link VkMemoryAllocateFlagsInfo}, {@link VkMemoryAllocateInfo}, {@link VkMemoryBarrier}, {@link VkMemoryBarrier2}, {@link VkMemoryDedicatedAllocateInfo}, {@link VkMemoryDedicatedRequirements}, {@link VkMemoryFdPropertiesKHR}, {@link VkMemoryGetAndroidHardwareBufferInfoANDROID}, {@link VkMemoryGetFdInfoKHR}, {@link VkMemoryGetRemoteAddressInfoNV}, {@link VkMemoryGetWin32HandleInfoKHR}, {@link VkMemoryHostPointerPropertiesEXT}, {@link VkMemoryOpaqueCaptureAddressAllocateInfo}, {@link VkMemoryPriorityAllocateInfoEXT}, {@link VkMemoryRequirements2}, {@link VkMemoryWin32HandlePropertiesKHR}, {@link VkMetalSurfaceCreateInfoEXT}, {@link VkMicromapBuildInfoEXT}, {@link VkMicromapBuildSizesInfoEXT}, {@link VkMicromapCreateInfoEXT}, {@link VkMicromapVersionInfoEXT}, {@link VkMultisamplePropertiesEXT}, {@link VkMultisampledRenderToSingleSampledInfoEXT}, {@link VkMultiviewPerViewAttributesInfoNVX}, {@link VkMutableDescriptorTypeCreateInfoEXT}, {@link VkOpaqueCaptureDescriptorDataCreateInfoEXT}, {@link VkOpticalFlowExecuteInfoNV}, {@link VkOpticalFlowImageFormatInfoNV}, {@link VkOpticalFlowImageFormatPropertiesNV}, {@link VkOpticalFlowSessionCreateInfoNV}, {@link VkOpticalFlowSessionCreatePrivateDataInfoNV}, {@link VkPerformanceConfigurationAcquireInfoINTEL}, {@link VkPerformanceCounterDescriptionKHR}, {@link VkPerformanceCounterKHR}, {@link VkPerformanceMarkerInfoINTEL}, {@link VkPerformanceOverrideInfoINTEL}, {@link VkPerformanceQuerySubmitInfoKHR}, {@link VkPerformanceStreamMarkerInfoINTEL}, {@link VkPhysicalDevice16BitStorageFeatures}, {@link VkPhysicalDevice4444FormatsFeaturesEXT}, {@link VkPhysicalDevice8BitStorageFeatures}, {@link VkPhysicalDeviceASTCDecodeFeaturesEXT}, {@link VkPhysicalDeviceAccelerationStructureFeaturesKHR}, {@link VkPhysicalDeviceAccelerationStructurePropertiesKHR}, {@link VkPhysicalDeviceAddressBindingReportFeaturesEXT}, {@link VkPhysicalDeviceAmigoProfilingFeaturesSEC}, {@link VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT}, {@link VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT}, {@link VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT}, {@link VkPhysicalDeviceBorderColorSwizzleFeaturesEXT}, {@link VkPhysicalDeviceBufferDeviceAddressFeatures}, {@link VkPhysicalDeviceBufferDeviceAddressFeaturesEXT}, {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI}, {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI}, {@link VkPhysicalDeviceCoherentMemoryFeaturesAMD}, {@link VkPhysicalDeviceColorWriteEnableFeaturesEXT}, {@link VkPhysicalDeviceComputeShaderDerivativesFeaturesNV}, {@link VkPhysicalDeviceConditionalRenderingFeaturesEXT}, {@link VkPhysicalDeviceConservativeRasterizationPropertiesEXT}, {@link VkPhysicalDeviceCooperativeMatrixFeaturesNV}, {@link VkPhysicalDeviceCooperativeMatrixPropertiesNV}, {@link VkPhysicalDeviceCopyMemoryIndirectFeaturesNV}, {@link VkPhysicalDeviceCopyMemoryIndirectPropertiesNV}, {@link VkPhysicalDeviceCornerSampledImageFeaturesNV}, {@link VkPhysicalDeviceCoverageReductionModeFeaturesNV}, {@link VkPhysicalDeviceCustomBorderColorFeaturesEXT}, {@link VkPhysicalDeviceCustomBorderColorPropertiesEXT}, {@link VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV}, {@link VkPhysicalDeviceDepthClampZeroOneFeaturesEXT}, {@link VkPhysicalDeviceDepthClipControlFeaturesEXT}, {@link VkPhysicalDeviceDepthClipEnableFeaturesEXT}, {@link VkPhysicalDeviceDepthStencilResolveProperties}, {@link VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT}, {@link VkPhysicalDeviceDescriptorBufferFeaturesEXT}, {@link VkPhysicalDeviceDescriptorBufferPropertiesEXT}, {@link VkPhysicalDeviceDescriptorIndexingFeatures}, {@link VkPhysicalDeviceDescriptorIndexingProperties}, {@link VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE}, {@link VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV}, {@link VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV}, {@link VkPhysicalDeviceDeviceMemoryReportFeaturesEXT}, {@link VkPhysicalDeviceDiagnosticsConfigFeaturesNV}, {@link VkPhysicalDeviceDiscardRectanglePropertiesEXT}, {@link VkPhysicalDeviceDriverProperties}, {@link VkPhysicalDeviceDrmPropertiesEXT}, {@link VkPhysicalDeviceDynamicRenderingFeatures}, {@link VkPhysicalDeviceExclusiveScissorFeaturesNV}, {@link VkPhysicalDeviceExtendedDynamicState2FeaturesEXT}, {@link VkPhysicalDeviceExtendedDynamicState3FeaturesEXT}, {@link VkPhysicalDeviceExtendedDynamicState3PropertiesEXT}, {@link VkPhysicalDeviceExtendedDynamicStateFeaturesEXT}, {@link VkPhysicalDeviceExternalBufferInfo}, {@link VkPhysicalDeviceExternalFenceInfo}, {@link VkPhysicalDeviceExternalImageFormatInfo}, {@link VkPhysicalDeviceExternalMemoryHostPropertiesEXT}, {@link VkPhysicalDeviceExternalMemoryRDMAFeaturesNV}, {@link VkPhysicalDeviceExternalSemaphoreInfo}, {@link VkPhysicalDeviceFaultFeaturesEXT}, {@link VkPhysicalDeviceFeatures2}, {@link VkPhysicalDeviceFloatControlsProperties}, {@link VkPhysicalDeviceFragmentDensityMap2FeaturesEXT}, {@link VkPhysicalDeviceFragmentDensityMap2PropertiesEXT}, {@link VkPhysicalDeviceFragmentDensityMapFeaturesEXT}, {@link VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM}, {@link VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM}, {@link VkPhysicalDeviceFragmentDensityMapPropertiesEXT}, {@link VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR}, {@link VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR}, {@link VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT}, {@link VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV}, {@link VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV}, {@link VkPhysicalDeviceFragmentShadingRateFeaturesKHR}, {@link VkPhysicalDeviceFragmentShadingRateKHR}, {@link VkPhysicalDeviceFragmentShadingRatePropertiesKHR}, {@link VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR}, {@link VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT}, {@link VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT}, {@link VkPhysicalDeviceGroupProperties}, {@link VkPhysicalDeviceHostQueryResetFeatures}, {@link VkPhysicalDeviceIDProperties}, {@link VkPhysicalDeviceImage2DViewOf3DFeaturesEXT}, {@link VkPhysicalDeviceImageCompressionControlFeaturesEXT}, {@link VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT}, {@link VkPhysicalDeviceImageDrmFormatModifierInfoEXT}, {@link VkPhysicalDeviceImageFormatInfo2}, {@link VkPhysicalDeviceImageProcessingFeaturesQCOM}, {@link VkPhysicalDeviceImageProcessingPropertiesQCOM}, {@link VkPhysicalDeviceImageRobustnessFeatures}, {@link VkPhysicalDeviceImageViewImageFormatInfoEXT}, {@link VkPhysicalDeviceImageViewMinLodFeaturesEXT}, {@link VkPhysicalDeviceImagelessFramebufferFeatures}, {@link VkPhysicalDeviceIndexTypeUint8FeaturesEXT}, {@link VkPhysicalDeviceInheritedViewportScissorFeaturesNV}, {@link VkPhysicalDeviceInlineUniformBlockFeatures}, {@link VkPhysicalDeviceInlineUniformBlockProperties}, {@link VkPhysicalDeviceInvocationMaskFeaturesHUAWEI}, {@link VkPhysicalDeviceLegacyDitheringFeaturesEXT}, {@link VkPhysicalDeviceLineRasterizationFeaturesEXT}, {@link VkPhysicalDeviceLineRasterizationPropertiesEXT}, {@link VkPhysicalDeviceLinearColorAttachmentFeaturesNV}, {@link VkPhysicalDeviceMaintenance3Properties}, {@link VkPhysicalDeviceMaintenance4Features}, {@link VkPhysicalDeviceMaintenance4Properties}, {@link VkPhysicalDeviceMemoryBudgetPropertiesEXT}, {@link VkPhysicalDeviceMemoryDecompressionFeaturesNV}, {@link VkPhysicalDeviceMemoryDecompressionPropertiesNV}, {@link VkPhysicalDeviceMemoryPriorityFeaturesEXT}, {@link VkPhysicalDeviceMemoryProperties2}, {@link VkPhysicalDeviceMeshShaderFeaturesEXT}, {@link VkPhysicalDeviceMeshShaderFeaturesNV}, {@link VkPhysicalDeviceMeshShaderPropertiesEXT}, {@link VkPhysicalDeviceMeshShaderPropertiesNV}, {@link VkPhysicalDeviceMultiDrawFeaturesEXT}, {@link VkPhysicalDeviceMultiDrawPropertiesEXT}, {@link VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT}, {@link VkPhysicalDeviceMultiviewFeatures}, {@link VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX}, {@link VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM}, {@link VkPhysicalDeviceMultiviewProperties}, {@link VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT}, {@link VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT}, {@link VkPhysicalDeviceOpacityMicromapFeaturesEXT}, {@link VkPhysicalDeviceOpacityMicromapPropertiesEXT}, {@link VkPhysicalDeviceOpticalFlowFeaturesNV}, {@link VkPhysicalDeviceOpticalFlowPropertiesNV}, {@link VkPhysicalDevicePCIBusInfoPropertiesEXT}, {@link VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT}, {@link VkPhysicalDevicePerformanceQueryFeaturesKHR}, {@link VkPhysicalDevicePerformanceQueryPropertiesKHR}, {@link VkPhysicalDevicePipelineCreationCacheControlFeatures}, {@link VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR}, {@link VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT}, {@link VkPhysicalDevicePipelinePropertiesFeaturesEXT}, {@link VkPhysicalDevicePipelineProtectedAccessFeaturesEXT}, {@link VkPhysicalDevicePipelineRobustnessFeaturesEXT}, {@link VkPhysicalDevicePipelineRobustnessPropertiesEXT}, {@link VkPhysicalDevicePointClippingProperties}, {@link VkPhysicalDevicePortabilitySubsetFeaturesKHR}, {@link VkPhysicalDevicePortabilitySubsetPropertiesKHR}, {@link VkPhysicalDevicePresentBarrierFeaturesNV}, {@link VkPhysicalDevicePresentIdFeaturesKHR}, {@link VkPhysicalDevicePresentWaitFeaturesKHR}, {@link VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT}, {@link VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT}, {@link VkPhysicalDevicePrivateDataFeatures}, {@link VkPhysicalDeviceProperties2}, {@link VkPhysicalDeviceProtectedMemoryFeatures}, {@link VkPhysicalDeviceProtectedMemoryProperties}, {@link VkPhysicalDeviceProvokingVertexFeaturesEXT}, {@link VkPhysicalDeviceProvokingVertexPropertiesEXT}, {@link VkPhysicalDevicePushDescriptorPropertiesKHR}, {@link VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT}, {@link VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT}, {@link VkPhysicalDeviceRayQueryFeaturesKHR}, {@link VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV}, {@link VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV}, {@link VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR}, {@link VkPhysicalDeviceRayTracingMotionBlurFeaturesNV}, {@link VkPhysicalDeviceRayTracingPipelineFeaturesKHR}, {@link VkPhysicalDeviceRayTracingPipelinePropertiesKHR}, {@link VkPhysicalDeviceRayTracingPropertiesNV}, {@link VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV}, {@link VkPhysicalDeviceRobustness2FeaturesEXT}, {@link VkPhysicalDeviceRobustness2PropertiesEXT}, {@link VkPhysicalDeviceSampleLocationsPropertiesEXT}, {@link VkPhysicalDeviceSamplerFilterMinmaxProperties}, {@link VkPhysicalDeviceSamplerYcbcrConversionFeatures}, {@link VkPhysicalDeviceScalarBlockLayoutFeatures}, {@link VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures}, {@link VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT}, {@link VkPhysicalDeviceShaderAtomicFloatFeaturesEXT}, {@link VkPhysicalDeviceShaderAtomicInt64Features}, {@link VkPhysicalDeviceShaderClockFeaturesKHR}, {@link VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM}, {@link VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM}, {@link VkPhysicalDeviceShaderCoreProperties2AMD}, {@link VkPhysicalDeviceShaderCorePropertiesAMD}, {@link VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures}, {@link VkPhysicalDeviceShaderDrawParametersFeatures}, {@link VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD}, {@link VkPhysicalDeviceShaderFloat16Int8Features}, {@link VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT}, {@link VkPhysicalDeviceShaderImageFootprintFeaturesNV}, {@link VkPhysicalDeviceShaderIntegerDotProductFeatures}, {@link VkPhysicalDeviceShaderIntegerDotProductProperties}, {@link VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL}, {@link VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT}, {@link VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT}, {@link VkPhysicalDeviceShaderSMBuiltinsFeaturesNV}, {@link VkPhysicalDeviceShaderSMBuiltinsPropertiesNV}, {@link VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures}, {@link VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR}, {@link VkPhysicalDeviceShaderTerminateInvocationFeatures}, {@link VkPhysicalDeviceShadingRateImageFeaturesNV}, {@link VkPhysicalDeviceShadingRateImagePropertiesNV}, {@link VkPhysicalDeviceSparseImageFormatInfo2}, {@link VkPhysicalDeviceSubgroupProperties}, {@link VkPhysicalDeviceSubgroupSizeControlFeatures}, {@link VkPhysicalDeviceSubgroupSizeControlProperties}, {@link VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT}, {@link VkPhysicalDeviceSubpassShadingFeaturesHUAWEI}, {@link VkPhysicalDeviceSubpassShadingPropertiesHUAWEI}, {@link VkPhysicalDeviceSurfaceInfo2KHR}, {@link VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT}, {@link VkPhysicalDeviceSynchronization2Features}, {@link VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT}, {@link VkPhysicalDeviceTexelBufferAlignmentProperties}, {@link VkPhysicalDeviceTextureCompressionASTCHDRFeatures}, {@link VkPhysicalDeviceTilePropertiesFeaturesQCOM}, {@link VkPhysicalDeviceTimelineSemaphoreFeatures}, {@link VkPhysicalDeviceTimelineSemaphoreProperties}, {@link VkPhysicalDeviceToolProperties}, {@link VkPhysicalDeviceTransformFeedbackFeaturesEXT}, {@link VkPhysicalDeviceTransformFeedbackPropertiesEXT}, {@link VkPhysicalDeviceUniformBufferStandardLayoutFeatures}, {@link VkPhysicalDeviceVariablePointersFeatures}, {@link VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT}, {@link VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT}, {@link VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT}, {@link VkPhysicalDeviceVideoFormatInfoKHR}, {@link VkPhysicalDeviceVulkan11Features}, {@link VkPhysicalDeviceVulkan11Properties}, {@link VkPhysicalDeviceVulkan12Features}, {@link VkPhysicalDeviceVulkan12Properties}, {@link VkPhysicalDeviceVulkan13Features}, {@link VkPhysicalDeviceVulkan13Properties}, {@link VkPhysicalDeviceVulkanMemoryModelFeatures}, {@link VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR}, {@link VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT}, {@link VkPhysicalDeviceYcbcrImageArraysFeaturesEXT}, {@link VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures}, {@link VkPipelineCacheCreateInfo}, {@link VkPipelineColorBlendAdvancedStateCreateInfoEXT}, {@link VkPipelineColorBlendStateCreateInfo}, {@link VkPipelineColorWriteCreateInfoEXT}, {@link VkPipelineCompilerControlCreateInfoAMD}, {@link VkPipelineCoverageModulationStateCreateInfoNV}, {@link VkPipelineCoverageReductionStateCreateInfoNV}, {@link VkPipelineCoverageToColorStateCreateInfoNV}, {@link VkPipelineCreationFeedbackCreateInfo}, {@link VkPipelineDepthStencilStateCreateInfo}, {@link VkPipelineDiscardRectangleStateCreateInfoEXT}, {@link VkPipelineDynamicStateCreateInfo}, {@link VkPipelineExecutableInfoKHR}, {@link VkPipelineExecutableInternalRepresentationKHR}, {@link VkPipelineExecutablePropertiesKHR}, {@link VkPipelineExecutableStatisticKHR}, {@link VkPipelineFragmentShadingRateEnumStateCreateInfoNV}, {@link VkPipelineFragmentShadingRateStateCreateInfoKHR}, {@link VkPipelineInfoKHR}, {@link VkPipelineInputAssemblyStateCreateInfo}, {@link VkPipelineLayoutCreateInfo}, {@link VkPipelineLibraryCreateInfoKHR}, {@link VkPipelineMultisampleStateCreateInfo}, {@link VkPipelinePropertiesIdentifierEXT}, {@link VkPipelineRasterizationConservativeStateCreateInfoEXT}, {@link VkPipelineRasterizationDepthClipStateCreateInfoEXT}, {@link VkPipelineRasterizationLineStateCreateInfoEXT}, {@link VkPipelineRasterizationProvokingVertexStateCreateInfoEXT}, {@link VkPipelineRasterizationStateCreateInfo}, {@link VkPipelineRasterizationStateRasterizationOrderAMD}, {@link VkPipelineRasterizationStateStreamCreateInfoEXT}, {@link VkPipelineRenderingCreateInfo}, {@link VkPipelineRepresentativeFragmentTestStateCreateInfoNV}, {@link VkPipelineRobustnessCreateInfoEXT}, {@link VkPipelineSampleLocationsStateCreateInfoEXT}, {@link VkPipelineShaderStageCreateInfo}, {@link VkPipelineShaderStageModuleIdentifierCreateInfoEXT}, {@link VkPipelineShaderStageRequiredSubgroupSizeCreateInfo}, {@link VkPipelineTessellationDomainOriginStateCreateInfo}, {@link VkPipelineTessellationStateCreateInfo}, {@link VkPipelineVertexInputDivisorStateCreateInfoEXT}, {@link VkPipelineVertexInputStateCreateInfo}, {@link VkPipelineViewportCoarseSampleOrderStateCreateInfoNV}, {@link VkPipelineViewportDepthClipControlCreateInfoEXT}, {@link VkPipelineViewportExclusiveScissorStateCreateInfoNV}, {@link VkPipelineViewportShadingRateImageStateCreateInfoNV}, {@link VkPipelineViewportStateCreateInfo}, {@link VkPipelineViewportSwizzleStateCreateInfoNV}, {@link VkPipelineViewportWScalingStateCreateInfoNV}, {@link VkPresentIdKHR}, {@link VkPresentInfoKHR}, {@link VkPresentRegionsKHR}, {@link VkPresentTimesInfoGOOGLE}, {@link VkPrivateDataSlotCreateInfo}, {@link VkProtectedSubmitInfo}, {@link VkQueryPoolCreateInfo}, {@link VkQueryPoolPerformanceCreateInfoKHR}, {@link VkQueryPoolPerformanceQueryCreateInfoINTEL}, {@link VkQueueFamilyCheckpointProperties2NV}, {@link VkQueueFamilyCheckpointPropertiesNV}, {@link VkQueueFamilyGlobalPriorityPropertiesKHR}, {@link VkQueueFamilyProperties2}, {@link VkQueueFamilyQueryResultStatusPropertiesKHR}, {@link VkQueueFamilyVideoPropertiesKHR}, {@link VkRayTracingPipelineCreateInfoKHR}, {@link VkRayTracingPipelineCreateInfoNV}, {@link VkRayTracingPipelineInterfaceCreateInfoKHR}, {@link VkRayTracingShaderGroupCreateInfoKHR}, {@link VkRayTracingShaderGroupCreateInfoNV}, {@link VkReleaseSwapchainImagesInfoEXT}, {@link VkRenderPassAttachmentBeginInfo}, {@link VkRenderPassBeginInfo}, {@link VkRenderPassCreateInfo}, {@link VkRenderPassCreateInfo2}, {@link VkRenderPassCreationControlEXT}, {@link VkRenderPassCreationFeedbackCreateInfoEXT}, {@link VkRenderPassFragmentDensityMapCreateInfoEXT}, {@link VkRenderPassInputAttachmentAspectCreateInfo}, {@link VkRenderPassMultiviewCreateInfo}, {@link VkRenderPassSampleLocationsBeginInfoEXT}, {@link VkRenderPassSubpassFeedbackCreateInfoEXT}, {@link VkRenderPassTransformBeginInfoQCOM}, {@link VkRenderingAttachmentInfo}, {@link VkRenderingFragmentDensityMapAttachmentInfoEXT}, {@link VkRenderingFragmentShadingRateAttachmentInfoKHR}, {@link VkRenderingInfo}, {@link VkResolveImageInfo2}, {@link VkSampleLocationsInfoEXT}, {@link VkSamplerBorderColorComponentMappingCreateInfoEXT}, {@link VkSamplerCaptureDescriptorDataInfoEXT}, {@link VkSamplerCreateInfo}, {@link VkSamplerCustomBorderColorCreateInfoEXT}, {@link VkSamplerReductionModeCreateInfo}, {@link VkSamplerYcbcrConversionCreateInfo}, {@link VkSamplerYcbcrConversionImageFormatProperties}, {@link VkSamplerYcbcrConversionInfo}, {@link VkSemaphoreCreateInfo}, {@link VkSemaphoreGetFdInfoKHR}, {@link VkSemaphoreGetWin32HandleInfoKHR}, {@link VkSemaphoreSignalInfo}, {@link VkSemaphoreSubmitInfo}, {@link VkSemaphoreTypeCreateInfo}, {@link VkSemaphoreWaitInfo}, {@link VkShaderModuleCreateInfo}, {@link VkShaderModuleIdentifierEXT}, {@link VkShaderModuleValidationCacheCreateInfoEXT}, {@link VkSharedPresentSurfaceCapabilitiesKHR}, {@link VkSparseImageFormatProperties2}, {@link VkSparseImageMemoryRequirements2}, {@link VkSubmitInfo}, {@link VkSubmitInfo2}, {@link VkSubpassBeginInfo}, {@link VkSubpassDependency2}, {@link VkSubpassDescription2}, {@link VkSubpassDescriptionDepthStencilResolve}, {@link VkSubpassEndInfo}, {@link VkSubpassFragmentDensityMapOffsetEndInfoQCOM}, {@link VkSubpassResolvePerformanceQueryEXT}, {@link VkSubpassShadingPipelineCreateInfoHUAWEI}, {@link VkSubresourceLayout2EXT}, {@link VkSurfaceCapabilities2EXT}, {@link VkSurfaceCapabilities2KHR}, {@link VkSurfaceCapabilitiesFullScreenExclusiveEXT}, {@link VkSurfaceCapabilitiesPresentBarrierNV}, {@link VkSurfaceFormat2KHR}, {@link VkSurfaceFullScreenExclusiveInfoEXT}, {@link VkSurfaceFullScreenExclusiveWin32InfoEXT}, {@link VkSurfacePresentModeCompatibilityEXT}, {@link VkSurfacePresentModeEXT}, {@link VkSurfacePresentScalingCapabilitiesEXT}, {@link VkSurfaceProtectedCapabilitiesKHR}, {@link VkSwapchainCounterCreateInfoEXT}, {@link VkSwapchainCreateInfoKHR}, {@link VkSwapchainDisplayNativeHdrCreateInfoAMD}, {@link VkSwapchainPresentBarrierCreateInfoNV}, {@link VkSwapchainPresentFenceInfoEXT}, {@link VkSwapchainPresentModeInfoEXT}, {@link VkSwapchainPresentModesCreateInfoEXT}, {@link VkSwapchainPresentScalingCreateInfoEXT}, {@link VkTextureLODGatherFormatPropertiesAMD}, {@link VkTilePropertiesQCOM}, {@link VkTimelineSemaphoreSubmitInfo}, {@link VkValidationCacheCreateInfoEXT}, {@link VkValidationFeaturesEXT}, {@link VkValidationFlagsEXT}, {@link VkVertexInputAttributeDescription2EXT}, {@link VkVertexInputBindingDescription2EXT}, {@link VkVideoBeginCodingInfoKHR}, {@link VkVideoCapabilitiesKHR}, {@link VkVideoCodingControlInfoKHR}, {@link VkVideoDecodeCapabilitiesKHR}, {@link VkVideoDecodeH264CapabilitiesKHR}, {@link VkVideoDecodeH264DpbSlotInfoKHR}, {@link VkVideoDecodeH264PictureInfoKHR}, {@link VkVideoDecodeH264ProfileInfoKHR}, {@link VkVideoDecodeH264SessionParametersAddInfoKHR}, {@link VkVideoDecodeH264SessionParametersCreateInfoKHR}, {@link VkVideoDecodeH265CapabilitiesKHR}, {@link VkVideoDecodeH265DpbSlotInfoKHR}, {@link VkVideoDecodeH265PictureInfoKHR}, {@link VkVideoDecodeH265ProfileInfoKHR}, {@link VkVideoDecodeH265SessionParametersAddInfoKHR}, {@link VkVideoDecodeH265SessionParametersCreateInfoKHR}, {@link VkVideoDecodeInfoKHR}, {@link VkVideoDecodeUsageInfoKHR}, {@link VkVideoEncodeCapabilitiesKHR}, {@link VkVideoEncodeH264CapabilitiesEXT}, {@link VkVideoEncodeH264DpbSlotInfoEXT}, {@link VkVideoEncodeH264EmitPictureParametersInfoEXT}, {@link VkVideoEncodeH264NaluSliceInfoEXT}, {@link VkVideoEncodeH264ProfileInfoEXT}, {@link VkVideoEncodeH264RateControlInfoEXT}, {@link VkVideoEncodeH264RateControlLayerInfoEXT}, {@link VkVideoEncodeH264ReferenceListsInfoEXT}, {@link VkVideoEncodeH264SessionParametersAddInfoEXT}, {@link VkVideoEncodeH264SessionParametersCreateInfoEXT}, {@link VkVideoEncodeH264VclFrameInfoEXT}, {@link VkVideoEncodeH265CapabilitiesEXT}, {@link VkVideoEncodeH265DpbSlotInfoEXT}, {@link VkVideoEncodeH265EmitPictureParametersInfoEXT}, {@link VkVideoEncodeH265NaluSliceSegmentInfoEXT}, {@link VkVideoEncodeH265ProfileInfoEXT}, {@link VkVideoEncodeH265RateControlInfoEXT}, {@link VkVideoEncodeH265RateControlLayerInfoEXT}, {@link VkVideoEncodeH265ReferenceListsInfoEXT}, {@link VkVideoEncodeH265SessionParametersAddInfoEXT}, {@link VkVideoEncodeH265SessionParametersCreateInfoEXT}, {@link VkVideoEncodeH265VclFrameInfoEXT}, {@link VkVideoEncodeInfoKHR}, {@link VkVideoEncodeRateControlInfoKHR}, {@link VkVideoEncodeRateControlLayerInfoKHR}, {@link VkVideoEncodeUsageInfoKHR}, {@link VkVideoEndCodingInfoKHR}, {@link VkVideoFormatPropertiesKHR}, {@link VkVideoPictureResourceInfoKHR}, {@link VkVideoProfileInfoKHR}, {@link VkVideoProfileListInfoKHR}, {@link VkVideoReferenceSlotInfoKHR}, {@link VkVideoSessionCreateInfoKHR}, {@link VkVideoSessionMemoryRequirementsKHR}, {@link VkVideoSessionParametersCreateInfoKHR}, {@link VkVideoSessionParametersUpdateInfoKHR}, {@link VkWaylandSurfaceCreateInfoKHR}, {@link VkWin32KeyedMutexAcquireReleaseInfoKHR}, {@link VkWin32KeyedMutexAcquireReleaseInfoNV}, {@link VkWin32SurfaceCreateInfoKHR}, {@link VkWriteDescriptorSet}, {@link VkWriteDescriptorSetAccelerationStructureKHR}, {@link VkWriteDescriptorSetAccelerationStructureNV}, {@link VkWriteDescriptorSetInlineUniformBlock}, {@link VkXcbSurfaceCreateInfoKHR}, {@link VkXlibSurfaceCreateInfoKHR}
*
* Enum values:
*
@@ -322,6 +322,10 @@ public class VK10 {
* {@link KHRAccelerationStructure#VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR} | {@link EXTMeshShader#VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT PIPELINE_STAGE_TASK_SHADER_BIT_EXT}, {@link EXTMeshShader#VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT PIPELINE_STAGE_MESH_SHADER_BIT_EXT}, {@link #VK_PIPELINE_STAGE_VERTEX_SHADER_BIT PIPELINE_STAGE_VERTEX_SHADER_BIT}, {@link #VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT}, {@link #VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT}, {@link #VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT PIPELINE_STAGE_GEOMETRY_SHADER_BIT}, {@link #VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT PIPELINE_STAGE_FRAGMENT_SHADER_BIT}, {@link #VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT PIPELINE_STAGE_COMPUTE_SHADER_BIT}, {@link KHRRayTracingPipeline#VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR}, or {@link KHRAccelerationStructure#VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR} |
* {@link KHRAccelerationStructure#VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR} | {@link KHRAccelerationStructure#VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR} |
* {@link EXTFragmentDensityMap#VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT} | {@link EXTFragmentDensityMap#VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT} |
+ * {@link KHRVideoDecodeQueue#VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR ACCESS_2_VIDEO_DECODE_READ_BIT_KHR} | {@link KHRVideoDecodeQueue#VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR} |
+ * {@link KHRVideoDecodeQueue#VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR} | {@link KHRVideoDecodeQueue#VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR} |
+ * {@link KHRVideoEncodeQueue#VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR} | {@link KHRVideoEncodeQueue#VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR} |
+ * {@link KHRVideoEncodeQueue#VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR} | {@link KHRVideoEncodeQueue#VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR} |
*
*
*/
@@ -373,12 +377,12 @@ public class VK10 {
* {@link KHRSharedPresentableImage#VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR IMAGE_LAYOUT_SHARED_PRESENT_KHR} is valid only for shared presentable images, and must be used for any usage the image supports.
* {@link KHRFragmentShadingRate#VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR} must only be used as a fragment shading rate attachment or shading rate image. This layout is valid only for image subresources of images created with the {@link KHRFragmentShadingRate#VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR} usage bit enabled.
* {@link EXTFragmentDensityMap#VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT} must only be used as a fragment density map attachment in a {@code VkRenderPass}. This layout is valid only for image subresources of images created with the {@link EXTFragmentDensityMap#VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT} usage bit enabled.
- * {@link KHRVideoDecodeQueue#VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR} must only be used as a decode output image of a video decode operation. This layout is valid only for image subresources of images created with the {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR} usage bit enabled.
+ * {@link KHRVideoDecodeQueue#VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR} must only be used as a decode output picture in a video decode operation. This layout is valid only for image subresources of images created with the {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR} usage bit enabled.
* {@link KHRVideoDecodeQueue#VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR} is reserved for future use.
- * {@link KHRVideoDecodeQueue#VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR} must only be used as a decode source or destination image of a video decode operation. This layout is valid only for image subresources of images created with the {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR} usage bit enabled.
+ * {@link KHRVideoDecodeQueue#VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR} must only be used as an output reconstructed picture or an input reference picture in a video decode operation. This layout is valid only for image subresources of images created with the {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR} usage bit enabled.
* {@link KHRVideoEncodeQueue#VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR} is reserved for future use.
- * {@link KHRVideoEncodeQueue#VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR} must only be used as a encode source image of a video encode operation. This layout is valid only for image subresources of images created with the {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR} usage bit enabled.
- * {@link KHRVideoEncodeQueue#VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR} must only be used as a encode source or destination image of a video encode operation. This layout is valid only for image subresources of images created with the {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR} usage bit enabled.
+ * {@link KHRVideoEncodeQueue#VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR} must only be used as an encode input picture in a video encode operation. This layout is valid only for image subresources of images created with the {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR} usage bit enabled.
+ * {@link KHRVideoEncodeQueue#VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR} must only be used as an output reconstructed picture or an input reference picture in a video encode operation. This layout is valid only for image subresources of images created with the {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR} usage bit enabled.
* {@link EXTAttachmentFeedbackLoopLayout#VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT} must only be used as either a color attachment or depth/stencil attachment in a {@code VkFramebuffer} and/or read-only access in a shader as a sampled image, combined image/sampler, or input attachment. This layout is valid only for image subresources of images created with the {@link EXTAttachmentFeedbackLoopLayout#VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT} usage bit enabled and either the {@link #VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT IMAGE_USAGE_COLOR_ATTACHMENT_BIT} or {@link #VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT} and either the {@link #VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT IMAGE_USAGE_INPUT_ATTACHMENT_BIT} or {@link #VK_IMAGE_USAGE_SAMPLED_BIT IMAGE_USAGE_SAMPLED_BIT} usage bits enabled.
*
*
@@ -857,7 +861,7 @@ public class VK10 {
*
* See Also
*
- * {@link VkAccelerationStructureGeometryTrianglesDataKHR}, {@link VkAttachmentDescription}, {@link VkAttachmentDescription2}, {@link VkBufferViewCreateInfo}, {@link VkCommandBufferInheritanceRenderingInfo}, {@link VkDescriptorAddressInfoEXT}, {@link VkFramebufferAttachmentImageInfo}, {@link VkGeometryTrianglesNV}, {@link VkImageCreateInfo}, {@link VkImageFormatListCreateInfo}, {@link VkImageViewASTCDecodeModeEXT}, {@link VkImageViewCreateInfo}, {@link VkOpticalFlowImageFormatPropertiesNV}, {@link VkOpticalFlowSessionCreateInfoNV}, {@link VkPhysicalDeviceImageFormatInfo2}, {@link VkPhysicalDeviceSparseImageFormatInfo2}, {@link VkPipelineRenderingCreateInfo}, {@link VkSamplerCustomBorderColorCreateInfoEXT}, {@link VkSamplerYcbcrConversionCreateInfo}, {@link VkSurfaceFormatKHR}, {@link VkSwapchainCreateInfoKHR}, {@link VkVertexInputAttributeDescription}, {@link VkVertexInputAttributeDescription2EXT}, {@link VkVideoFormatPropertiesKHR}, {@link VkVideoSessionCreateInfoKHR}, {@link NVExternalMemoryCapabilities#vkGetPhysicalDeviceExternalImageFormatPropertiesNV GetPhysicalDeviceExternalImageFormatPropertiesNV}, {@link #vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties}, {@link VK11#vkGetPhysicalDeviceFormatProperties2 GetPhysicalDeviceFormatProperties2}, {@link KHRGetPhysicalDeviceProperties2#vkGetPhysicalDeviceFormatProperties2KHR GetPhysicalDeviceFormatProperties2KHR}, {@link #vkGetPhysicalDeviceImageFormatProperties GetPhysicalDeviceImageFormatProperties}, {@link #vkGetPhysicalDeviceSparseImageFormatProperties GetPhysicalDeviceSparseImageFormatProperties}
+ * {@link VkAccelerationStructureGeometryTrianglesDataKHR}, {@link VkAndroidHardwareBufferFormatProperties2ANDROID}, {@link VkAndroidHardwareBufferFormatPropertiesANDROID}, {@link VkAttachmentDescription}, {@link VkAttachmentDescription2}, {@link VkBufferViewCreateInfo}, {@link VkCommandBufferInheritanceRenderingInfo}, {@link VkDescriptorAddressInfoEXT}, {@link VkFramebufferAttachmentImageInfo}, {@link VkGeometryTrianglesNV}, {@link VkImageCreateInfo}, {@link VkImageFormatListCreateInfo}, {@link VkImageViewASTCDecodeModeEXT}, {@link VkImageViewCreateInfo}, {@link VkOpticalFlowImageFormatPropertiesNV}, {@link VkOpticalFlowSessionCreateInfoNV}, {@link VkPhysicalDeviceImageFormatInfo2}, {@link VkPhysicalDeviceSparseImageFormatInfo2}, {@link VkPipelineRenderingCreateInfo}, {@link VkSamplerCustomBorderColorCreateInfoEXT}, {@link VkSamplerYcbcrConversionCreateInfo}, {@link VkSurfaceFormatKHR}, {@link VkSwapchainCreateInfoKHR}, {@link VkVertexInputAttributeDescription}, {@link VkVertexInputAttributeDescription2EXT}, {@link VkVideoFormatPropertiesKHR}, {@link VkVideoSessionCreateInfoKHR}, {@link NVExternalMemoryCapabilities#vkGetPhysicalDeviceExternalImageFormatPropertiesNV GetPhysicalDeviceExternalImageFormatPropertiesNV}, {@link #vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties}, {@link VK11#vkGetPhysicalDeviceFormatProperties2 GetPhysicalDeviceFormatProperties2}, {@link KHRGetPhysicalDeviceProperties2#vkGetPhysicalDeviceFormatProperties2KHR GetPhysicalDeviceFormatProperties2KHR}, {@link #vkGetPhysicalDeviceImageFormatProperties GetPhysicalDeviceImageFormatProperties}, {@link #vkGetPhysicalDeviceSparseImageFormatProperties GetPhysicalDeviceSparseImageFormatProperties}
*/
public static final int
VK_FORMAT_UNDEFINED = 0,
@@ -1078,14 +1082,14 @@ public class VK10 {
* {@link VK11#VK_FORMAT_FEATURE_DISJOINT_BIT FORMAT_FEATURE_DISJOINT_BIT} specifies that a multi-planar image can have the {@link VK11#VK_IMAGE_CREATE_DISJOINT_BIT IMAGE_CREATE_DISJOINT_BIT} set during image creation. An implementation must not set {@link VK11#VK_FORMAT_FEATURE_DISJOINT_BIT FORMAT_FEATURE_DISJOINT_BIT} for single-plane formats.
* {@link EXTFragmentDensityMap#VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT} specifies that an image view can be used as a fragment density map attachment.
* {@link KHRFragmentShadingRate#VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR} specifies that an image view can be used as a fragment shading rate attachment. An implementation must not set this feature for formats with numeric type other than {@code *UINT}, or set it as a buffer feature.
- * {@link KHRVideoDecodeQueue#VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR} specifies that an image view with this format can be used as an output for video decode operations
- * {@link KHRVideoDecodeQueue#VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR} specifies that an image view with this format can be used as a DPB for video decode operations
- * {@link KHRVideoEncodeQueue#VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR} specifies that an image view with this format can be used as an input to video encode operations
- * {@link KHRVideoEncodeQueue#VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR} specifies that an image view with this format can be used as a DPB for video encode operations
+ * {@link KHRVideoDecodeQueue#VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR} specifies that an image view with this format can be used as a decode output picture in video decode operations.
+ * {@link KHRVideoDecodeQueue#VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR} specifies that an image view with this format can be used as an output reconstructed picture or an input reference picture in video decode operations.
+ * {@link KHRVideoEncodeQueue#VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR} specifies that an image view with this format can be used as an encode input picture in video encode operations.
+ * {@link KHRVideoEncodeQueue#VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR} specifies that an image view with this format can be used as an output reconstructed picture or an input reference picture in video encode operations.
*
* Note
*
- *
Specific video profiles may have additional restrictions on the format and other image creation parameters corresponding to image views used by video coding operations that can be enumerated using the {@link KHRVideoQueue#vkGetPhysicalDeviceVideoFormatPropertiesKHR GetPhysicalDeviceVideoFormatPropertiesKHR} command, as described in Enumeration of Supported Video Output, Input and DPB Formats.
+ *
Specific video profiles may have additional restrictions on the format and other image creation parameters corresponding to image views used by video coding operations that can be enumerated using the {@link KHRVideoQueue#vkGetPhysicalDeviceVideoFormatPropertiesKHR GetPhysicalDeviceVideoFormatPropertiesKHR} command.
*
*
*
@@ -1099,6 +1103,11 @@ public class VK10 {
* {@link #VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT FORMAT_FEATURE_VERTEX_BUFFER_BIT} specifies that the format can be used as a vertex attribute format ({@link VkVertexInputAttributeDescription}{@code ::format}).
* {@link KHRAccelerationStructure#VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR} specifies that the format can be used as the vertex format when creating an acceleration structure ({@link VkAccelerationStructureGeometryTrianglesDataKHR}{@code ::vertexFormat}). This format can also be used as the vertex format in host memory when doing host acceleration structure builds.
*
+ *
+ * Note
+ *
+ *
{@link #VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT} and {@link #VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT} are only intended to be advertised for single-component formats, since SPIR-V atomic operations require a scalar type.
+ *
*/
public static final int
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x1,
@@ -1243,12 +1252,12 @@ public class VK10 {
* {@link #VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT IMAGE_USAGE_INPUT_ATTACHMENT_BIT} specifies that the image can be used to create a {@code VkImageView} suitable for occupying {@code VkDescriptorSet} slot of type {@link #VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT DESCRIPTOR_TYPE_INPUT_ATTACHMENT}; be read from a shader as an input attachment; and be used as an input attachment in a framebuffer.
* {@link EXTFragmentDensityMap#VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT} specifies that the image can be used to create a {@code VkImageView} suitable for use as a fragment density map image.
* {@link KHRFragmentShadingRate#VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR} specifies that the image can be used to create a {@code VkImageView} suitable for use as a fragment shading rate attachment or shading rate image
- * {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR} specifies that video decode operations can use the image as an output picture for video decode operations.
+ * {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR} specifies that the image can be used as a decode output picture in a video decode operation.
* {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR} is reserved for future use.
- * {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR} specifies that video decode operations can use the image as a DPB Video Picture Resource, representing a reference picture. If an implementation requires separate allocations for DPB and decode output, indicating this by returning {@link #VK_ERROR_FORMAT_NOT_SUPPORTED ERROR_FORMAT_NOT_SUPPORTED} to any {@link KHRVideoQueue#vkGetPhysicalDeviceVideoFormatPropertiesKHR GetPhysicalDeviceVideoFormatPropertiesKHR} call with both {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR} and {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR} usage bits, then {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR} must not be combined with any other {@code VK_IMAGE_USAGE_*} flags. Otherwise, {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR} must be combined with {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR}, if the DPB image is required to coincide with the decoded output picture. In the case where DPB coincides with the decoded output picture, image resources can be used as reference pictures only after acting as targets for video decode operations, where its image view must be set to both {@link VkVideoDecodeInfoKHR}{@code ::pSetupReferenceSlot→pPictureResource→imageViewBinding} and {@link VkVideoDecodeInfoKHR}{@code ::dstPictureResource.imageViewBinding}.
- * {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR} specifies that the image can be used as an input picture for video encode operations.
+ * {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR} specifies that the image can be used as an output reconstructed picture or an input reference picture in a video decode operation.
* {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR} is reserved for future use.
- * {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR} specifies that video encode operations can use the image as an output to hold a reconstructed picture that can subsequently act as an input reference picture.
+ * {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR} specifies that the image can be used as an encode input picture in a video encode operation.
+ * {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR} specifies that the image can be used as an output reconstructed picture or an input reference picture in a video encode operation.
* {@link EXTAttachmentFeedbackLoopLayout#VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT} specifies that the image can be transitioned to the {@link EXTAttachmentFeedbackLoopLayout#VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT} layout to be used as a color or depth/stencil attachment in a {@code VkFramebuffer} and/or as a read-only input resource in a shader (sampled image, combined image sampler or input attachment) in the same render pass.
*
*/
@@ -1341,8 +1350,8 @@ public class VK10 {
* {@link #VK_QUEUE_COMPUTE_BIT QUEUE_COMPUTE_BIT} specifies that queues in this queue family support compute operations.
* {@link #VK_QUEUE_TRANSFER_BIT QUEUE_TRANSFER_BIT} specifies that queues in this queue family support transfer operations.
* {@link #VK_QUEUE_SPARSE_BINDING_BIT QUEUE_SPARSE_BINDING_BIT} specifies that queues in this queue family support sparse memory management operations (see Sparse Resources). If any of the sparse resource features are enabled, then at least one queue family must support this bit.
- * {@link KHRVideoDecodeQueue#VK_QUEUE_VIDEO_DECODE_BIT_KHR QUEUE_VIDEO_DECODE_BIT_KHR} specifies that queues in this queue family support Video Decode operations.
- * {@link KHRVideoEncodeQueue#VK_QUEUE_VIDEO_ENCODE_BIT_KHR QUEUE_VIDEO_ENCODE_BIT_KHR} specifies that queues in this queue family support Video Encode operations.
+ * {@link KHRVideoDecodeQueue#VK_QUEUE_VIDEO_DECODE_BIT_KHR QUEUE_VIDEO_DECODE_BIT_KHR} specifies that queues in this queue family support video decode operations.
+ * {@link KHRVideoEncodeQueue#VK_QUEUE_VIDEO_ENCODE_BIT_KHR QUEUE_VIDEO_ENCODE_BIT_KHR} specifies that queues in this queue family support video encode operations.
* {@link NVOpticalFlow#VK_QUEUE_OPTICAL_FLOW_BIT_NV QUEUE_OPTICAL_FLOW_BIT_NV} specifies that queues in this queue family support optical flow operations.
* {@link VK11#VK_QUEUE_PROTECTED_BIT QUEUE_PROTECTED_BIT} specifies that queues in this queue family support the {@link VK11#VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT DEVICE_QUEUE_CREATE_PROTECTED_BIT} bit. (see Protected Memory). If the physical device supports the {@code protectedMemory} feature, at least one of its queue families must support this bit.
*
@@ -1629,7 +1638,7 @@ public class VK10 {
* {@link #VK_BUFFER_USAGE_STORAGE_BUFFER_BIT BUFFER_USAGE_STORAGE_BUFFER_BIT} specifies that the buffer can be used in a {@link VkDescriptorBufferInfo} suitable for occupying a {@code VkDescriptorSet} slot either of type {@link #VK_DESCRIPTOR_TYPE_STORAGE_BUFFER DESCRIPTOR_TYPE_STORAGE_BUFFER} or {@link #VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC}.
* {@link #VK_BUFFER_USAGE_INDEX_BUFFER_BIT BUFFER_USAGE_INDEX_BUFFER_BIT} specifies that the buffer is suitable for passing as the {@code buffer} parameter to {@link #vkCmdBindIndexBuffer CmdBindIndexBuffer}.
* {@link #VK_BUFFER_USAGE_VERTEX_BUFFER_BIT BUFFER_USAGE_VERTEX_BUFFER_BIT} specifies that the buffer is suitable for passing as an element of the {@code pBuffers} array to {@link #vkCmdBindVertexBuffers CmdBindVertexBuffers}.
- * {@link #VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT BUFFER_USAGE_INDIRECT_BUFFER_BIT} specifies that the buffer is suitable for passing as the {@code buffer} parameter to {@link #vkCmdDrawIndirect CmdDrawIndirect}, {@link #vkCmdDrawIndexedIndirect CmdDrawIndexedIndirect}, {@link NVMeshShader#vkCmdDrawMeshTasksIndirectNV CmdDrawMeshTasksIndirectNV}, {@link NVMeshShader#vkCmdDrawMeshTasksIndirectCountNV CmdDrawMeshTasksIndirectCountNV}, {@code vkCmdDrawMeshTasksIndirectEXT}, {@code vkCmdDrawMeshTasksIndirectCountEXT}, or {@link #vkCmdDispatchIndirect CmdDispatchIndirect}. It is also suitable for passing as the {@code buffer} member of {@link VkIndirectCommandsStreamNV}, or {@code sequencesCountBuffer} or {@code sequencesIndexBuffer} or {@code preprocessedBuffer} member of {@link VkGeneratedCommandsInfoNV}
+ * {@link #VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT BUFFER_USAGE_INDIRECT_BUFFER_BIT} specifies that the buffer is suitable for passing as the {@code buffer} parameter to {@link #vkCmdDrawIndirect CmdDrawIndirect}, {@link #vkCmdDrawIndexedIndirect CmdDrawIndexedIndirect}, {@link NVMeshShader#vkCmdDrawMeshTasksIndirectNV CmdDrawMeshTasksIndirectNV}, {@link NVMeshShader#vkCmdDrawMeshTasksIndirectCountNV CmdDrawMeshTasksIndirectCountNV}, {@code vkCmdDrawMeshTasksIndirectEXT}, {@code vkCmdDrawMeshTasksIndirectCountEXT}, {@link HUAWEIClusterCullingShader#vkCmdDrawClusterIndirectHUAWEI CmdDrawClusterIndirectHUAWEI}, or {@link #vkCmdDispatchIndirect CmdDispatchIndirect}. It is also suitable for passing as the {@code buffer} member of {@link VkIndirectCommandsStreamNV}, or {@code sequencesCountBuffer} or {@code sequencesIndexBuffer} or {@code preprocessedBuffer} member of {@link VkGeneratedCommandsInfoNV}
* {@link EXTConditionalRendering#VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT} specifies that the buffer is suitable for passing as the {@code buffer} parameter to {@link EXTConditionalRendering#vkCmdBeginConditionalRenderingEXT CmdBeginConditionalRenderingEXT}.
* {@link EXTTransformFeedback#VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT} specifies that the buffer is suitable for using for binding as a transform feedback buffer with {@link EXTTransformFeedback#vkCmdBindTransformFeedbackBuffersEXT CmdBindTransformFeedbackBuffersEXT}.
* {@link EXTTransformFeedback#VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT} specifies that the buffer is suitable for using as a counter buffer with {@link EXTTransformFeedback#vkCmdBeginTransformFeedbackEXT CmdBeginTransformFeedbackEXT} and {@link EXTTransformFeedback#vkCmdEndTransformFeedbackEXT CmdEndTransformFeedbackEXT}.
@@ -1641,10 +1650,10 @@ public class VK10 {
* {@link KHRAccelerationStructure#VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR} specifies that the buffer is suitable for use as a read-only input to an acceleration structure build.
* {@link KHRAccelerationStructure#VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR} specifies that the buffer is suitable for storage space for a {@code VkAccelerationStructureKHR}.
* {@link VK12#VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT} specifies that the buffer can be used to retrieve a buffer device address via {@link VK12#vkGetBufferDeviceAddress GetBufferDeviceAddress} and use that address to access the buffer’s memory from a shader.
- * {@link KHRVideoDecodeQueue#VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR} specifies that the buffer can be used as the source bitstream buffer in a video decode operation.
- * {@link KHRVideoDecodeQueue#VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR} specifies that the buffer can be used as the destination status buffer in a video decode operation.
- * {@link KHRVideoEncodeQueue#VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR} specifies that the buffer can be used as the destination bitstream buffer in a video encode operation.
- * {@link KHRVideoEncodeQueue#VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR} specifies that the buffer can be used as the destination status buffer in a video encode operation.
+ * {@link KHRVideoDecodeQueue#VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR} specifies that the buffer can be used as the source video bitstream buffer in a video decode operation.
+ * {@link KHRVideoDecodeQueue#VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR} is reserved for future use.
+ * {@link KHRVideoEncodeQueue#VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR} specifies that the buffer can be used as the destination video bitstream buffer in a video encode operation.
+ * {@link KHRVideoEncodeQueue#VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR} is reserved for future use.
*
*/
public static final int
@@ -1962,8 +1971,8 @@ public class VK10 {
* {@link VK13#VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT} specifies that pipeline creation will fail if a compile is required for creation of a valid {@code VkPipeline} object; {@link VK13#VK_PIPELINE_COMPILE_REQUIRED PIPELINE_COMPILE_REQUIRED} will be returned by pipeline creation, and the {@code VkPipeline} will be set to {@link #VK_NULL_HANDLE NULL_HANDLE}.
* When creating multiple pipelines, {@link VK13#VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT} specifies that control will be returned to the application if any individual pipeline returns a result which is not {@link #VK_SUCCESS SUCCESS} rather than continuing to create additional pipelines.
* {@link NVRayTracingMotionBlur#VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV} specifies that the pipeline is allowed to use {@code OpTraceRayMotionNV}.
- * {@link KHRDynamicRendering#VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR} specifies that the pipeline will be used with a fragment shading rate attachment.
- * {@link KHRDynamicRendering#VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT} specifies that the pipeline will be used with a fragment density map attachment.
+ * {@link KHRDynamicRendering#VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR} specifies that the pipeline will be used with a fragment shading rate attachment and dynamic rendering.
+ * {@link KHRDynamicRendering#VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT} specifies that the pipeline will be used with a fragment density map attachment and dynamic rendering.
* {@link EXTGraphicsPipelineLibrary#VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT} specifies that pipeline libraries being linked into this library should have link time optimizations applied. If this bit is omitted, implementations should instead perform linking as rapidly as possible.
* {@link EXTGraphicsPipelineLibrary#VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT} specifies that pipeline libraries should retain any information necessary to later perform an optimal link with {@link EXTGraphicsPipelineLibrary#VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT}.
* {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT} specifies that a pipeline will be used with descriptor buffers, rather than descriptor sets.
@@ -2004,6 +2013,7 @@ public class VK10 {
* {@link #VK_SHADER_STAGE_ALL SHADER_STAGE_ALL} is a combination of bits used as shorthand to specify all shader stages supported by the device, including all additional stages which are introduced by extensions.
* {@link EXTMeshShader#VK_SHADER_STAGE_TASK_BIT_EXT SHADER_STAGE_TASK_BIT_EXT} specifies the task stage.
* {@link EXTMeshShader#VK_SHADER_STAGE_MESH_BIT_EXT SHADER_STAGE_MESH_BIT_EXT} specifies the mesh stage.
+ * {@link HUAWEIClusterCullingShader#VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI} specifies the cluster culling stage.
* {@link KHRRayTracingPipeline#VK_SHADER_STAGE_RAYGEN_BIT_KHR SHADER_STAGE_RAYGEN_BIT_KHR} specifies the ray generation stage.
* {@link KHRRayTracingPipeline#VK_SHADER_STAGE_ANY_HIT_BIT_KHR SHADER_STAGE_ANY_HIT_BIT_KHR} specifies the any-hit stage.
* {@link KHRRayTracingPipeline#VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR SHADER_STAGE_CLOSEST_HIT_BIT_KHR} specifies the closest hit stage.
@@ -2755,7 +2765,7 @@ public class VK10 {
public static final int VK_API_VERSION_1_0 = VK_MAKE_API_VERSION(0, 1, 0, 0);
/** The Vulkan registry version used to generate the LWJGL bindings. */
- public static final int VK_HEADER_VERSION = 231;
+ public static final int VK_HEADER_VERSION = 240;
/**
* The reserved handle {@code VK_NULL_HANDLE} can be passed in place of valid object handles when explicitly called out in the specification. Any
@@ -5196,7 +5206,8 @@ public static void vkGetDeviceMemoryCommitment(VkDevice device, @NativeType("VkD
* If {@code buffer} was created with the {@link VK11#VK_BUFFER_CREATE_PROTECTED_BIT BUFFER_CREATE_PROTECTED_BIT} bit not set, the buffer must not be bound to a memory object allocated with a memory type that reports {@link VK11#VK_MEMORY_PROPERTY_PROTECTED_BIT MEMORY_PROPERTY_PROTECTED_BIT}
* If {@code buffer} was created with {@link VkDedicatedAllocationBufferCreateInfoNV}{@code ::dedicatedAllocation} equal to {@link #VK_TRUE TRUE}, {@code memory} must have been allocated with {@link VkDedicatedAllocationMemoryAllocateInfoNV}{@code ::buffer} equal to a buffer handle created with identical creation parameters to {@code buffer} and {@code memoryOffset} must be zero
* If the value of {@link VkExportMemoryAllocateInfo}{@code ::handleTypes} used to allocate {@code memory} is not 0, it must include at least one of the handles set in {@link VkExternalMemoryBufferCreateInfo}{@code ::handleTypes} when {@code buffer} was created
- * If {@code memory} was allocated by a memory import operation, the external handle type of the imported memory must also have been set in {@link VkExternalMemoryBufferCreateInfo}{@code ::handleTypes} when {@code buffer} was created
+ * If {@code memory} was allocated by a memory import operation, that is not {@link VkImportAndroidHardwareBufferInfoANDROID} with a non-{@code NULL} {@code buffer} value, the external handle type of the imported memory must also have been set in {@link VkExternalMemoryBufferCreateInfo}{@code ::handleTypes} when {@code buffer} was created
+ * If {@code memory} was allocated with the {@link VkImportAndroidHardwareBufferInfoANDROID} memory import operation with a non-{@code NULL} {@code buffer} value, {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID} must also have been set in {@link VkExternalMemoryBufferCreateInfo}{@code ::handleTypes} when {@code buffer} was created
* If the {@link VkPhysicalDeviceBufferDeviceAddressFeatures}{@code ::bufferDeviceAddress} feature is enabled and {@code buffer} was created with the {@link VK12#VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT} bit set, {@code memory} must have been allocated with the {@link VK12#VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT} bit set
* If the {@link VkPhysicalDeviceDescriptorBufferFeaturesEXT} {@code ::descriptorBufferCaptureReplay} feature is enabled and {@code buffer} was created with the {@link EXTDescriptorBuffer#VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT} bit set, {@code memory} must have been allocated with the {@link VK12#VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT} bit set
*
@@ -5276,7 +5287,8 @@ public static int vkBindBufferMemory(VkDevice device, @NativeType("VkBuffer") lo
* If image was created with the {@link VK11#VK_IMAGE_CREATE_PROTECTED_BIT IMAGE_CREATE_PROTECTED_BIT} bit not set, the image must not be bound to a memory object created with a memory type that reports {@link VK11#VK_MEMORY_PROPERTY_PROTECTED_BIT MEMORY_PROPERTY_PROTECTED_BIT}
* If {@code image} was created with {@link VkDedicatedAllocationImageCreateInfoNV}{@code ::dedicatedAllocation} equal to {@link #VK_TRUE TRUE}, {@code memory} must have been created with {@link VkDedicatedAllocationMemoryAllocateInfoNV}{@code ::image} equal to an image handle created with identical creation parameters to {@code image} and {@code memoryOffset} must be zero
* If the value of {@link VkExportMemoryAllocateInfo}{@code ::handleTypes} used to allocate {@code memory} is not 0, it must include at least one of the handles set in {@link VkExternalMemoryImageCreateInfo}{@code ::handleTypes} when {@code image} was created
- * If {@code memory} was created by a memory import operation, the external handle type of the imported memory must also have been set in {@link VkExternalMemoryImageCreateInfo}{@code ::handleTypes} when {@code image} was created
+ * If {@code memory} was created by a memory import operation, that is not {@link VkImportAndroidHardwareBufferInfoANDROID} with a non-{@code NULL} {@code buffer} value, the external handle type of the imported memory must also have been set in {@link VkExternalMemoryImageCreateInfo}{@code ::handleTypes} when {@code image} was created
+ * If {@code memory} was created with the {@link VkImportAndroidHardwareBufferInfoANDROID} memory import operation with a non-{@code NULL} {@code buffer} value, {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID} must also have been set in {@link VkExternalMemoryImageCreateInfo}{@code ::handleTypes} when {@code image} was created
* If the {@link VkPhysicalDeviceDescriptorBufferFeaturesEXT} {@code ::descriptorBufferCaptureReplay} feature is enabled and {@code image} was created with the {@link EXTDescriptorBuffer#VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT} bit set, {@code memory} must have been allocated with the {@link VK12#VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT} bit set
* {@code image} must not have been created with the {@link VK11#VK_IMAGE_CREATE_DISJOINT_BIT IMAGE_CREATE_DISJOINT_BIT} set
* {@code memory} must have been allocated using one of the memory types allowed in the {@code memoryTypeBits} member of the {@link VkMemoryRequirements} structure returned from a call to {@link #vkGetImageMemoryRequirements GetImageMemoryRequirements} with {@code image}
@@ -5392,6 +5404,7 @@ public static void nvkGetImageMemoryRequirements(VkDevice device, long image, lo
*
*
* - {@code image} must not have been created with the {@link VK11#VK_IMAGE_CREATE_DISJOINT_BIT IMAGE_CREATE_DISJOINT_BIT} flag set
+ * - If {@code image} was created with the {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID} external memory handle type, then {@code image} must be bound to memory
*
*
* Valid Usage (Implicit)
@@ -6872,9 +6885,8 @@ public static int nvkGetQueryPoolResults(VkDevice device, long queryPool, int fi
* If the {@code queryType} used to create {@code queryPool} was {@link #VK_QUERY_TYPE_TIMESTAMP QUERY_TYPE_TIMESTAMP}, {@code flags} must not contain {@link #VK_QUERY_RESULT_PARTIAL_BIT QUERY_RESULT_PARTIAL_BIT}
* If the {@code queryType} used to create {@code queryPool} was {@link KHRPerformanceQuery#VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR QUERY_TYPE_PERFORMANCE_QUERY_KHR}, {@code flags} must not contain {@link #VK_QUERY_RESULT_WITH_AVAILABILITY_BIT QUERY_RESULT_WITH_AVAILABILITY_BIT}, {@link #VK_QUERY_RESULT_PARTIAL_BIT QUERY_RESULT_PARTIAL_BIT} or {@link #VK_QUERY_RESULT_64_BIT QUERY_RESULT_64_BIT}
* If the {@code queryType} used to create {@code queryPool} was {@link KHRPerformanceQuery#VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR QUERY_TYPE_PERFORMANCE_QUERY_KHR}, the {@code queryPool} must have been recorded once for each pass as retrieved via a call to {@link KHRPerformanceQuery#vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR}
- * If the {@code queryType} used to create {@code queryPool} was {@link KHRVideoQueue#VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR QUERY_TYPE_RESULT_STATUS_ONLY_KHR}, {@code flags} must include {@link KHRVideoQueue#VK_QUERY_RESULT_WITH_STATUS_BIT_KHR QUERY_RESULT_WITH_STATUS_BIT_KHR}
- * If {@code flags} includes {@link KHRVideoQueue#VK_QUERY_RESULT_WITH_STATUS_BIT_KHR QUERY_RESULT_WITH_STATUS_BIT_KHR}, it must not include {@link #VK_QUERY_RESULT_WITH_AVAILABILITY_BIT QUERY_RESULT_WITH_AVAILABILITY_BIT}
- * If the {@code queryType} used to create {@code queryPool} was {@link KHRPerformanceQuery#VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR QUERY_TYPE_PERFORMANCE_QUERY_KHR}, {@code flags} must not contain {@link KHRVideoQueue#VK_QUERY_RESULT_WITH_STATUS_BIT_KHR QUERY_RESULT_WITH_STATUS_BIT_KHR}
+ * If the {@code queryType} used to create {@code queryPool} was {@link KHRVideoQueue#VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR QUERY_TYPE_RESULT_STATUS_ONLY_KHR}, then {@code flags} must include {@link KHRVideoQueue#VK_QUERY_RESULT_WITH_STATUS_BIT_KHR QUERY_RESULT_WITH_STATUS_BIT_KHR}
+ * If {@code flags} includes {@link KHRVideoQueue#VK_QUERY_RESULT_WITH_STATUS_BIT_KHR QUERY_RESULT_WITH_STATUS_BIT_KHR}, then it must not include {@link #VK_QUERY_RESULT_WITH_AVAILABILITY_BIT QUERY_RESULT_WITH_AVAILABILITY_BIT}
*
*
* Valid Usage (Implicit)
@@ -6984,9 +6996,8 @@ public static int vkGetQueryPoolResults(VkDevice device, @NativeType("VkQueryPoo
* If the {@code queryType} used to create {@code queryPool} was {@link #VK_QUERY_TYPE_TIMESTAMP QUERY_TYPE_TIMESTAMP}, {@code flags} must not contain {@link #VK_QUERY_RESULT_PARTIAL_BIT QUERY_RESULT_PARTIAL_BIT}
* If the {@code queryType} used to create {@code queryPool} was {@link KHRPerformanceQuery#VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR QUERY_TYPE_PERFORMANCE_QUERY_KHR}, {@code flags} must not contain {@link #VK_QUERY_RESULT_WITH_AVAILABILITY_BIT QUERY_RESULT_WITH_AVAILABILITY_BIT}, {@link #VK_QUERY_RESULT_PARTIAL_BIT QUERY_RESULT_PARTIAL_BIT} or {@link #VK_QUERY_RESULT_64_BIT QUERY_RESULT_64_BIT}
* If the {@code queryType} used to create {@code queryPool} was {@link KHRPerformanceQuery#VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR QUERY_TYPE_PERFORMANCE_QUERY_KHR}, the {@code queryPool} must have been recorded once for each pass as retrieved via a call to {@link KHRPerformanceQuery#vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR}
- * If the {@code queryType} used to create {@code queryPool} was {@link KHRVideoQueue#VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR QUERY_TYPE_RESULT_STATUS_ONLY_KHR}, {@code flags} must include {@link KHRVideoQueue#VK_QUERY_RESULT_WITH_STATUS_BIT_KHR QUERY_RESULT_WITH_STATUS_BIT_KHR}
- * If {@code flags} includes {@link KHRVideoQueue#VK_QUERY_RESULT_WITH_STATUS_BIT_KHR QUERY_RESULT_WITH_STATUS_BIT_KHR}, it must not include {@link #VK_QUERY_RESULT_WITH_AVAILABILITY_BIT QUERY_RESULT_WITH_AVAILABILITY_BIT}
- * If the {@code queryType} used to create {@code queryPool} was {@link KHRPerformanceQuery#VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR QUERY_TYPE_PERFORMANCE_QUERY_KHR}, {@code flags} must not contain {@link KHRVideoQueue#VK_QUERY_RESULT_WITH_STATUS_BIT_KHR QUERY_RESULT_WITH_STATUS_BIT_KHR}
+ * If the {@code queryType} used to create {@code queryPool} was {@link KHRVideoQueue#VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR QUERY_TYPE_RESULT_STATUS_ONLY_KHR}, then {@code flags} must include {@link KHRVideoQueue#VK_QUERY_RESULT_WITH_STATUS_BIT_KHR QUERY_RESULT_WITH_STATUS_BIT_KHR}
+ * If {@code flags} includes {@link KHRVideoQueue#VK_QUERY_RESULT_WITH_STATUS_BIT_KHR QUERY_RESULT_WITH_STATUS_BIT_KHR}, then it must not include {@link #VK_QUERY_RESULT_WITH_AVAILABILITY_BIT QUERY_RESULT_WITH_AVAILABILITY_BIT}
*
*
* Valid Usage (Implicit)
@@ -7096,9 +7107,8 @@ public static int vkGetQueryPoolResults(VkDevice device, @NativeType("VkQueryPoo
* If the {@code queryType} used to create {@code queryPool} was {@link #VK_QUERY_TYPE_TIMESTAMP QUERY_TYPE_TIMESTAMP}, {@code flags} must not contain {@link #VK_QUERY_RESULT_PARTIAL_BIT QUERY_RESULT_PARTIAL_BIT}
* If the {@code queryType} used to create {@code queryPool} was {@link KHRPerformanceQuery#VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR QUERY_TYPE_PERFORMANCE_QUERY_KHR}, {@code flags} must not contain {@link #VK_QUERY_RESULT_WITH_AVAILABILITY_BIT QUERY_RESULT_WITH_AVAILABILITY_BIT}, {@link #VK_QUERY_RESULT_PARTIAL_BIT QUERY_RESULT_PARTIAL_BIT} or {@link #VK_QUERY_RESULT_64_BIT QUERY_RESULT_64_BIT}
* If the {@code queryType} used to create {@code queryPool} was {@link KHRPerformanceQuery#VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR QUERY_TYPE_PERFORMANCE_QUERY_KHR}, the {@code queryPool} must have been recorded once for each pass as retrieved via a call to {@link KHRPerformanceQuery#vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR}
- * If the {@code queryType} used to create {@code queryPool} was {@link KHRVideoQueue#VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR QUERY_TYPE_RESULT_STATUS_ONLY_KHR}, {@code flags} must include {@link KHRVideoQueue#VK_QUERY_RESULT_WITH_STATUS_BIT_KHR QUERY_RESULT_WITH_STATUS_BIT_KHR}
- * If {@code flags} includes {@link KHRVideoQueue#VK_QUERY_RESULT_WITH_STATUS_BIT_KHR QUERY_RESULT_WITH_STATUS_BIT_KHR}, it must not include {@link #VK_QUERY_RESULT_WITH_AVAILABILITY_BIT QUERY_RESULT_WITH_AVAILABILITY_BIT}
- * If the {@code queryType} used to create {@code queryPool} was {@link KHRPerformanceQuery#VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR QUERY_TYPE_PERFORMANCE_QUERY_KHR}, {@code flags} must not contain {@link KHRVideoQueue#VK_QUERY_RESULT_WITH_STATUS_BIT_KHR QUERY_RESULT_WITH_STATUS_BIT_KHR}
+ * If the {@code queryType} used to create {@code queryPool} was {@link KHRVideoQueue#VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR QUERY_TYPE_RESULT_STATUS_ONLY_KHR}, then {@code flags} must include {@link KHRVideoQueue#VK_QUERY_RESULT_WITH_STATUS_BIT_KHR QUERY_RESULT_WITH_STATUS_BIT_KHR}
+ * If {@code flags} includes {@link KHRVideoQueue#VK_QUERY_RESULT_WITH_STATUS_BIT_KHR QUERY_RESULT_WITH_STATUS_BIT_KHR}, then it must not include {@link #VK_QUERY_RESULT_WITH_AVAILABILITY_BIT QUERY_RESULT_WITH_AVAILABILITY_BIT}
*
*
* Valid Usage (Implicit)
@@ -7539,12 +7549,15 @@ public static void nvkGetImageSubresourceLayout(VkDevice device, long image, lon
*
* If the image’s tiling is {@link #VK_IMAGE_TILING_LINEAR IMAGE_TILING_LINEAR} and its format is a multi-planar format, then {@code vkGetImageSubresourceLayout} describes one format plane of the image. If the image’s tiling is {@link EXTImageDrmFormatModifier#VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT}, then {@code vkGetImageSubresourceLayout} describes one memory plane of the image. If the image’s tiling is {@link EXTImageDrmFormatModifier#VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT} and the image is non-linear, then the returned layout has an implementation-dependent meaning; the vendor of the image’s DRM format modifier may provide documentation that explains how to interpret the returned layout.
*
- * {@code vkGetImageSubresourceLayout} is invariant for the lifetime of a single image.
+ * {@code vkGetImageSubresourceLayout} is invariant for the lifetime of a single image. However, the subresource layout of images in Android hardware buffer external memory is not known until the image has been bound to memory, so applications must not call {@link #vkGetImageSubresourceLayout GetImageSubresourceLayout} for such an image before it has been bound.
*
* Valid Usage
*
*
* - {@code image} must have been created with {@code tiling} equal to {@link #VK_IMAGE_TILING_LINEAR IMAGE_TILING_LINEAR} or {@link EXTImageDrmFormatModifier#VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT}
+ *
+ *
+ *
* - The {@code aspectMask} member of {@code pSubresource} must only have a single bit set
* - The {@code mipLevel} member of {@code pSubresource} must be less than the {@code mipLevels} specified in {@link VkImageCreateInfo} when {@code image} was created
* - The {@code arrayLayer} member of {@code pSubresource} must be less than the {@code arrayLayers} specified in {@link VkImageCreateInfo} when {@code image} was created
@@ -7554,6 +7567,7 @@ public static void nvkGetImageSubresourceLayout(VkDevice device, long image, lon
* - If {@code format} does not contain a stencil or depth component, the {@code aspectMask} member of {@code pSubresource} must not contain {@link #VK_IMAGE_ASPECT_DEPTH_BIT IMAGE_ASPECT_DEPTH_BIT} or {@link #VK_IMAGE_ASPECT_STENCIL_BIT IMAGE_ASPECT_STENCIL_BIT}
* - If the {@code tiling} of the {@code image} is {@link #VK_IMAGE_TILING_LINEAR IMAGE_TILING_LINEAR} and its {@code format} is a multi-planar format with two planes, the {@code aspectMask} member of {@code pSubresource} must be {@link VK11#VK_IMAGE_ASPECT_PLANE_0_BIT IMAGE_ASPECT_PLANE_0_BIT} or {@link VK11#VK_IMAGE_ASPECT_PLANE_1_BIT IMAGE_ASPECT_PLANE_1_BIT}
* - If the {@code tiling} of the {@code image} is {@link #VK_IMAGE_TILING_LINEAR IMAGE_TILING_LINEAR} and its {@code format} is a multi-planar format with three planes, the {@code aspectMask} member of {@code pSubresource} must be {@link VK11#VK_IMAGE_ASPECT_PLANE_0_BIT IMAGE_ASPECT_PLANE_0_BIT}, {@link VK11#VK_IMAGE_ASPECT_PLANE_1_BIT IMAGE_ASPECT_PLANE_1_BIT} or {@link VK11#VK_IMAGE_ASPECT_PLANE_2_BIT IMAGE_ASPECT_PLANE_2_BIT}
+ * - If {@code image} was created with the {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID} external memory handle type, then {@code image} must be bound to memory
* - If the {@code tiling} of the {@code image} is {@link EXTImageDrmFormatModifier#VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT}, then the {@code aspectMask} member of {@code pSubresource} must be
VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT
and the index i must be less than the {@link VkDrmFormatModifierPropertiesEXT}{@code ::drmFormatModifierPlaneCount} associated with the image’s {@code format} and {@link VkImageDrmFormatModifierPropertiesEXT}{@code ::drmFormatModifier}
*
*
@@ -11049,7 +11063,6 @@ public static void vkCmdBindVertexBuffers(VkCommandBuffer commandBuffer, @Native
* If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* A valid pipeline must be bound to the pipeline bind point used by this command
- * If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link #VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link #VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link #VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link #VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link #VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -11088,9 +11101,27 @@ public static void vkCmdBindVertexBuffers(VkCommandBuffer commandBuffer, @Native
* If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
* If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
* If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be {@link #VK_STENCIL_OP_KEEP STENCIL_OP_KEEP}
+ * If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_VIEWPORT DYNAMIC_STATE_VIEWPORT} dynamic state enabled then {@link #vkCmdSetViewport CmdSetViewport} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_SCISSOR DYNAMIC_STATE_SCISSOR} dynamic state enabled then {@link #vkCmdSetScissor CmdSetScissor} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_LINE_WIDTH DYNAMIC_STATE_LINE_WIDTH} dynamic state enabled then {@link #vkCmdSetLineWidth CmdSetLineWidth} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_DEPTH_BIAS DYNAMIC_STATE_DEPTH_BIAS} dynamic state enabled then {@link #vkCmdSetDepthBias CmdSetDepthBias} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_BLEND_CONSTANTS DYNAMIC_STATE_BLEND_CONSTANTS} dynamic state enabled then {@link #vkCmdSetBlendConstants CmdSetBlendConstants} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_DEPTH_BOUNDS DYNAMIC_STATE_DEPTH_BOUNDS} dynamic state enabled then {@link #vkCmdSetDepthBounds CmdSetDepthBounds} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK DYNAMIC_STATE_STENCIL_COMPARE_MASK} dynamic state enabled then {@link #vkCmdSetStencilCompareMask CmdSetStencilCompareMask} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_STENCIL_WRITE_MASK DYNAMIC_STATE_STENCIL_WRITE_MASK} dynamic state enabled then {@link #vkCmdSetStencilWriteMask CmdSetStencilWriteMask} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_STENCIL_REFERENCE DYNAMIC_STATE_STENCIL_REFERENCE} dynamic state enabled then {@link #vkCmdSetStencilReference CmdSetStencilReference} must have been called in the current command buffer prior to this drawing command
* If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to {@link VkPhysicalDeviceMultiviewProperties}{@code ::maxMultiviewInstanceIndex}
* If the bound graphics pipeline was created with {@link VkPipelineSampleLocationsStateCreateInfoEXT}{@code ::sampleLocationsEnable} set to {@link #VK_TRUE TRUE} and the current subpass has a depth/stencil attachment, then that attachment must have been created with the {@link EXTSampleLocations#VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT} bit set
* If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} dynamic state enabled then {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_CULL_MODE DYNAMIC_STATE_CULL_MODE} dynamic state enabled then {@link VK13#vkCmdSetCullMode CmdSetCullMode} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_FRONT_FACE DYNAMIC_STATE_FRONT_FACE} dynamic state enabled then {@link VK13#vkCmdSetFrontFace CmdSetFrontFace} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY DYNAMIC_STATE_PRIMITIVE_TOPOLOGY} dynamic state enabled then {@link VK13#vkCmdSetPrimitiveTopology CmdSetPrimitiveTopology} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE DYNAMIC_STATE_DEPTH_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthTestEnable CmdSetDepthTestEnable} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE DYNAMIC_STATE_DEPTH_WRITE_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthWriteEnable CmdSetDepthWriteEnable} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_COMPARE_OP DYNAMIC_STATE_DEPTH_COMPARE_OP} dynamic state enabled then {@link VK13#vkCmdSetDepthCompareOp CmdSetDepthCompareOp} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthBoundsTestEnable CmdSetDepthBoundsTestEnable} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE DYNAMIC_STATE_STENCIL_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetStencilTestEnable CmdSetStencilTestEnable} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_OP DYNAMIC_STATE_STENCIL_OP} dynamic state enabled then {@link VK13#vkCmdSetStencilOp CmdSetStencilOp} must have been called in the current command buffer prior to this drawing command
* If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::scissorCount} of the pipeline
* If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::viewportCount} of the pipeline
* If the bound graphics pipeline state was created with both the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} and {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic states enabled then both {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} and {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -11118,7 +11149,7 @@ public static void vkCmdBindVertexBuffers(VkCommandBuffer commandBuffer, @Native
* If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::colorAttachmentCount} greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} equal to {@link #VK_NULL_HANDLE NULL_HANDLE} must have the corresponding element of {@link VkPipelineRenderingCreateInfo}{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to {@link #VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then {@link EXTColorWriteEnable#vkCmdSetColorWriteEnableEXT CmdSetColorWriteEnableEXT} must have been called in the current command buffer prior to this drawing command
* If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the {@link VkPipelineColorBlendStateCreateInfo}{@code ::attachmentCount} of the currently bound graphics pipeline
- * If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command for each discard rectangle in {@link VkPipelineDiscardRectangleStateCreateInfoEXT}{@code ::discardRectangleCount}
* If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link #VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
* If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was {@link #VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to {@link #VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link #VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
@@ -11134,37 +11165,38 @@ public static void vkCmdBindVertexBuffers(VkCommandBuffer commandBuffer, @Native
* If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline must have been created with a {@link VkGraphicsPipelineCreateInfo}{@code ::renderPass} equal to {@link #VK_NULL_HANDLE NULL_HANDLE}
* If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, rasterization discard must not be enabled
* If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, the bound graphics pipeline must not have been created with a non-zero value in {@link VkPipelineRasterizationStateStreamCreateInfoEXT}{@code ::rasterizationStream}
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTLineRasterization#VK_DYNAMIC_STATE_LINE_STIPPLE_EXT DYNAMIC_STATE_LINE_STIPPLE_EXT} dynamic state enabled then {@link EXTLineRasterization#vkCmdSetLineStippleEXT CmdSetLineStippleEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRepresentativeFragmentTestEnableNV CmdSetRepresentativeFragmentTestEnableNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} set {@code pColorBlendEnables} for any attachment to {@link #VK_TRUE TRUE}, then for those attachments in the subpass the corresponding image view’s format features must contain {@link #VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT}
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must follow the rules for a zero-attachment subpass
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state disabled, then the {@code samples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must be greater or equal to the {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -11184,7 +11216,7 @@ public static void vkCmdBindVertexBuffers(VkCommandBuffer commandBuffer, @Native
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link #VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} set {@code coverageModulationTableEnable} to {@link #VK_TRUE TRUE}, then the {@code coverageModulationTableCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
* If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link #VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link #VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link #VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link #VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link #VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link #VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link #VK_FORMAT_R32_SINT FORMAT_R32_SINT}
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link #VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link #VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link #VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link #VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link #VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link #VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link #VK_FORMAT_R32_SINT FORMAT_R32_SINT}
* If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by {@link NVCoverageReductionMode#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV}
* If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportSwizzleStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
* If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
@@ -11195,6 +11227,7 @@ public static void vkCmdBindVertexBuffers(VkCommandBuffer commandBuffer, @Native
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link #VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT LINE_RASTERIZATION_MODE_DEFAULT_EXT}, then the {@code stippledRectangularLines} feature must be enabled and {@link VkPhysicalDeviceLimits}{@code ::strictLines} must be VK_TRUE
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must be {@link EXTConservativeRasterization#VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT}
* If the currently bound pipeline was created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link #VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link #VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link #VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link #VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}, then Mesh Shader Queries must not be active
+ * If dynamic state was inherited from {@link VkCommandBufferInheritanceViewportScissorInfoNV}, it must be set in the current command buffer prior to this drawing command
*
*
*
@@ -11300,7 +11333,6 @@ public static void vkCmdDraw(VkCommandBuffer commandBuffer, @NativeType("uint32_
* - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* - If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* - A valid pipeline must be bound to the pipeline bind point used by this command
- * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* - There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link #VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link #VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link #VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link #VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link #VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -11339,9 +11371,27 @@ public static void vkCmdDraw(VkCommandBuffer commandBuffer, @NativeType("uint32_
* - If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be {@link #VK_STENCIL_OP_KEEP STENCIL_OP_KEEP}
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_VIEWPORT DYNAMIC_STATE_VIEWPORT} dynamic state enabled then {@link #vkCmdSetViewport CmdSetViewport} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_SCISSOR DYNAMIC_STATE_SCISSOR} dynamic state enabled then {@link #vkCmdSetScissor CmdSetScissor} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_LINE_WIDTH DYNAMIC_STATE_LINE_WIDTH} dynamic state enabled then {@link #vkCmdSetLineWidth CmdSetLineWidth} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_DEPTH_BIAS DYNAMIC_STATE_DEPTH_BIAS} dynamic state enabled then {@link #vkCmdSetDepthBias CmdSetDepthBias} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_BLEND_CONSTANTS DYNAMIC_STATE_BLEND_CONSTANTS} dynamic state enabled then {@link #vkCmdSetBlendConstants CmdSetBlendConstants} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_DEPTH_BOUNDS DYNAMIC_STATE_DEPTH_BOUNDS} dynamic state enabled then {@link #vkCmdSetDepthBounds CmdSetDepthBounds} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK DYNAMIC_STATE_STENCIL_COMPARE_MASK} dynamic state enabled then {@link #vkCmdSetStencilCompareMask CmdSetStencilCompareMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_STENCIL_WRITE_MASK DYNAMIC_STATE_STENCIL_WRITE_MASK} dynamic state enabled then {@link #vkCmdSetStencilWriteMask CmdSetStencilWriteMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_STENCIL_REFERENCE DYNAMIC_STATE_STENCIL_REFERENCE} dynamic state enabled then {@link #vkCmdSetStencilReference CmdSetStencilReference} must have been called in the current command buffer prior to this drawing command
* - If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to {@link VkPhysicalDeviceMultiviewProperties}{@code ::maxMultiviewInstanceIndex}
* - If the bound graphics pipeline was created with {@link VkPipelineSampleLocationsStateCreateInfoEXT}{@code ::sampleLocationsEnable} set to {@link #VK_TRUE TRUE} and the current subpass has a depth/stencil attachment, then that attachment must have been created with the {@link EXTSampleLocations#VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT} bit set
* - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} dynamic state enabled then {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_CULL_MODE DYNAMIC_STATE_CULL_MODE} dynamic state enabled then {@link VK13#vkCmdSetCullMode CmdSetCullMode} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_FRONT_FACE DYNAMIC_STATE_FRONT_FACE} dynamic state enabled then {@link VK13#vkCmdSetFrontFace CmdSetFrontFace} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY DYNAMIC_STATE_PRIMITIVE_TOPOLOGY} dynamic state enabled then {@link VK13#vkCmdSetPrimitiveTopology CmdSetPrimitiveTopology} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE DYNAMIC_STATE_DEPTH_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthTestEnable CmdSetDepthTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE DYNAMIC_STATE_DEPTH_WRITE_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthWriteEnable CmdSetDepthWriteEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_COMPARE_OP DYNAMIC_STATE_DEPTH_COMPARE_OP} dynamic state enabled then {@link VK13#vkCmdSetDepthCompareOp CmdSetDepthCompareOp} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthBoundsTestEnable CmdSetDepthBoundsTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE DYNAMIC_STATE_STENCIL_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetStencilTestEnable CmdSetStencilTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_OP DYNAMIC_STATE_STENCIL_OP} dynamic state enabled then {@link VK13#vkCmdSetStencilOp CmdSetStencilOp} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::scissorCount} of the pipeline
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::viewportCount} of the pipeline
* - If the bound graphics pipeline state was created with both the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} and {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic states enabled then both {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} and {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -11369,7 +11419,7 @@ public static void vkCmdDraw(VkCommandBuffer commandBuffer, @NativeType("uint32_
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::colorAttachmentCount} greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} equal to {@link #VK_NULL_HANDLE NULL_HANDLE} must have the corresponding element of {@link VkPipelineRenderingCreateInfo}{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to {@link #VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then {@link EXTColorWriteEnable#vkCmdSetColorWriteEnableEXT CmdSetColorWriteEnableEXT} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the {@link VkPipelineColorBlendStateCreateInfo}{@code ::attachmentCount} of the currently bound graphics pipeline
- * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command for each discard rectangle in {@link VkPipelineDiscardRectangleStateCreateInfoEXT}{@code ::discardRectangleCount}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link #VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was {@link #VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to {@link #VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link #VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
@@ -11385,37 +11435,38 @@ public static void vkCmdDraw(VkCommandBuffer commandBuffer, @NativeType("uint32_
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline must have been created with a {@link VkGraphicsPipelineCreateInfo}{@code ::renderPass} equal to {@link #VK_NULL_HANDLE NULL_HANDLE}
* - If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, rasterization discard must not be enabled
* - If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, the bound graphics pipeline must not have been created with a non-zero value in {@link VkPipelineRasterizationStateStreamCreateInfoEXT}{@code ::rasterizationStream}
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTLineRasterization#VK_DYNAMIC_STATE_LINE_STIPPLE_EXT DYNAMIC_STATE_LINE_STIPPLE_EXT} dynamic state enabled then {@link EXTLineRasterization#vkCmdSetLineStippleEXT CmdSetLineStippleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRepresentativeFragmentTestEnableNV CmdSetRepresentativeFragmentTestEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} set {@code pColorBlendEnables} for any attachment to {@link #VK_TRUE TRUE}, then for those attachments in the subpass the corresponding image view’s format features must contain {@link #VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must follow the rules for a zero-attachment subpass
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state disabled, then the {@code samples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must be greater or equal to the {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -11435,7 +11486,7 @@ public static void vkCmdDraw(VkCommandBuffer commandBuffer, @NativeType("uint32_
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link #VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} set {@code coverageModulationTableEnable} to {@link #VK_TRUE TRUE}, then the {@code coverageModulationTableCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
* - If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link #VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link #VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link #VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link #VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link #VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link #VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link #VK_FORMAT_R32_SINT FORMAT_R32_SINT}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link #VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link #VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link #VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link #VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link #VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link #VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link #VK_FORMAT_R32_SINT FORMAT_R32_SINT}
* - If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by {@link NVCoverageReductionMode#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportSwizzleStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
@@ -11446,6 +11497,7 @@ public static void vkCmdDraw(VkCommandBuffer commandBuffer, @NativeType("uint32_
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link #VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT LINE_RASTERIZATION_MODE_DEFAULT_EXT}, then the {@code stippledRectangularLines} feature must be enabled and {@link VkPhysicalDeviceLimits}{@code ::strictLines} must be VK_TRUE
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must be {@link EXTConservativeRasterization#VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT}
* - If the currently bound pipeline was created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link #VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link #VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link #VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link #VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}, then Mesh Shader Queries must not be active
+ * - If dynamic state was inherited from {@link VkCommandBufferInheritanceViewportScissorInfoNV}, it must be set in the current command buffer prior to this drawing command
*
*
*
@@ -11469,7 +11521,7 @@ public static void vkCmdDraw(VkCommandBuffer commandBuffer, @NativeType("uint32_
*
*
* - An index buffer must be bound
- * (indexSize × (firstIndex + indexCount) + offset)
must be less than or equal to the size of the bound index buffer, with {@code indexSize} being based on the type specified by {@code indexType}, where the index buffer, {@code indexType}, and {@code offset} are specified via {@code vkCmdBindIndexBuffer}
+ * - If {@code robustBufferAccess2} is not enabled,
(indexSize × (firstIndex + indexCount) + offset)
must be less than or equal to the size of the bound index buffer, with {@code indexSize} being based on the type specified by {@code indexType}, where the index buffer, {@code indexType}, and {@code offset} are specified via {@code vkCmdBindIndexBuffer}
*
*
* Valid Usage (Implicit)
@@ -11552,7 +11604,6 @@ public static void vkCmdDrawIndexed(VkCommandBuffer commandBuffer, @NativeType("
* - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* - If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* - A valid pipeline must be bound to the pipeline bind point used by this command
- * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* - There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link #VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link #VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link #VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link #VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link #VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -11591,9 +11642,27 @@ public static void vkCmdDrawIndexed(VkCommandBuffer commandBuffer, @NativeType("
* - If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be {@link #VK_STENCIL_OP_KEEP STENCIL_OP_KEEP}
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_VIEWPORT DYNAMIC_STATE_VIEWPORT} dynamic state enabled then {@link #vkCmdSetViewport CmdSetViewport} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_SCISSOR DYNAMIC_STATE_SCISSOR} dynamic state enabled then {@link #vkCmdSetScissor CmdSetScissor} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_LINE_WIDTH DYNAMIC_STATE_LINE_WIDTH} dynamic state enabled then {@link #vkCmdSetLineWidth CmdSetLineWidth} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_DEPTH_BIAS DYNAMIC_STATE_DEPTH_BIAS} dynamic state enabled then {@link #vkCmdSetDepthBias CmdSetDepthBias} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_BLEND_CONSTANTS DYNAMIC_STATE_BLEND_CONSTANTS} dynamic state enabled then {@link #vkCmdSetBlendConstants CmdSetBlendConstants} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_DEPTH_BOUNDS DYNAMIC_STATE_DEPTH_BOUNDS} dynamic state enabled then {@link #vkCmdSetDepthBounds CmdSetDepthBounds} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK DYNAMIC_STATE_STENCIL_COMPARE_MASK} dynamic state enabled then {@link #vkCmdSetStencilCompareMask CmdSetStencilCompareMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_STENCIL_WRITE_MASK DYNAMIC_STATE_STENCIL_WRITE_MASK} dynamic state enabled then {@link #vkCmdSetStencilWriteMask CmdSetStencilWriteMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_STENCIL_REFERENCE DYNAMIC_STATE_STENCIL_REFERENCE} dynamic state enabled then {@link #vkCmdSetStencilReference CmdSetStencilReference} must have been called in the current command buffer prior to this drawing command
* - If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to {@link VkPhysicalDeviceMultiviewProperties}{@code ::maxMultiviewInstanceIndex}
* - If the bound graphics pipeline was created with {@link VkPipelineSampleLocationsStateCreateInfoEXT}{@code ::sampleLocationsEnable} set to {@link #VK_TRUE TRUE} and the current subpass has a depth/stencil attachment, then that attachment must have been created with the {@link EXTSampleLocations#VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT} bit set
* - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} dynamic state enabled then {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_CULL_MODE DYNAMIC_STATE_CULL_MODE} dynamic state enabled then {@link VK13#vkCmdSetCullMode CmdSetCullMode} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_FRONT_FACE DYNAMIC_STATE_FRONT_FACE} dynamic state enabled then {@link VK13#vkCmdSetFrontFace CmdSetFrontFace} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY DYNAMIC_STATE_PRIMITIVE_TOPOLOGY} dynamic state enabled then {@link VK13#vkCmdSetPrimitiveTopology CmdSetPrimitiveTopology} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE DYNAMIC_STATE_DEPTH_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthTestEnable CmdSetDepthTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE DYNAMIC_STATE_DEPTH_WRITE_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthWriteEnable CmdSetDepthWriteEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_COMPARE_OP DYNAMIC_STATE_DEPTH_COMPARE_OP} dynamic state enabled then {@link VK13#vkCmdSetDepthCompareOp CmdSetDepthCompareOp} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthBoundsTestEnable CmdSetDepthBoundsTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE DYNAMIC_STATE_STENCIL_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetStencilTestEnable CmdSetStencilTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_OP DYNAMIC_STATE_STENCIL_OP} dynamic state enabled then {@link VK13#vkCmdSetStencilOp CmdSetStencilOp} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::scissorCount} of the pipeline
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::viewportCount} of the pipeline
* - If the bound graphics pipeline state was created with both the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} and {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic states enabled then both {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} and {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -11621,7 +11690,7 @@ public static void vkCmdDrawIndexed(VkCommandBuffer commandBuffer, @NativeType("
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::colorAttachmentCount} greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} equal to {@link #VK_NULL_HANDLE NULL_HANDLE} must have the corresponding element of {@link VkPipelineRenderingCreateInfo}{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to {@link #VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then {@link EXTColorWriteEnable#vkCmdSetColorWriteEnableEXT CmdSetColorWriteEnableEXT} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the {@link VkPipelineColorBlendStateCreateInfo}{@code ::attachmentCount} of the currently bound graphics pipeline
- * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command for each discard rectangle in {@link VkPipelineDiscardRectangleStateCreateInfoEXT}{@code ::discardRectangleCount}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link #VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was {@link #VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to {@link #VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link #VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
@@ -11637,37 +11706,38 @@ public static void vkCmdDrawIndexed(VkCommandBuffer commandBuffer, @NativeType("
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline must have been created with a {@link VkGraphicsPipelineCreateInfo}{@code ::renderPass} equal to {@link #VK_NULL_HANDLE NULL_HANDLE}
* - If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, rasterization discard must not be enabled
* - If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, the bound graphics pipeline must not have been created with a non-zero value in {@link VkPipelineRasterizationStateStreamCreateInfoEXT}{@code ::rasterizationStream}
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTLineRasterization#VK_DYNAMIC_STATE_LINE_STIPPLE_EXT DYNAMIC_STATE_LINE_STIPPLE_EXT} dynamic state enabled then {@link EXTLineRasterization#vkCmdSetLineStippleEXT CmdSetLineStippleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRepresentativeFragmentTestEnableNV CmdSetRepresentativeFragmentTestEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} set {@code pColorBlendEnables} for any attachment to {@link #VK_TRUE TRUE}, then for those attachments in the subpass the corresponding image view’s format features must contain {@link #VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must follow the rules for a zero-attachment subpass
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state disabled, then the {@code samples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must be greater or equal to the {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -11687,7 +11757,7 @@ public static void vkCmdDrawIndexed(VkCommandBuffer commandBuffer, @NativeType("
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link #VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} set {@code coverageModulationTableEnable} to {@link #VK_TRUE TRUE}, then the {@code coverageModulationTableCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
* - If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link #VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link #VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link #VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link #VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link #VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link #VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link #VK_FORMAT_R32_SINT FORMAT_R32_SINT}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link #VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link #VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link #VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link #VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link #VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link #VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link #VK_FORMAT_R32_SINT FORMAT_R32_SINT}
* - If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by {@link NVCoverageReductionMode#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportSwizzleStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
@@ -11698,6 +11768,7 @@ public static void vkCmdDrawIndexed(VkCommandBuffer commandBuffer, @NativeType("
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link #VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT LINE_RASTERIZATION_MODE_DEFAULT_EXT}, then the {@code stippledRectangularLines} feature must be enabled and {@link VkPhysicalDeviceLimits}{@code ::strictLines} must be VK_TRUE
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must be {@link EXTConservativeRasterization#VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT}
* - If the currently bound pipeline was created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link #VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link #VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link #VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link #VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}, then Mesh Shader Queries must not be active
+ * - If dynamic state was inherited from {@link VkCommandBufferInheritanceViewportScissorInfoNV}, it must be set in the current command buffer prior to this drawing command
*
*
*
@@ -11809,7 +11880,6 @@ public static void vkCmdDrawIndirect(VkCommandBuffer commandBuffer, @NativeType(
* - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* - If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* - A valid pipeline must be bound to the pipeline bind point used by this command
- * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* - There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link #VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link #VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link #VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link #VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link #VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -11848,9 +11918,27 @@ public static void vkCmdDrawIndirect(VkCommandBuffer commandBuffer, @NativeType(
* - If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be {@link #VK_STENCIL_OP_KEEP STENCIL_OP_KEEP}
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_VIEWPORT DYNAMIC_STATE_VIEWPORT} dynamic state enabled then {@link #vkCmdSetViewport CmdSetViewport} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_SCISSOR DYNAMIC_STATE_SCISSOR} dynamic state enabled then {@link #vkCmdSetScissor CmdSetScissor} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_LINE_WIDTH DYNAMIC_STATE_LINE_WIDTH} dynamic state enabled then {@link #vkCmdSetLineWidth CmdSetLineWidth} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_DEPTH_BIAS DYNAMIC_STATE_DEPTH_BIAS} dynamic state enabled then {@link #vkCmdSetDepthBias CmdSetDepthBias} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_BLEND_CONSTANTS DYNAMIC_STATE_BLEND_CONSTANTS} dynamic state enabled then {@link #vkCmdSetBlendConstants CmdSetBlendConstants} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_DEPTH_BOUNDS DYNAMIC_STATE_DEPTH_BOUNDS} dynamic state enabled then {@link #vkCmdSetDepthBounds CmdSetDepthBounds} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK DYNAMIC_STATE_STENCIL_COMPARE_MASK} dynamic state enabled then {@link #vkCmdSetStencilCompareMask CmdSetStencilCompareMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_STENCIL_WRITE_MASK DYNAMIC_STATE_STENCIL_WRITE_MASK} dynamic state enabled then {@link #vkCmdSetStencilWriteMask CmdSetStencilWriteMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link #VK_DYNAMIC_STATE_STENCIL_REFERENCE DYNAMIC_STATE_STENCIL_REFERENCE} dynamic state enabled then {@link #vkCmdSetStencilReference CmdSetStencilReference} must have been called in the current command buffer prior to this drawing command
* - If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to {@link VkPhysicalDeviceMultiviewProperties}{@code ::maxMultiviewInstanceIndex}
* - If the bound graphics pipeline was created with {@link VkPipelineSampleLocationsStateCreateInfoEXT}{@code ::sampleLocationsEnable} set to {@link #VK_TRUE TRUE} and the current subpass has a depth/stencil attachment, then that attachment must have been created with the {@link EXTSampleLocations#VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT} bit set
* - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} dynamic state enabled then {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_CULL_MODE DYNAMIC_STATE_CULL_MODE} dynamic state enabled then {@link VK13#vkCmdSetCullMode CmdSetCullMode} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_FRONT_FACE DYNAMIC_STATE_FRONT_FACE} dynamic state enabled then {@link VK13#vkCmdSetFrontFace CmdSetFrontFace} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY DYNAMIC_STATE_PRIMITIVE_TOPOLOGY} dynamic state enabled then {@link VK13#vkCmdSetPrimitiveTopology CmdSetPrimitiveTopology} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE DYNAMIC_STATE_DEPTH_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthTestEnable CmdSetDepthTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE DYNAMIC_STATE_DEPTH_WRITE_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthWriteEnable CmdSetDepthWriteEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_COMPARE_OP DYNAMIC_STATE_DEPTH_COMPARE_OP} dynamic state enabled then {@link VK13#vkCmdSetDepthCompareOp CmdSetDepthCompareOp} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthBoundsTestEnable CmdSetDepthBoundsTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE DYNAMIC_STATE_STENCIL_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetStencilTestEnable CmdSetStencilTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_OP DYNAMIC_STATE_STENCIL_OP} dynamic state enabled then {@link VK13#vkCmdSetStencilOp CmdSetStencilOp} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::scissorCount} of the pipeline
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::viewportCount} of the pipeline
* - If the bound graphics pipeline state was created with both the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} and {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic states enabled then both {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} and {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -11878,7 +11966,7 @@ public static void vkCmdDrawIndirect(VkCommandBuffer commandBuffer, @NativeType(
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::colorAttachmentCount} greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} equal to {@link #VK_NULL_HANDLE NULL_HANDLE} must have the corresponding element of {@link VkPipelineRenderingCreateInfo}{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to {@link #VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then {@link EXTColorWriteEnable#vkCmdSetColorWriteEnableEXT CmdSetColorWriteEnableEXT} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the {@link VkPipelineColorBlendStateCreateInfo}{@code ::attachmentCount} of the currently bound graphics pipeline
- * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command for each discard rectangle in {@link VkPipelineDiscardRectangleStateCreateInfoEXT}{@code ::discardRectangleCount}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link #VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was {@link #VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to {@link #VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link #VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
@@ -11894,37 +11982,38 @@ public static void vkCmdDrawIndirect(VkCommandBuffer commandBuffer, @NativeType(
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline must have been created with a {@link VkGraphicsPipelineCreateInfo}{@code ::renderPass} equal to {@link #VK_NULL_HANDLE NULL_HANDLE}
* - If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, rasterization discard must not be enabled
* - If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, the bound graphics pipeline must not have been created with a non-zero value in {@link VkPipelineRasterizationStateStreamCreateInfoEXT}{@code ::rasterizationStream}
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTLineRasterization#VK_DYNAMIC_STATE_LINE_STIPPLE_EXT DYNAMIC_STATE_LINE_STIPPLE_EXT} dynamic state enabled then {@link EXTLineRasterization#vkCmdSetLineStippleEXT CmdSetLineStippleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRepresentativeFragmentTestEnableNV CmdSetRepresentativeFragmentTestEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} set {@code pColorBlendEnables} for any attachment to {@link #VK_TRUE TRUE}, then for those attachments in the subpass the corresponding image view’s format features must contain {@link #VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must follow the rules for a zero-attachment subpass
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state disabled, then the {@code samples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must be greater or equal to the {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -11944,7 +12033,7 @@ public static void vkCmdDrawIndirect(VkCommandBuffer commandBuffer, @NativeType(
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link #VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} set {@code coverageModulationTableEnable} to {@link #VK_TRUE TRUE}, then the {@code coverageModulationTableCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
* - If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link #VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link #VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link #VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link #VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link #VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link #VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link #VK_FORMAT_R32_SINT FORMAT_R32_SINT}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link #VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link #VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link #VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link #VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link #VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link #VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link #VK_FORMAT_R32_SINT FORMAT_R32_SINT}
* - If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by {@link NVCoverageReductionMode#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportSwizzleStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
@@ -11955,6 +12044,7 @@ public static void vkCmdDrawIndirect(VkCommandBuffer commandBuffer, @NativeType(
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link #VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT LINE_RASTERIZATION_MODE_DEFAULT_EXT}, then the {@code stippledRectangularLines} feature must be enabled and {@link VkPhysicalDeviceLimits}{@code ::strictLines} must be VK_TRUE
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must be {@link EXTConservativeRasterization#VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT}
* - If the currently bound pipeline was created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link #VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link #VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link #VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link #VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}, then Mesh Shader Queries must not be active
+ * - If dynamic state was inherited from {@link VkCommandBufferInheritanceViewportScissorInfoNV}, it must be set in the current command buffer prior to this drawing command
*
*
*
@@ -11984,6 +12074,7 @@ public static void vkCmdDrawIndirect(VkCommandBuffer commandBuffer, @NativeType(
*
*
* - An index buffer must be bound
+ * - If {@code robustBufferAccess2} is not enabled,
(indexSize × (firstIndex + indexCount) + offset)
must be less than or equal to the size of the bound index buffer, with {@code indexSize} being based on the type specified by {@code indexType}, where the index buffer, {@code indexType}, and {@code offset} are specified via {@code vkCmdBindIndexBuffer}
* - If {@code drawCount} is greater than 1, {@code stride} must be a multiple of 4 and must be greater than or equal to {@code sizeof}({@link VkDrawIndexedIndirectCommand})
* - If {@code drawCount} is equal to 1,
(offset + sizeof({@link VkDrawIndexedIndirectCommand}))
must be less than or equal to the size of {@code buffer}
* - If {@code drawCount} is greater than 1,
(stride × (drawCount - 1) + offset + sizeof({@link VkDrawIndexedIndirectCommand}))
must be less than or equal to the size of {@code buffer}
@@ -12069,7 +12160,6 @@ public static void vkCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer, @Nati
* - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* - If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* - A valid pipeline must be bound to the pipeline bind point used by this command
- * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* - There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link #VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link #VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link #VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link #VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link #VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -12185,7 +12275,6 @@ public static void vkCmdDispatch(VkCommandBuffer commandBuffer, @NativeType("uin
* - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* - If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* - A valid pipeline must be bound to the pipeline bind point used by this command
- * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* - There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link #VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link #VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link #VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link #VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link #VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -12463,7 +12552,6 @@ public static void nvkCmdCopyImage(VkCommandBuffer commandBuffer, long srcImage,
* - If the {@code aspect} member of any element of {@code pRegions} includes any flag other than {@link #VK_IMAGE_ASPECT_STENCIL_BIT IMAGE_ASPECT_STENCIL_BIT} or {@code dstImage} was not created with separate stencil usage, {@link #VK_IMAGE_USAGE_TRANSFER_DST_BIT IMAGE_USAGE_TRANSFER_DST_BIT} must have been included in the {@link VkImageCreateInfo}{@code ::usage} used to create {@code dstImage}
* - If the {@code aspect} member of any element of {@code pRegions} includes {@link #VK_IMAGE_ASPECT_STENCIL_BIT IMAGE_ASPECT_STENCIL_BIT}, and {@code srcImage} was created with separate stencil usage, {@link #VK_IMAGE_USAGE_TRANSFER_SRC_BIT IMAGE_USAGE_TRANSFER_SRC_BIT} must have been included in the {@link VkImageStencilUsageCreateInfo}{@code ::stencilUsage} used to create {@code srcImage}
* - If the {@code aspect} member of any element of {@code pRegions} includes {@link #VK_IMAGE_ASPECT_STENCIL_BIT IMAGE_ASPECT_STENCIL_BIT}, and {@code dstImage} was created with separate stencil usage, {@link #VK_IMAGE_USAGE_TRANSFER_DST_BIT IMAGE_USAGE_TRANSFER_DST_BIT} must have been included in the {@link VkImageStencilUsageCreateInfo}{@code ::stencilUsage} used to create {@code dstImage}
- * - {@code srcImage} and {@code dstImage} must have the same sample count
*
*
* Valid Usage (Implicit)
@@ -12759,14 +12847,11 @@ public static void nvkCmdCopyBufferToImage(VkCommandBuffer commandBuffer, long s
*
*
*
- * - If {@code dstImage} does not have either a depth/stencil or a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the format’s texel block size
- * - If {@code dstImage} has a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the element size of the compatible format for the format and the {@code aspectMask} of the {@code imageSubresource} as defined in Compatible formats of planes of multi-planar formats
* - If {@code dstImage} is of type {@link #VK_IMAGE_TYPE_1D IMAGE_TYPE_1D}, then for each element of {@code pRegions}, {@code imageOffset.y} must be 0 and {@code imageExtent.height} must be 1
* - For each element of {@code pRegions}, {@code imageOffset.z} and
(imageExtent.depth + imageOffset.z)
must both be greater than or equal to 0 and less than or equal to the depth of the specified {@code imageSubresource} of {@code dstImage}
* - If {@code dstImage} is of type {@link #VK_IMAGE_TYPE_1D IMAGE_TYPE_1D} or {@link #VK_IMAGE_TYPE_2D IMAGE_TYPE_2D}, then for each element of {@code pRegions}, {@code imageOffset.z} must be 0 and {@code imageExtent.depth} must be 1
* - For each element of {@code pRegions}, {@code bufferRowLength} must be a multiple of the texel block extent width of the {@code VkFormat} of {@code dstImage}
* - For each element of {@code pRegions}, {@code bufferImageHeight} must be a multiple of the texel block extent height of the {@code VkFormat} of {@code dstImage}
- * - For each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the texel block size of the {@code VkFormat} of {@code dstImage}
* - For each element of {@code pRegions}, {@code imageOffset.x} must be a multiple of the texel block extent width of the {@code VkFormat} of {@code dstImage}
* - For each element of {@code pRegions}, {@code imageOffset.y} must be a multiple of the texel block extent height of the {@code VkFormat} of {@code dstImage}
* - For each element of {@code pRegions}, {@code imageOffset.z} must be a multiple of the texel block extent depth of the {@code VkFormat} of {@code dstImage}
@@ -12778,6 +12863,12 @@ public static void nvkCmdCopyBufferToImage(VkCommandBuffer commandBuffer, long s
* - If {@code dstImage} has a {@code VkFormat} with three planes then for each element of {@code pRegions}, {@code imageSubresource.aspectMask} must be {@link VK11#VK_IMAGE_ASPECT_PLANE_0_BIT IMAGE_ASPECT_PLANE_0_BIT}, {@link VK11#VK_IMAGE_ASPECT_PLANE_1_BIT IMAGE_ASPECT_PLANE_1_BIT}, or {@link VK11#VK_IMAGE_ASPECT_PLANE_2_BIT IMAGE_ASPECT_PLANE_2_BIT}
* - If {@code dstImage} is of type {@link #VK_IMAGE_TYPE_3D IMAGE_TYPE_3D}, for each element of {@code pRegions}, {@code imageSubresource.baseArrayLayer} must be 0 and {@code imageSubresource.layerCount} must be 1
* - For each element of {@code pRegions}, {@code bufferRowLength} divided by the texel block extent width and then multiplied by the texel block size of {@code dstImage} must be less than or equal to
231-1
+ *
+ *
+ *
+ * - If {@code dstImage} does not have either a depth/stencil or a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the format’s texel block size
+ * - If {@code dstImage} has a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the element size of the compatible format for the format and the {@code aspectMask} of the {@code imageSubresource} as defined in Compatible formats of planes of multi-planar formats
+ * - For each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the texel block size of the {@code VkFormat} of {@code dstImage}
* - If {@code dstImage} has a depth/stencil format, the {@code bufferOffset} member of any element of {@code pRegions} must be a multiple of 4
*
*
@@ -12889,14 +12980,11 @@ public static void nvkCmdCopyImageToBuffer(VkCommandBuffer commandBuffer, long s
*
*
*
- * - If {@code srcImage} does not have either a depth/stencil or a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the format’s texel block size
- * - If {@code srcImage} has a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the element size of the compatible format for the format and the {@code aspectMask} of the {@code imageSubresource} as defined in Compatible formats of planes of multi-planar formats
* - If {@code srcImage} is of type {@link #VK_IMAGE_TYPE_1D IMAGE_TYPE_1D}, then for each element of {@code pRegions}, {@code imageOffset.y} must be 0 and {@code imageExtent.height} must be 1
* - For each element of {@code pRegions}, {@code imageOffset.z} and
(imageExtent.depth + imageOffset.z)
must both be greater than or equal to 0 and less than or equal to the depth of the specified {@code imageSubresource} of {@code srcImage}
* - If {@code srcImage} is of type {@link #VK_IMAGE_TYPE_1D IMAGE_TYPE_1D} or {@link #VK_IMAGE_TYPE_2D IMAGE_TYPE_2D}, then for each element of {@code pRegions}, {@code imageOffset.z} must be 0 and {@code imageExtent.depth} must be 1
* - For each element of {@code pRegions}, {@code bufferRowLength} must be a multiple of the texel block extent width of the {@code VkFormat} of {@code srcImage}
* - For each element of {@code pRegions}, {@code bufferImageHeight} must be a multiple of the texel block extent height of the {@code VkFormat} of {@code srcImage}
- * - For each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the texel block size of the {@code VkFormat} of {@code srcImage}
* - For each element of {@code pRegions}, {@code imageOffset.x} must be a multiple of the texel block extent width of the {@code VkFormat} of {@code srcImage}
* - For each element of {@code pRegions}, {@code imageOffset.y} must be a multiple of the texel block extent height of the {@code VkFormat} of {@code srcImage}
* - For each element of {@code pRegions}, {@code imageOffset.z} must be a multiple of the texel block extent depth of the {@code VkFormat} of {@code srcImage}
@@ -12908,6 +12996,12 @@ public static void nvkCmdCopyImageToBuffer(VkCommandBuffer commandBuffer, long s
* - If {@code srcImage} has a {@code VkFormat} with three planes then for each element of {@code pRegions}, {@code imageSubresource.aspectMask} must be {@link VK11#VK_IMAGE_ASPECT_PLANE_0_BIT IMAGE_ASPECT_PLANE_0_BIT}, {@link VK11#VK_IMAGE_ASPECT_PLANE_1_BIT IMAGE_ASPECT_PLANE_1_BIT}, or {@link VK11#VK_IMAGE_ASPECT_PLANE_2_BIT IMAGE_ASPECT_PLANE_2_BIT}
* - If {@code srcImage} is of type {@link #VK_IMAGE_TYPE_3D IMAGE_TYPE_3D}, for each element of {@code pRegions}, {@code imageSubresource.baseArrayLayer} must be 0 and {@code imageSubresource.layerCount} must be 1
* - For each element of {@code pRegions}, {@code bufferRowLength} divided by the texel block extent width and then multiplied by the texel block size of {@code srcImage} must be less than or equal to
231-1
+ *
+ *
+ *
+ * - If {@code srcImage} does not have either a depth/stencil or a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the format’s texel block size
+ * - If {@code srcImage} has a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the element size of the compatible format for the format and the {@code aspectMask} of the {@code imageSubresource} as defined in Compatible formats of planes of multi-planar formats
+ * - For each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the texel block size of the {@code VkFormat} of {@code srcImage}
* - If {@code srcImage} has a depth/stencil format, the {@code bufferOffset} member of any element of {@code pRegions} must be a multiple of 4
*
*
@@ -14699,6 +14793,20 @@ public static void vkCmdPipelineBarrier(VkCommandBuffer commandBuffer, @NativeTy
*
* After beginning a query, that query is considered active within the command buffer it was called in until that same query is ended. Queries active in a primary command buffer when secondary command buffers are executed are considered active for those secondary command buffers.
*
+ * Furthermore, if the query is started within a video coding scope, the following command buffer states are initialized for the query type:
+ *
+ *
+ * - The active_query_index is set to the value specified by {@code query}.
+ * - The last activatable query index is also set to the value specified by {@code query}.
+ *
+ *
+ * Each video coding operation stores a result to the query corresponding to the current active query index, followed by incrementing the active query index. If the active query index gets incremented past the last activatable query index, issuing any further video coding operations results in undefined behavior.
+ *
+ * Note
+ *
+ *
In practice, this means that currently no more than a single video coding operation must be issued between a begin and end query pair.
+ *
+ *
* This command defines an execution dependency between other query commands that reference the same query.
*
* The first synchronization scope includes all commands which reference the queries in {@code queryPool} indicated by {@code query} that occur earlier in submission order.
@@ -14722,7 +14830,13 @@ public static void vkCmdPipelineBarrier(VkCommandBuffer commandBuffer, @NativeTy
* If the {@code queryType} used to create {@code queryPool} was {@link #VK_QUERY_TYPE_PIPELINE_STATISTICS QUERY_TYPE_PIPELINE_STATISTICS} and any of the {@code pipelineStatistics} indicate compute operations, the {@code VkCommandPool} that {@code commandBuffer} was allocated from must support compute operations
* {@code commandBuffer} must not be a protected command buffer
* If called within a render pass instance, the sum of {@code query} and the number of bits set in the current subpass’s view mask must be less than or equal to the number of queries in {@code queryPool}
- * If the {@code queryType} used to create {@code queryPool} was {@link KHRVideoEncodeQueue#VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR} the {@code VkCommandPool} that {@code commandBuffer} was allocated from must support video encode operations
+ * If the {@code queryType} used to create {@code queryPool} was {@link KHRVideoQueue#VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR QUERY_TYPE_RESULT_STATUS_ONLY_KHR}, then the {@code VkCommandPool} that {@code commandBuffer} was allocated from must have been created with a queue family index that supports result status queries, as indicated by {@link VkQueueFamilyQueryResultStatusPropertiesKHR}{@code ::queryResultStatusSupport}
+ * If there is a bound video session, then there must be no active queries
+ * If the {@code queryType} used to create {@code queryPool} was {@link KHRVideoQueue#VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR QUERY_TYPE_RESULT_STATUS_ONLY_KHR} and there is a bound video session, then {@code queryPool} must have been created with a {@link VkVideoProfileInfoKHR} structure included in the {@code pNext} chain of {@link VkQueryPoolCreateInfo} identical to the one specified in {@link VkVideoSessionCreateInfoKHR}{@code ::pVideoProfile} the bound video session was created with
+ * If the {@code queryType} used to create {@code queryPool} was {@link KHRVideoEncodeQueue#VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR}, then the {@code VkCommandPool} that {@code commandBuffer} was allocated from must support video encode operations
+ * If the {@code queryType} used to create {@code queryPool} was {@link KHRVideoEncodeQueue#VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR}, then there must be a bound video session
+ * If the {@code queryType} used to create {@code queryPool} was {@link KHRVideoEncodeQueue#VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR} and there is a bound video session, then {@code queryPool} must have been created with a {@link VkVideoProfileInfoKHR} structure included in the {@code pNext} chain of {@link VkQueryPoolCreateInfo} identical to the one specified in {@link VkVideoSessionCreateInfoKHR}{@code ::pVideoProfile} the bound video session was created with
+ * If the {@code queryType} used to create {@code queryPool} was not {@link KHRVideoQueue#VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR QUERY_TYPE_RESULT_STATUS_ONLY_KHR} or {@link KHRVideoEncodeQueue#VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR}, then there must be no bound video session
* {@code queryPool} must have been created with a {@code queryType} that differs from that of any queries that are active within {@code commandBuffer}
* If the {@code queryType} used to create {@code queryPool} was {@link EXTMeshShader#VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT} the {@code VkCommandPool} that {@code commandBuffer} was allocated from must support graphics operations
* If the {@code queryType} used to create {@code queryPool} was {@link EXTTransformFeedback#VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT} the {@code VkCommandPool} that {@code commandBuffer} was allocated from must support graphics operations
@@ -15104,9 +15218,8 @@ public static void vkCmdWriteTimestamp(VkCommandBuffer commandBuffer, @NativeTyp
* If the {@code queryType} used to create {@code queryPool} was {@link KHRPerformanceQuery#VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR QUERY_TYPE_PERFORMANCE_QUERY_KHR}, {@code flags} must not contain {@link #VK_QUERY_RESULT_WITH_AVAILABILITY_BIT QUERY_RESULT_WITH_AVAILABILITY_BIT}, {@link #VK_QUERY_RESULT_PARTIAL_BIT QUERY_RESULT_PARTIAL_BIT} or {@link #VK_QUERY_RESULT_64_BIT QUERY_RESULT_64_BIT}
* If the {@code queryType} used to create {@code queryPool} was {@link KHRPerformanceQuery#VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR QUERY_TYPE_PERFORMANCE_QUERY_KHR}, the {@code queryPool} must have been submitted once for each pass as retrieved via a call to {@link KHRPerformanceQuery#vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR}
* {@link #vkCmdCopyQueryPoolResults CmdCopyQueryPoolResults} must not be called if the {@code queryType} used to create {@code queryPool} was {@link INTELPerformanceQuery#VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL QUERY_TYPE_PERFORMANCE_QUERY_INTEL}
- * If the {@code queryType} used to create {@code queryPool} was {@link KHRVideoQueue#VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR QUERY_TYPE_RESULT_STATUS_ONLY_KHR}, {@code flags} must include {@link KHRVideoQueue#VK_QUERY_RESULT_WITH_STATUS_BIT_KHR QUERY_RESULT_WITH_STATUS_BIT_KHR}
- * If {@code flags} includes {@link KHRVideoQueue#VK_QUERY_RESULT_WITH_STATUS_BIT_KHR QUERY_RESULT_WITH_STATUS_BIT_KHR}, it must not include {@link #VK_QUERY_RESULT_WITH_AVAILABILITY_BIT QUERY_RESULT_WITH_AVAILABILITY_BIT}
- * If the {@code queryType} used to create {@code queryPool} was {@link KHRPerformanceQuery#VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR QUERY_TYPE_PERFORMANCE_QUERY_KHR}, {@code flags} must not contain {@link KHRVideoQueue#VK_QUERY_RESULT_WITH_STATUS_BIT_KHR QUERY_RESULT_WITH_STATUS_BIT_KHR}
+ * If the {@code queryType} used to create {@code queryPool} was {@link KHRVideoQueue#VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR QUERY_TYPE_RESULT_STATUS_ONLY_KHR}, then {@code flags} must include {@link KHRVideoQueue#VK_QUERY_RESULT_WITH_STATUS_BIT_KHR QUERY_RESULT_WITH_STATUS_BIT_KHR}
+ * If {@code flags} includes {@link KHRVideoQueue#VK_QUERY_RESULT_WITH_STATUS_BIT_KHR QUERY_RESULT_WITH_STATUS_BIT_KHR}, then it must not include {@link #VK_QUERY_RESULT_WITH_AVAILABILITY_BIT QUERY_RESULT_WITH_AVAILABILITY_BIT}
* All queries used by the command must not be active
*
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VK11.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VK11.java
index cc59573838..d160496282 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VK11.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VK11.java
@@ -749,7 +749,7 @@ public class VK11 extends VK10 {
*
* See Also
*
- * {@link VkSamplerYcbcrConversionCreateInfo}
+ * {@link VkAndroidHardwareBufferFormatProperties2ANDROID}, {@link VkAndroidHardwareBufferFormatPropertiesANDROID}, {@link VkSamplerYcbcrConversionCreateInfo}
*/
public static final int
VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0,
@@ -774,7 +774,7 @@ public class VK11 extends VK10 {
*
* See Also
*
- * {@link VkSamplerYcbcrConversionCreateInfo}
+ * {@link VkAndroidHardwareBufferFormatProperties2ANDROID}, {@link VkAndroidHardwareBufferFormatPropertiesANDROID}, {@link VkSamplerYcbcrConversionCreateInfo}
*/
public static final int
VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0,
@@ -792,7 +792,7 @@ public class VK11 extends VK10 {
*
* See Also
*
- * {@link VkSamplerYcbcrConversionCreateInfo}
+ * {@link VkAndroidHardwareBufferFormatProperties2ANDROID}, {@link VkAndroidHardwareBufferFormatPropertiesANDROID}, {@link VkSamplerYcbcrConversionCreateInfo}
*/
public static final int
VK_CHROMA_LOCATION_COSITED_EVEN = 0,
@@ -830,6 +830,7 @@ public class VK11 extends VK10 {
* {@link EXTExternalMemoryHost#VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT} specifies a host pointer returned by a host memory allocation command. It does not own a reference to the underlying memory resource, and will therefore become invalid if the host memory is freed.
* {@link EXTExternalMemoryHost#VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT} specifies a host pointer to host mapped foreign memory. It does not own a reference to the underlying memory resource, and will therefore become invalid if the foreign memory is unmapped or otherwise becomes no longer available.
* {@link EXTExternalMemoryDmaBuf#VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT} is a file descriptor for a Linux dma_buf. It owns a reference to the underlying memory resource represented by its Vulkan memory object.
+ * {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID} specifies an {@code AHardwareBuffer} object defined by the Android NDK. See Android Hardware Buffers for more details of this handle type.
* {@link NVExternalMemoryRdma#VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV} is a handle to an allocation accessible by remote devices. It owns a reference to the underlying memory resource represented by its Vulkan memory object.
*
*
@@ -850,6 +851,7 @@ public class VK11 extends VK10 {
* {@link EXTExternalMemoryHost#VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT} | No restriction | No restriction |
* {@link EXTExternalMemoryHost#VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT} | No restriction | No restriction |
* {@link EXTExternalMemoryDmaBuf#VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT} | No restriction | No restriction |
+ * {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID} | No restriction | No restriction |
* {@link NVExternalMemoryRdma#VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV} | No restriction | No restriction |
*
*
@@ -894,9 +896,10 @@ public class VK11 extends VK10 {
* {@link #VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT}
* {@link #VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT}
* {@link #VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT}
+ * {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID} for images only
*
*
- * Implementations must not report {@link #VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT} for images or buffers with external handle type {@link EXTExternalMemoryHost#VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT}, or {@link EXTExternalMemoryHost#VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT}.
+ * Implementations must not report {@link #VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT} for buffers with external handle type {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID}. Implementations must not report {@link #VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT} for images or buffers with external handle type {@link EXTExternalMemoryHost#VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT}, or {@link EXTExternalMemoryHost#VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT}.
*/
public static final int
VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 0x1,
@@ -1450,7 +1453,6 @@ public static void vkCmdSetDeviceMask(VkCommandBuffer commandBuffer, @NativeType
* If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* A valid pipeline must be bound to the pipeline bind point used by this command
- * If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link VK10#VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link VK10#VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -1981,7 +1983,13 @@ public static int nvkGetPhysicalDeviceImageFormatProperties2(VkPhysicalDevice ph
*
* {@code vkGetPhysicalDeviceImageFormatProperties2} behaves similarly to {@link VK10#vkGetPhysicalDeviceImageFormatProperties GetPhysicalDeviceImageFormatProperties}, with the ability to return extended information in a {@code pNext} chain of output structures.
*
- * If the {@code pNext} chain of {@code pImageFormatInfo} includes a {@link VkVideoProfileListInfoKHR} structure with a {@code profileCount} member greater than 0, then {@code vkGetPhysicalDeviceImageFormatProperties2} returns format capabilities specific to image types used in conjunction with the specified video codec operations and corresponding video profiles. In this case {@code vkGetPhysicalDeviceImageFormatProperties2} returns one of the video-profile-specific error codes if any of the profiles specified via {@link VkVideoProfileListInfoKHR}{@code ::pProfiles} are not supported. Furthermore, if {@link VkPhysicalDeviceImageFormatInfo2}{@code ::usage} includes any image usage flags not supported by the specified video profiles then {@code vkGetPhysicalDeviceImageFormatProperties2} returns {@link KHRVideoQueue#VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR}.
+ * If the {@code pNext} chain of {@code pImageFormatInfo} includes a {@link VkVideoProfileListInfoKHR} structure with a {@code profileCount} member greater than 0, then this command returns format capabilities specific to image types used in conjunction with the specified video profiles. In this case, this command will return one of the video-profile-specific error codes if any of the profiles specified via {@link VkVideoProfileListInfoKHR}{@code ::pProfiles} are not supported. Furthermore, if {@link VkPhysicalDeviceImageFormatInfo2}{@code ::usage} includes any image usage flag not supported by the specified video profiles, then this command returns {@link KHRVideoQueue#VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR}.
+ *
+ * Valid Usage
+ *
+ *
+ * - If the {@code pNext} chain of {@code pImageFormatProperties} includes a {@link VkAndroidHardwareBufferUsageANDROID} structure, the {@code pNext} chain of {@code pImageFormatInfo} must include a {@link VkPhysicalDeviceExternalImageFormatInfo} structure with {@code handleType} set to {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID}
+ *
*
* Valid Usage (Implicit)
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VK12.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VK12.java
index 8c5c138252..c68e165e40 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VK12.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VK12.java
@@ -426,33 +426,35 @@ public class VK12 extends VK11 {
* {@link #VK_DRIVER_ID_MESA_VENUS DRIVER_ID_MESA_VENUS}
* {@link #VK_DRIVER_ID_MESA_DOZEN DRIVER_ID_MESA_DOZEN}
* {@link #VK_DRIVER_ID_MESA_NVK DRIVER_ID_MESA_NVK}
+ * {@link #VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA}
*
*/
public static final int
- VK_DRIVER_ID_AMD_PROPRIETARY = 1,
- VK_DRIVER_ID_AMD_OPEN_SOURCE = 2,
- VK_DRIVER_ID_MESA_RADV = 3,
- VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4,
- VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5,
- VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6,
- VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7,
- VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8,
- VK_DRIVER_ID_ARM_PROPRIETARY = 9,
- VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10,
- VK_DRIVER_ID_GGP_PROPRIETARY = 11,
- VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12,
- VK_DRIVER_ID_MESA_LLVMPIPE = 13,
- VK_DRIVER_ID_MOLTENVK = 14,
- VK_DRIVER_ID_COREAVI_PROPRIETARY = 15,
- VK_DRIVER_ID_JUICE_PROPRIETARY = 16,
- VK_DRIVER_ID_VERISILICON_PROPRIETARY = 17,
- VK_DRIVER_ID_MESA_TURNIP = 18,
- VK_DRIVER_ID_MESA_V3DV = 19,
- VK_DRIVER_ID_MESA_PANVK = 20,
- VK_DRIVER_ID_SAMSUNG_PROPRIETARY = 21,
- VK_DRIVER_ID_MESA_VENUS = 22,
- VK_DRIVER_ID_MESA_DOZEN = 23,
- VK_DRIVER_ID_MESA_NVK = 24;
+ VK_DRIVER_ID_AMD_PROPRIETARY = 1,
+ VK_DRIVER_ID_AMD_OPEN_SOURCE = 2,
+ VK_DRIVER_ID_MESA_RADV = 3,
+ VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4,
+ VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5,
+ VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6,
+ VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7,
+ VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8,
+ VK_DRIVER_ID_ARM_PROPRIETARY = 9,
+ VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10,
+ VK_DRIVER_ID_GGP_PROPRIETARY = 11,
+ VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12,
+ VK_DRIVER_ID_MESA_LLVMPIPE = 13,
+ VK_DRIVER_ID_MOLTENVK = 14,
+ VK_DRIVER_ID_COREAVI_PROPRIETARY = 15,
+ VK_DRIVER_ID_JUICE_PROPRIETARY = 16,
+ VK_DRIVER_ID_VERISILICON_PROPRIETARY = 17,
+ VK_DRIVER_ID_MESA_TURNIP = 18,
+ VK_DRIVER_ID_MESA_V3DV = 19,
+ VK_DRIVER_ID_MESA_PANVK = 20,
+ VK_DRIVER_ID_SAMSUNG_PROPRIETARY = 21,
+ VK_DRIVER_ID_MESA_VENUS = 22,
+ VK_DRIVER_ID_MESA_DOZEN = 23,
+ VK_DRIVER_ID_MESA_NVK = 24,
+ VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = 25;
/**
* VkShaderFloatControlsIndependence - Bitmask specifying whether, and how, shader float controls can be set separately
@@ -647,7 +649,6 @@ protected VK12() {
* If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* A valid pipeline must be bound to the pipeline bind point used by this command
- * If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link VK10#VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link VK10#VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -686,9 +687,27 @@ protected VK12() {
* If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
* If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
* If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be {@link VK10#VK_STENCIL_OP_KEEP STENCIL_OP_KEEP}
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_VIEWPORT DYNAMIC_STATE_VIEWPORT} dynamic state enabled then {@link VK10#vkCmdSetViewport CmdSetViewport} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_SCISSOR DYNAMIC_STATE_SCISSOR} dynamic state enabled then {@link VK10#vkCmdSetScissor CmdSetScissor} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_LINE_WIDTH DYNAMIC_STATE_LINE_WIDTH} dynamic state enabled then {@link VK10#vkCmdSetLineWidth CmdSetLineWidth} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BIAS DYNAMIC_STATE_DEPTH_BIAS} dynamic state enabled then {@link VK10#vkCmdSetDepthBias CmdSetDepthBias} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_BLEND_CONSTANTS DYNAMIC_STATE_BLEND_CONSTANTS} dynamic state enabled then {@link VK10#vkCmdSetBlendConstants CmdSetBlendConstants} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BOUNDS DYNAMIC_STATE_DEPTH_BOUNDS} dynamic state enabled then {@link VK10#vkCmdSetDepthBounds CmdSetDepthBounds} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK DYNAMIC_STATE_STENCIL_COMPARE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilCompareMask CmdSetStencilCompareMask} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_WRITE_MASK DYNAMIC_STATE_STENCIL_WRITE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilWriteMask CmdSetStencilWriteMask} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_REFERENCE DYNAMIC_STATE_STENCIL_REFERENCE} dynamic state enabled then {@link VK10#vkCmdSetStencilReference CmdSetStencilReference} must have been called in the current command buffer prior to this drawing command
* If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to {@link VkPhysicalDeviceMultiviewProperties}{@code ::maxMultiviewInstanceIndex}
* If the bound graphics pipeline was created with {@link VkPipelineSampleLocationsStateCreateInfoEXT}{@code ::sampleLocationsEnable} set to {@link VK10#VK_TRUE TRUE} and the current subpass has a depth/stencil attachment, then that attachment must have been created with the {@link EXTSampleLocations#VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT} bit set
* If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} dynamic state enabled then {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_CULL_MODE DYNAMIC_STATE_CULL_MODE} dynamic state enabled then {@link VK13#vkCmdSetCullMode CmdSetCullMode} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_FRONT_FACE DYNAMIC_STATE_FRONT_FACE} dynamic state enabled then {@link VK13#vkCmdSetFrontFace CmdSetFrontFace} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY DYNAMIC_STATE_PRIMITIVE_TOPOLOGY} dynamic state enabled then {@link VK13#vkCmdSetPrimitiveTopology CmdSetPrimitiveTopology} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE DYNAMIC_STATE_DEPTH_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthTestEnable CmdSetDepthTestEnable} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE DYNAMIC_STATE_DEPTH_WRITE_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthWriteEnable CmdSetDepthWriteEnable} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_COMPARE_OP DYNAMIC_STATE_DEPTH_COMPARE_OP} dynamic state enabled then {@link VK13#vkCmdSetDepthCompareOp CmdSetDepthCompareOp} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthBoundsTestEnable CmdSetDepthBoundsTestEnable} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE DYNAMIC_STATE_STENCIL_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetStencilTestEnable CmdSetStencilTestEnable} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_OP DYNAMIC_STATE_STENCIL_OP} dynamic state enabled then {@link VK13#vkCmdSetStencilOp CmdSetStencilOp} must have been called in the current command buffer prior to this drawing command
* If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::scissorCount} of the pipeline
* If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::viewportCount} of the pipeline
* If the bound graphics pipeline state was created with both the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} and {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic states enabled then both {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} and {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -716,7 +735,7 @@ protected VK12() {
* If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::colorAttachmentCount} greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must have the corresponding element of {@link VkPipelineRenderingCreateInfo}{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then {@link EXTColorWriteEnable#vkCmdSetColorWriteEnableEXT CmdSetColorWriteEnableEXT} must have been called in the current command buffer prior to this drawing command
* If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the {@link VkPipelineColorBlendStateCreateInfo}{@code ::attachmentCount} of the currently bound graphics pipeline
- * If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command for each discard rectangle in {@link VkPipelineDiscardRectangleStateCreateInfoEXT}{@code ::discardRectangleCount}
* If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
* If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
@@ -732,37 +751,38 @@ protected VK12() {
* If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline must have been created with a {@link VkGraphicsPipelineCreateInfo}{@code ::renderPass} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE}
* If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, rasterization discard must not be enabled
* If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, the bound graphics pipeline must not have been created with a non-zero value in {@link VkPipelineRasterizationStateStreamCreateInfoEXT}{@code ::rasterizationStream}
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTLineRasterization#VK_DYNAMIC_STATE_LINE_STIPPLE_EXT DYNAMIC_STATE_LINE_STIPPLE_EXT} dynamic state enabled then {@link EXTLineRasterization#vkCmdSetLineStippleEXT CmdSetLineStippleEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRepresentativeFragmentTestEnableNV CmdSetRepresentativeFragmentTestEnableNV} must have been called in the current command buffer prior to this drawing command
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} set {@code pColorBlendEnables} for any attachment to {@link VK10#VK_TRUE TRUE}, then for those attachments in the subpass the corresponding image view’s format features must contain {@link VK10#VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT}
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must follow the rules for a zero-attachment subpass
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state disabled, then the {@code samples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must be greater or equal to the {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -782,7 +802,7 @@ protected VK12() {
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link VK10#VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} set {@code coverageModulationTableEnable} to {@link VK10#VK_TRUE TRUE}, then the {@code coverageModulationTableCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
* If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
+ * If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
* If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by {@link NVCoverageReductionMode#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV}
* If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportSwizzleStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
* If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
@@ -793,6 +813,7 @@ protected VK12() {
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link VK10#VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT LINE_RASTERIZATION_MODE_DEFAULT_EXT}, then the {@code stippledRectangularLines} feature must be enabled and {@link VkPhysicalDeviceLimits}{@code ::strictLines} must be VK_TRUE
* If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must be {@link EXTConservativeRasterization#VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT}
* If the currently bound pipeline was created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link VK10#VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link VK10#VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}, then Mesh Shader Queries must not be active
+ * If dynamic state was inherited from {@link VkCommandBufferInheritanceViewportScissorInfoNV}, it must be set in the current command buffer prior to this drawing command
*
*
*
@@ -941,7 +962,6 @@ public static void vkCmdDrawIndirectCount(VkCommandBuffer commandBuffer, @Native
* - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}
* - If a descriptor is dynamically used with a {@code VkPipeline} created with {@link EXTDescriptorBuffer#VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT}, the descriptor memory must be resident
* - A valid pipeline must be bound to the pipeline bind point used by this command
- * - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
* - There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type {@link VK10#VK_IMAGE_VIEW_TYPE_3D IMAGE_VIEW_TYPE_3D}, {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE IMAGE_VIEW_TYPE_CUBE}, {@link VK10#VK_IMAGE_VIEW_TYPE_1D_ARRAY IMAGE_VIEW_TYPE_1D_ARRAY}, {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} or {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY}, in any shader stage
* - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -980,9 +1000,27 @@ public static void vkCmdDrawIndirectCount(VkCommandBuffer commandBuffer, @Native
* - If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
* - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be {@link VK10#VK_STENCIL_OP_KEEP STENCIL_OP_KEEP}
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_VIEWPORT DYNAMIC_STATE_VIEWPORT} dynamic state enabled then {@link VK10#vkCmdSetViewport CmdSetViewport} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_SCISSOR DYNAMIC_STATE_SCISSOR} dynamic state enabled then {@link VK10#vkCmdSetScissor CmdSetScissor} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_LINE_WIDTH DYNAMIC_STATE_LINE_WIDTH} dynamic state enabled then {@link VK10#vkCmdSetLineWidth CmdSetLineWidth} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BIAS DYNAMIC_STATE_DEPTH_BIAS} dynamic state enabled then {@link VK10#vkCmdSetDepthBias CmdSetDepthBias} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_BLEND_CONSTANTS DYNAMIC_STATE_BLEND_CONSTANTS} dynamic state enabled then {@link VK10#vkCmdSetBlendConstants CmdSetBlendConstants} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_DEPTH_BOUNDS DYNAMIC_STATE_DEPTH_BOUNDS} dynamic state enabled then {@link VK10#vkCmdSetDepthBounds CmdSetDepthBounds} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK DYNAMIC_STATE_STENCIL_COMPARE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilCompareMask CmdSetStencilCompareMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_WRITE_MASK DYNAMIC_STATE_STENCIL_WRITE_MASK} dynamic state enabled then {@link VK10#vkCmdSetStencilWriteMask CmdSetStencilWriteMask} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK10#VK_DYNAMIC_STATE_STENCIL_REFERENCE DYNAMIC_STATE_STENCIL_REFERENCE} dynamic state enabled then {@link VK10#vkCmdSetStencilReference CmdSetStencilReference} must have been called in the current command buffer prior to this drawing command
* - If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to {@link VkPhysicalDeviceMultiviewProperties}{@code ::maxMultiviewInstanceIndex}
* - If the bound graphics pipeline was created with {@link VkPipelineSampleLocationsStateCreateInfoEXT}{@code ::sampleLocationsEnable} set to {@link VK10#VK_TRUE TRUE} and the current subpass has a depth/stencil attachment, then that attachment must have been created with the {@link EXTSampleLocations#VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT} bit set
* - If the bound graphics pipeline state was created with the {@link EXTSampleLocations#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT} dynamic state enabled then {@link EXTSampleLocations#vkCmdSetSampleLocationsEXT CmdSetSampleLocationsEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_CULL_MODE DYNAMIC_STATE_CULL_MODE} dynamic state enabled then {@link VK13#vkCmdSetCullMode CmdSetCullMode} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_FRONT_FACE DYNAMIC_STATE_FRONT_FACE} dynamic state enabled then {@link VK13#vkCmdSetFrontFace CmdSetFrontFace} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY DYNAMIC_STATE_PRIMITIVE_TOPOLOGY} dynamic state enabled then {@link VK13#vkCmdSetPrimitiveTopology CmdSetPrimitiveTopology} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE DYNAMIC_STATE_DEPTH_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthTestEnable CmdSetDepthTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE DYNAMIC_STATE_DEPTH_WRITE_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthWriteEnable CmdSetDepthWriteEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_COMPARE_OP DYNAMIC_STATE_DEPTH_COMPARE_OP} dynamic state enabled then {@link VK13#vkCmdSetDepthCompareOp CmdSetDepthCompareOp} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetDepthBoundsTestEnable CmdSetDepthBoundsTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE DYNAMIC_STATE_STENCIL_TEST_ENABLE} dynamic state enabled then {@link VK13#vkCmdSetStencilTestEnable CmdSetStencilTestEnable} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_STENCIL_OP DYNAMIC_STATE_STENCIL_OP} dynamic state enabled then {@link VK13#vkCmdSetStencilOp CmdSetStencilOp} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::scissorCount} of the pipeline
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} dynamic state enabled, but not the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, then {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the {@link VkPipelineViewportStateCreateInfo}{@code ::viewportCount} of the pipeline
* - If the bound graphics pipeline state was created with both the {@link VK13#VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT DYNAMIC_STATE_SCISSOR_WITH_COUNT} and {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic states enabled then both {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount} and {@link VK13#vkCmdSetScissorWithCount CmdSetScissorWithCount} must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -1010,7 +1048,7 @@ public static void vkCmdDrawIndirectCount(VkCommandBuffer commandBuffer, @Native
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::colorAttachmentCount} greater than 0, then each element of the {@link VkRenderingInfo}{@code ::pColorAttachments} array with a {@code imageView} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must have the corresponding element of {@link VkPipelineRenderingCreateInfo}{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then {@link EXTColorWriteEnable#vkCmdSetColorWriteEnableEXT CmdSetColorWriteEnableEXT} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTColorWriteEnable#VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT} dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the {@link VkPipelineColorBlendStateCreateInfo}{@code ::attachmentCount} of the currently bound graphics pipeline
- * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTDiscardRectangles#VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT DYNAMIC_STATE_DISCARD_RECTANGLE_EXT} dynamic state enabled then {@link EXTDiscardRectangles#vkCmdSetDiscardRectangleEXT CmdSetDiscardRectangleEXT} must have been called in the current command buffer prior to this drawing command for each discard rectangle in {@link VkPipelineDiscardRectangleStateCreateInfoEXT}{@code ::discardRectangleCount}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pDepthAttachment→imageView} was {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering} and {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView} was not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, the value of {@link VkPipelineRenderingCreateInfo}{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create {@link VkRenderingInfo}{@code ::pStencilAttachment→imageView}
@@ -1026,37 +1064,38 @@ public static void vkCmdDrawIndirectCount(VkCommandBuffer commandBuffer, @Native
* - If the current render pass instance was begun with {@link VK13#vkCmdBeginRendering CmdBeginRendering}, the currently bound pipeline must have been created with a {@link VkGraphicsPipelineCreateInfo}{@code ::renderPass} equal to {@link VK10#VK_NULL_HANDLE NULL_HANDLE}
* - If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, rasterization discard must not be enabled
* - If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the {@link EXTPrimitivesGeneratedQuery#VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT QUERY_TYPE_PRIMITIVES_GENERATED_EXT} query is active, the bound graphics pipeline must not have been created with a non-zero value in {@link VkPipelineRasterizationStateStreamCreateInfoEXT}{@code ::rasterizationStream}
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetTessellationDomainOriginEXT CmdSetTessellationDomainOriginEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClampEnableEXT CmdSetDepthClampEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_POLYGON_MODE_EXT DYNAMIC_STATE_POLYGON_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetPolygonModeEXT CmdSetPolygonModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToCoverageEnableEXT CmdSetAlphaToCoverageEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetAlphaToOneEnableEXT CmdSetAlphaToOneEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLogicOpEnableEXT CmdSetLogicOpEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEquationEXT CmdSetColorBlendEquationEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT DYNAMIC_STATE_COLOR_WRITE_MASK_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorWriteMaskEXT CmdSetColorWriteMaskEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT DYNAMIC_STATE_RASTERIZATION_STREAM_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRasterizationStreamEXT CmdSetRasterizationStreamEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetExtraPrimitiveOverestimationSizeEXT CmdSetExtraPrimitiveOverestimationSizeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipEnableEXT CmdSetDepthClipEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetColorBlendAdvancedEXT CmdSetColorBlendAdvancedEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetProvokingVertexModeEXT CmdSetProvokingVertexModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineRasterizationModeEXT CmdSetLineRasterizationModeEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetLineStippleEnableEXT CmdSetLineStippleEnableEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTLineRasterization#VK_DYNAMIC_STATE_LINE_STIPPLE_EXT DYNAMIC_STATE_LINE_STIPPLE_EXT} dynamic state enabled then {@link EXTLineRasterization#vkCmdSetLineStippleEXT CmdSetLineStippleEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetDepthClipNegativeOneToOneEXT CmdSetDepthClipNegativeOneToOneEXT} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportWScalingEnableNV CmdSetViewportWScalingEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationModeNV CmdSetCoverageModulationModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetShadingRateImageEnableNV CmdSetShadingRateImageEnableNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetRepresentativeFragmentTestEnableNV CmdSetRepresentativeFragmentTestEnableNV} must have been called in the current command buffer prior to this drawing command
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV} dynamic state enabled then {@link EXTExtendedDynamicState3#vkCmdSetCoverageReductionModeNV CmdSetCoverageReductionModeNV} must have been called in the current command buffer prior to this drawing command
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetColorBlendEnableEXT CmdSetColorBlendEnableEXT} set {@code pColorBlendEnables} for any attachment to {@link VK10#VK_TRUE TRUE}, then for those attachments in the subpass the corresponding image view’s format features must contain {@link VK10#VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetRasterizationSamplesEXT CmdSetRasterizationSamplesEXT} must follow the rules for a zero-attachment subpass
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_MASK_EXT DYNAMIC_STATE_SAMPLE_MASK_EXT} state enabled and the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} state disabled, then the {@code samples} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleMaskEXT CmdSetSampleMaskEXT} must be greater or equal to the {@link VkPipelineMultisampleStateCreateInfo}{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -1076,7 +1115,7 @@ public static void vkCmdDrawIndirectCount(VkCommandBuffer commandBuffer, @Native
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT} state enabled, and if {@code sampleLocationsEnable} was {@link VK10#VK_TRUE TRUE} in the last call to {@link EXTExtendedDynamicState3#vkCmdSetSampleLocationsEnableEXT CmdSetSampleLocationsEnableEXT}, the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableEnableNV CmdSetCoverageModulationTableEnableNV} set {@code coverageModulationTableEnable} to {@link VK10#VK_TRUE TRUE}, then the {@code coverageModulationTableCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageModulationTableNV CmdSetCoverageModulationTableNV} must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
* - If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
+ * - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} state enabled and the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorEnableNV CmdSetCoverageToColorEnableNV} set the {@code coverageToColorEnable} to {@link VK10#VK_TRUE TRUE}, then the current subpass must have a color attachment at the location selected by the last call to {@link EXTExtendedDynamicState3#vkCmdSetCoverageToColorLocationNV CmdSetCoverageToColorLocationNV} {@code coverageToColorLocation}, with a {@code VkFormat} of {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}, {@link VK10#VK_FORMAT_R8_SINT FORMAT_R8_SINT}, {@link VK10#VK_FORMAT_R16_UINT FORMAT_R16_UINT}, {@link VK10#VK_FORMAT_R16_SINT FORMAT_R16_SINT}, {@link VK10#VK_FORMAT_R32_UINT FORMAT_R32_UINT}, or {@link VK10#VK_FORMAT_R32_SINT FORMAT_R32_SINT}
* - If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT} states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by {@link NVCoverageReductionMode#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} dynamic state enabled, but not the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic state enabled, then the bound graphics pipeline must have been created with {@link VkPipelineViewportSwizzleStateCreateInfoNV}{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
* - If the bound graphics pipeline state was created with the {@link VK13#VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT DYNAMIC_STATE_VIEWPORT_WITH_COUNT} and {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV} dynamic states enabled then the {@code viewportCount} parameter in the last call to {@link EXTExtendedDynamicState3#vkCmdSetViewportSwizzleNV CmdSetViewportSwizzleNV} must be greater than or equal to the {@code viewportCount} parameter in the last call to {@link VK13#vkCmdSetViewportWithCount CmdSetViewportWithCount}
@@ -1087,6 +1126,7 @@ public static void vkCmdDrawIndirectCount(VkCommandBuffer commandBuffer, @Native
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT} or {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT} dynamic states enabled, and if the current {@code stippledLineEnable} state is {@link VK10#VK_TRUE TRUE} and the current {@code lineRasterizationMode} state is {@link EXTLineRasterization#VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT LINE_RASTERIZATION_MODE_DEFAULT_EXT}, then the {@code stippledRectangularLines} feature must be enabled and {@link VkPhysicalDeviceLimits}{@code ::strictLines} must be VK_TRUE
* - If the bound graphics pipeline state was created with the {@link EXTExtendedDynamicState3#VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT} dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to {@link EXTExtendedDynamicState3#vkCmdSetConservativeRasterizationModeEXT CmdSetConservativeRasterizationModeEXT} must be {@link EXTConservativeRasterization#VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT}
* - If the currently bound pipeline was created with the {@link VkPipelineShaderStageCreateInfo}{@code ::stage} member of an element of {@link VkGraphicsPipelineCreateInfo}{@code ::pStages} set to {@link VK10#VK_SHADER_STAGE_VERTEX_BIT SHADER_STAGE_VERTEX_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT}, {@link VK10#VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT} or {@link VK10#VK_SHADER_STAGE_GEOMETRY_BIT SHADER_STAGE_GEOMETRY_BIT}, then Mesh Shader Queries must not be active
+ * - If dynamic state was inherited from {@link VkCommandBufferInheritanceViewportScissorInfoNV}, it must be set in the current command buffer prior to this drawing command
*
*
*
@@ -1120,6 +1160,7 @@ public static void vkCmdDrawIndirectCount(VkCommandBuffer commandBuffer, @Native
*
*
* - An index buffer must be bound
+ * - If {@code robustBufferAccess2} is not enabled,
(indexSize × (firstIndex + indexCount) + offset)
must be less than or equal to the size of the bound index buffer, with {@code indexSize} being based on the type specified by {@code indexType}, where the index buffer, {@code indexType}, and {@code offset} are specified via {@code vkCmdBindIndexBuffer}
* - {@code stride} must be a multiple of 4 and must be greater than or equal to sizeof({@link VkDrawIndexedIndirectCommand})
* - If {@code maxDrawCount} is greater than or equal to 1,
(stride × (maxDrawCount - 1) + offset + sizeof({@link VkDrawIndexedIndirectCommand}))
must be less than or equal to the size of {@code buffer}
* - If count stored in {@code countBuffer} is equal to 1,
(offset + sizeof({@link VkDrawIndexedIndirectCommand}))
must be less than or equal to the size of {@code buffer}
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VK13.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VK13.java
index 0388d89927..2ad15ddac1 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VK13.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VK13.java
@@ -577,6 +577,7 @@ public class VK13 extends VK12 {
* - {@link #VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT}
* - {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT}
* - {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT}
+ * - {@link HUAWEIClusterCullingShader#VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI}
*
*
* - {@link #VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT} specifies the fragment shader stage.
@@ -622,6 +623,7 @@ public class VK13 extends VK12 {
* - {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV}
* - {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT}
* - {@link HUAWEIInvocationMask#VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI}
+ * - {@link HUAWEIClusterCullingShader#VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI}
*
*
* {@link #VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT} specifies all operations performed by all commands supported on the queue it is used with.
@@ -631,11 +633,12 @@ public class VK13 extends VK12 {
* {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR} specifies the stage of the pipeline where the fragment shading rate attachment or shading rate image is read to determine the fragment shading rate for portions of a rasterized primitive.
* {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT} specifies the stage of the pipeline where the fragment density map is read to generate the fragment areas.
* {@link HUAWEIInvocationMask#VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI} specifies the stage of the pipeline where the invocation mask image is read by the implementation to optimize the ray dispatch.
- * {@link KHRVideoDecodeQueue#VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR} specifies the stage of the pipeline where video decode operation are performed.
- * {@link KHRVideoEncodeQueue#VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR} specifies the stage of the pipeline where video encode operation are performed.
+ * {@link KHRVideoDecodeQueue#VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR} specifies the execution of video decode operations.
+ * {@link KHRVideoEncodeQueue#VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR} specifies the execution of video encode operations.
* {@link NVOpticalFlow#VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV} specifies the stage of the pipeline where optical flow operation are performed.
* {@link HUAWEISubpassShading#VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI} specifies the subpass shading shader stage.
* {@link EXTOpacityMicromap#VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT} specifies the execution of micromap commands.
+ * {@link HUAWEIClusterCullingShader#VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI} specifies the cluster culling shader stage.
* {@link #VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT PIPELINE_STAGE_2_TOP_OF_PIPE_BIT} is equivalent to {@link #VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT} with {@code VkAccessFlags2} set to 0 when specified in the second synchronization scope, but equivalent to {@link #VK_PIPELINE_STAGE_2_NONE PIPELINE_STAGE_2_NONE} in the first scope.
* {@link #VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT} is equivalent to {@link #VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT} with {@code VkAccessFlags2} set to 0 when specified in the first synchronization scope, but equivalent to {@link #VK_PIPELINE_STAGE_2_NONE PIPELINE_STAGE_2_NONE} in the second scope.
*
@@ -726,10 +729,10 @@ public class VK13 extends VK12 {
* {@link KHRSynchronization2#VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT} specifies read access to a fragment density map attachment during dynamic fragment density map operations. Such access occurs in the {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT} pipeline stage.
* {@link KHRSynchronization2#VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR} specifies read access to a fragment shading rate attachment during rasterization. Such access occurs in the {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR} pipeline stage.
* {@link KHRSynchronization2#VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV} specifies read access to a shading rate image during rasterization. Such access occurs in the {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV} pipeline stage. It is equivalent to {@link KHRSynchronization2#VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR}.
- * {@link KHRVideoDecodeQueue#VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR ACCESS_2_VIDEO_DECODE_READ_BIT_KHR} specifies read access to an image or buffer resource as part of a video decode operation. Such access occurs in the {@link KHRVideoDecodeQueue#VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR} pipeline stage.
- * {@link KHRVideoDecodeQueue#VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR} specifies write access to an image or buffer resource as part of a video decode operation. Such access occurs in the {@link KHRVideoDecodeQueue#VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR} pipeline stage.
- * {@link KHRVideoEncodeQueue#VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR} specifies read access to an image or buffer resource as part of a video encode operation. Such access occurs in the {@link KHRVideoEncodeQueue#VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR} pipeline stage.
- * {@link KHRVideoEncodeQueue#VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR} specifies write access to an image or buffer resource as part of a video encode operation. Such access occurs in the {@link KHRVideoEncodeQueue#VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR} pipeline stage.
+ * {@link KHRVideoDecodeQueue#VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR ACCESS_2_VIDEO_DECODE_READ_BIT_KHR} specifies read access to an image or buffer resource in a video decode operation. Such access occurs in the {@link KHRVideoDecodeQueue#VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR} pipeline stage.
+ * {@link KHRVideoDecodeQueue#VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR} specifies write access to an image or buffer resource in a video decode operation. Such access occurs in the {@link KHRVideoDecodeQueue#VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR} pipeline stage.
+ * {@link KHRVideoEncodeQueue#VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR} specifies read access to an image or buffer resource in a video encode operation. Such access occurs in the {@link KHRVideoEncodeQueue#VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR} pipeline stage.
+ * {@link KHRVideoEncodeQueue#VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR} specifies write access to an image or buffer resource in a video encode operation. Such access occurs in the {@link KHRVideoEncodeQueue#VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR} pipeline stage.
* {@link EXTDescriptorBuffer#VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT} specifies read access to a descriptor buffer in any shader pipeline stage.
* {@link NVOpticalFlow#VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV ACCESS_2_OPTICAL_FLOW_READ_BIT_NV} specifies read access to an image or buffer resource as part of a optical flow operation. Such access occurs in the {@link NVOpticalFlow#VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV} pipeline stage.
* {@link NVOpticalFlow#VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV} specifies write access to an image or buffer resource as part of a optical flow operation. Such access occurs in the {@link NVOpticalFlow#VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV} pipeline stage.
@@ -832,18 +835,18 @@ public class VK13 extends VK12 {
* {@link #VK_FORMAT_FEATURE_2_DISJOINT_BIT FORMAT_FEATURE_2_DISJOINT_BIT} specifies that a multi-planar image can have the {@link VK11#VK_IMAGE_CREATE_DISJOINT_BIT IMAGE_CREATE_DISJOINT_BIT} set during image creation. An implementation must not set {@link #VK_FORMAT_FEATURE_2_DISJOINT_BIT FORMAT_FEATURE_2_DISJOINT_BIT} for single-plane formats.
* {@link EXTFragmentDensityMap#VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT} specifies that an image view can be used as a fragment density map attachment.
* {@link KHRFragmentShadingRate#VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR} specifies that an image view can be used as a fragment shading rate attachment. An implementation must not set this feature for formats with numeric type other than {@code *UINT}, or set it as a buffer feature.
- * {@link KHRVideoDecodeQueue#VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR} specifies that an image view with this format can be used as an output for video decode operations
- * {@link KHRVideoDecodeQueue#VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR} specifies that an image view with this format can be used as a DPB for video decode operations
- * {@link KHRVideoEncodeQueue#VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR} specifies that an image view with this format can be used as an input to video encode operations
- * {@link KHRVideoEncodeQueue#VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR} specifies that an image view with this format can be used as a DPB for video encode operations
+ * {@link KHRVideoDecodeQueue#VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR} specifies that an image view with this format can be used as a decode output picture in video decode operations.
+ * {@link KHRVideoDecodeQueue#VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR} specifies that an image view with this format can be used as an output reconstructed picture or an input reference picture in video decode operations.
+ * {@link KHRVideoEncodeQueue#VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR} specifies that an image view with this format can be used as an encode input picture in video encode operations.
+ * {@link KHRVideoEncodeQueue#VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR} specifies that an image view with this format can be used as an output reconstructed picture or an input reference picture in video encode operations.
*
* Note
*
- *
Specific video profiles may have additional restrictions on the format and other image creation parameters corresponding to image views used by video coding operations that can be enumerated using the {@link KHRVideoQueue#vkGetPhysicalDeviceVideoFormatPropertiesKHR GetPhysicalDeviceVideoFormatPropertiesKHR} command, as described in Enumeration of Supported Video Output, Input and DPB Formats.
+ *
Specific video profiles may have additional restrictions on the format and other image creation parameters corresponding to image views used by video coding operations that can be enumerated using the {@link KHRVideoQueue#vkGetPhysicalDeviceVideoFormatPropertiesKHR GetPhysicalDeviceVideoFormatPropertiesKHR} command.
*
*
- * {@link #VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT} specifies that image views or buffer views created with this format can be used as storage images for read operations without specifying a format.
- * {@link #VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT} specifies that image views or buffer views created with this format can be used as storage images for write operations without specifying a format.
+ * {@link #VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT} specifies that image views or buffer views created with this format can be used as storage images or storage texel buffers respectively for read operations without specifying a format.
+ * {@link #VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT} specifies that image views or buffer views created with this format can be used as storage images or storage texel buffers respectively for write operations without specifying a format.
* {@link #VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT} specifies that image views created with this format can be used for depth comparison performed by {@code OpImage*Dref*} instructions.
* {@link NVLinearColorAttachment#VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV} specifies that the format is supported as a renderable Linear Color Attachment. This bit will be set for renderable color formats in the {@code linearTilingFeatures}. This must not be set in the {@code optimalTilingFeatures} or {@code bufferFeatures} members.
* {@link QCOMImageProcessing#VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM} specifies that image views created with this format can be used as the weight image input to weight image sampling operations.
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VKCapabilitiesDevice.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VKCapabilitiesDevice.java
index 7033b363f6..f2b4023b69 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VKCapabilitiesDevice.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VKCapabilitiesDevice.java
@@ -233,6 +233,11 @@ public class VKCapabilitiesDevice {
public final long
vkGetShaderInfoAMD;
+ /** Function pointers for ANDROID_external_memory_android_hardware_buffer */
+ public final long
+ vkGetAndroidHardwareBufferPropertiesANDROID,
+ vkGetMemoryAndroidHardwareBufferANDROID;
+
/** Function pointers for EXT_buffer_device_address */
public final long
vkGetBufferDeviceAddressEXT;
@@ -459,6 +464,11 @@ public class VKCapabilitiesDevice {
vkGetRefreshCycleDurationGOOGLE,
vkGetPastPresentationTimingGOOGLE;
+ /** Function pointers for HUAWEI_cluster_culling_shader */
+ public final long
+ vkCmdDrawClusterHUAWEI,
+ vkCmdDrawClusterIndirectHUAWEI;
+
/** Function pointers for HUAWEI_invocation_mask */
public final long
vkCmdBindInvocationMaskHUAWEI;
@@ -862,6 +872,8 @@ public class VKCapabilitiesDevice {
public final boolean VK_AMD_shader_trinary_minmax;
/** When true, {@link AMDTextureGatherBiasLod} is supported. */
public final boolean VK_AMD_texture_gather_bias_lod;
+ /** When true, {@link ANDROIDExternalMemoryAndroidHardwareBuffer} is supported. */
+ public final boolean VK_ANDROID_external_memory_android_hardware_buffer;
/** When true, {@link ARMRasterizationOrderAttachmentAccess} is supported. */
public final boolean VK_ARM_rasterization_order_attachment_access;
/** When true, {@link ARMShaderCoreBuiltins} is supported. */
@@ -992,6 +1004,8 @@ public class VKCapabilitiesDevice {
public final boolean VK_EXT_pipeline_creation_cache_control;
/** When true, {@link EXTPipelineCreationFeedback} is supported. */
public final boolean VK_EXT_pipeline_creation_feedback;
+ /** When true, {@link EXTPipelineLibraryGroupHandles} is supported. */
+ public final boolean VK_EXT_pipeline_library_group_handles;
/** When true, {@link EXTPipelineProperties} is supported. */
public final boolean VK_EXT_pipeline_properties;
/** When true, {@link EXTPipelineProtectedAccess} is supported. */
@@ -1062,10 +1076,6 @@ public class VKCapabilitiesDevice {
public final boolean VK_EXT_vertex_attribute_divisor;
/** When true, {@link EXTVertexInputDynamicState} is supported. */
public final boolean VK_EXT_vertex_input_dynamic_state;
- /** When true, {@link EXTVideoDecodeH264} is supported. */
- public final boolean VK_EXT_video_decode_h264;
- /** When true, {@link EXTVideoDecodeH265} is supported. */
- public final boolean VK_EXT_video_decode_h265;
/** When true, {@link EXTVideoEncodeH264} is supported. */
public final boolean VK_EXT_video_encode_h264;
/** When true, {@link EXTVideoEncodeH265} is supported. */
@@ -1082,6 +1092,8 @@ public class VKCapabilitiesDevice {
public final boolean VK_GOOGLE_hlsl_functionality1;
/** When true, {@link GOOGLEUserType} is supported. */
public final boolean VK_GOOGLE_user_type;
+ /** When true, {@link HUAWEIClusterCullingShader} is supported. */
+ public final boolean VK_HUAWEI_cluster_culling_shader;
/** When true, {@link HUAWEIInvocationMask} is supported. */
public final boolean VK_HUAWEI_invocation_mask;
/** When true, {@link HUAWEISubpassShading} is supported. */
@@ -1236,6 +1248,10 @@ public class VKCapabilitiesDevice {
public final boolean VK_KHR_uniform_buffer_standard_layout;
/** When true, {@link KHRVariablePointers} is supported. */
public final boolean VK_KHR_variable_pointers;
+ /** When true, {@link KHRVideoDecodeH264} is supported. */
+ public final boolean VK_KHR_video_decode_h264;
+ /** When true, {@link KHRVideoDecodeH265} is supported. */
+ public final boolean VK_KHR_video_decode_h265;
/** When true, {@link KHRVideoDecodeQueue} is supported. */
public final boolean VK_KHR_video_decode_queue;
/** When true, {@link KHRVideoEncodeQueue} is supported. */
@@ -1368,7 +1384,7 @@ public class VKCapabilitiesDevice {
VKCapabilitiesDevice(FunctionProvider provider, VKCapabilitiesInstance capsInstance, int apiVersion, Set ext) {
this.apiVersion = apiVersion;
- long[] caps = new long[498];
+ long[] caps = new long[502];
Vulkan10 = check_VK10(provider, caps, ext);
Vulkan11 = check_VK11(provider, caps, ext);
@@ -1396,6 +1412,7 @@ public class VKCapabilitiesDevice {
VK_AMD_shader_info = check_AMD_shader_info(provider, caps, ext);
VK_AMD_shader_trinary_minmax = ext.contains("VK_AMD_shader_trinary_minmax");
VK_AMD_texture_gather_bias_lod = ext.contains("VK_AMD_texture_gather_bias_lod");
+ VK_ANDROID_external_memory_android_hardware_buffer = check_ANDROID_external_memory_android_hardware_buffer(provider, caps, ext);
VK_ARM_rasterization_order_attachment_access = ext.contains("VK_ARM_rasterization_order_attachment_access");
VK_ARM_shader_core_builtins = ext.contains("VK_ARM_shader_core_builtins");
VK_EXT_4444_formats = ext.contains("VK_EXT_4444_formats");
@@ -1461,6 +1478,7 @@ public class VKCapabilitiesDevice {
VK_EXT_physical_device_drm = ext.contains("VK_EXT_physical_device_drm");
VK_EXT_pipeline_creation_cache_control = ext.contains("VK_EXT_pipeline_creation_cache_control");
VK_EXT_pipeline_creation_feedback = ext.contains("VK_EXT_pipeline_creation_feedback");
+ VK_EXT_pipeline_library_group_handles = ext.contains("VK_EXT_pipeline_library_group_handles");
VK_EXT_pipeline_properties = check_EXT_pipeline_properties(provider, caps, ext);
VK_EXT_pipeline_protected_access = ext.contains("VK_EXT_pipeline_protected_access");
VK_EXT_pipeline_robustness = ext.contains("VK_EXT_pipeline_robustness");
@@ -1496,8 +1514,6 @@ public class VKCapabilitiesDevice {
VK_EXT_validation_cache = check_EXT_validation_cache(provider, caps, ext);
VK_EXT_vertex_attribute_divisor = ext.contains("VK_EXT_vertex_attribute_divisor");
VK_EXT_vertex_input_dynamic_state = check_EXT_vertex_input_dynamic_state(provider, caps, ext);
- VK_EXT_video_decode_h264 = ext.contains("VK_EXT_video_decode_h264");
- VK_EXT_video_decode_h265 = ext.contains("VK_EXT_video_decode_h265");
VK_EXT_video_encode_h264 = ext.contains("VK_EXT_video_encode_h264");
VK_EXT_video_encode_h265 = ext.contains("VK_EXT_video_encode_h265");
VK_EXT_ycbcr_2plane_444_formats = ext.contains("VK_EXT_ycbcr_2plane_444_formats");
@@ -1506,6 +1522,7 @@ public class VKCapabilitiesDevice {
VK_GOOGLE_display_timing = check_GOOGLE_display_timing(provider, caps, ext);
VK_GOOGLE_hlsl_functionality1 = ext.contains("VK_GOOGLE_hlsl_functionality1");
VK_GOOGLE_user_type = ext.contains("VK_GOOGLE_user_type");
+ VK_HUAWEI_cluster_culling_shader = check_HUAWEI_cluster_culling_shader(provider, caps, ext);
VK_HUAWEI_invocation_mask = check_HUAWEI_invocation_mask(provider, caps, ext);
VK_HUAWEI_subpass_shading = check_HUAWEI_subpass_shading(provider, caps, ext);
VK_IMG_filter_cubic = ext.contains("VK_IMG_filter_cubic");
@@ -1583,6 +1600,8 @@ public class VKCapabilitiesDevice {
VK_KHR_timeline_semaphore = check_KHR_timeline_semaphore(provider, caps, ext);
VK_KHR_uniform_buffer_standard_layout = ext.contains("VK_KHR_uniform_buffer_standard_layout");
VK_KHR_variable_pointers = ext.contains("VK_KHR_variable_pointers");
+ VK_KHR_video_decode_h264 = ext.contains("VK_KHR_video_decode_h264");
+ VK_KHR_video_decode_h265 = ext.contains("VK_KHR_video_decode_h265");
VK_KHR_video_decode_queue = check_KHR_video_decode_queue(provider, caps, ext);
VK_KHR_video_encode_queue = check_KHR_video_encode_queue(provider, caps, ext);
VK_KHR_video_queue = check_KHR_video_queue(provider, caps, ext);
@@ -1839,313 +1858,317 @@ public class VKCapabilitiesDevice {
vkCmdDrawIndirectCountAMD = caps[188];
vkCmdDrawIndexedIndirectCountAMD = caps[189];
vkGetShaderInfoAMD = caps[190];
- vkGetBufferDeviceAddressEXT = caps[191];
- vkGetCalibratedTimestampsEXT = caps[192];
- vkCmdSetColorWriteEnableEXT = caps[193];
- vkCmdBeginConditionalRenderingEXT = caps[194];
- vkCmdEndConditionalRenderingEXT = caps[195];
- vkDebugMarkerSetObjectTagEXT = caps[196];
- vkDebugMarkerSetObjectNameEXT = caps[197];
- vkCmdDebugMarkerBeginEXT = caps[198];
- vkCmdDebugMarkerEndEXT = caps[199];
- vkCmdDebugMarkerInsertEXT = caps[200];
- vkGetDescriptorSetLayoutSizeEXT = caps[201];
- vkGetDescriptorSetLayoutBindingOffsetEXT = caps[202];
- vkGetDescriptorEXT = caps[203];
- vkCmdBindDescriptorBuffersEXT = caps[204];
- vkCmdSetDescriptorBufferOffsetsEXT = caps[205];
- vkCmdBindDescriptorBufferEmbeddedSamplersEXT = caps[206];
- vkGetBufferOpaqueCaptureDescriptorDataEXT = caps[207];
- vkGetImageOpaqueCaptureDescriptorDataEXT = caps[208];
- vkGetImageViewOpaqueCaptureDescriptorDataEXT = caps[209];
- vkGetSamplerOpaqueCaptureDescriptorDataEXT = caps[210];
- vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = caps[211];
- vkGetDeviceFaultInfoEXT = caps[212];
- vkCmdSetDiscardRectangleEXT = caps[213];
- vkDisplayPowerControlEXT = caps[214];
- vkRegisterDeviceEventEXT = caps[215];
- vkRegisterDisplayEventEXT = caps[216];
- vkGetSwapchainCounterEXT = caps[217];
- vkCmdSetCullModeEXT = caps[218];
- vkCmdSetFrontFaceEXT = caps[219];
- vkCmdSetPrimitiveTopologyEXT = caps[220];
- vkCmdSetViewportWithCountEXT = caps[221];
- vkCmdSetScissorWithCountEXT = caps[222];
- vkCmdBindVertexBuffers2EXT = caps[223];
- vkCmdSetDepthTestEnableEXT = caps[224];
- vkCmdSetDepthWriteEnableEXT = caps[225];
- vkCmdSetDepthCompareOpEXT = caps[226];
- vkCmdSetDepthBoundsTestEnableEXT = caps[227];
- vkCmdSetStencilTestEnableEXT = caps[228];
- vkCmdSetStencilOpEXT = caps[229];
- vkCmdSetPatchControlPointsEXT = caps[230];
- vkCmdSetRasterizerDiscardEnableEXT = caps[231];
- vkCmdSetDepthBiasEnableEXT = caps[232];
- vkCmdSetLogicOpEXT = caps[233];
- vkCmdSetPrimitiveRestartEnableEXT = caps[234];
- vkCmdSetTessellationDomainOriginEXT = caps[235];
- vkCmdSetDepthClampEnableEXT = caps[236];
- vkCmdSetPolygonModeEXT = caps[237];
- vkCmdSetRasterizationSamplesEXT = caps[238];
- vkCmdSetSampleMaskEXT = caps[239];
- vkCmdSetAlphaToCoverageEnableEXT = caps[240];
- vkCmdSetAlphaToOneEnableEXT = caps[241];
- vkCmdSetLogicOpEnableEXT = caps[242];
- vkCmdSetColorBlendEnableEXT = caps[243];
- vkCmdSetColorBlendEquationEXT = caps[244];
- vkCmdSetColorWriteMaskEXT = caps[245];
- vkCmdSetRasterizationStreamEXT = caps[246];
- vkCmdSetConservativeRasterizationModeEXT = caps[247];
- vkCmdSetExtraPrimitiveOverestimationSizeEXT = caps[248];
- vkCmdSetDepthClipEnableEXT = caps[249];
- vkCmdSetSampleLocationsEnableEXT = caps[250];
- vkCmdSetColorBlendAdvancedEXT = caps[251];
- vkCmdSetProvokingVertexModeEXT = caps[252];
- vkCmdSetLineRasterizationModeEXT = caps[253];
- vkCmdSetLineStippleEnableEXT = caps[254];
- vkCmdSetDepthClipNegativeOneToOneEXT = caps[255];
- vkCmdSetViewportWScalingEnableNV = caps[256];
- vkCmdSetViewportSwizzleNV = caps[257];
- vkCmdSetCoverageToColorEnableNV = caps[258];
- vkCmdSetCoverageToColorLocationNV = caps[259];
- vkCmdSetCoverageModulationModeNV = caps[260];
- vkCmdSetCoverageModulationTableEnableNV = caps[261];
- vkCmdSetCoverageModulationTableNV = caps[262];
- vkCmdSetShadingRateImageEnableNV = caps[263];
- vkCmdSetRepresentativeFragmentTestEnableNV = caps[264];
- vkCmdSetCoverageReductionModeNV = caps[265];
- vkGetMemoryHostPointerPropertiesEXT = caps[266];
- vkAcquireFullScreenExclusiveModeEXT = caps[267];
- vkReleaseFullScreenExclusiveModeEXT = caps[268];
- vkGetDeviceGroupSurfacePresentModes2EXT = caps[269];
- vkSetHdrMetadataEXT = caps[270];
- vkResetQueryPoolEXT = caps[271];
- vkGetImageSubresourceLayout2EXT = caps[272];
- vkGetImageDrmFormatModifierPropertiesEXT = caps[273];
- vkCmdSetLineStippleEXT = caps[274];
- vkCmdDrawMeshTasksEXT = caps[275];
- vkCmdDrawMeshTasksIndirectEXT = caps[276];
- vkCmdDrawMeshTasksIndirectCountEXT = caps[277];
- vkExportMetalObjectsEXT = caps[278];
- vkCmdDrawMultiEXT = caps[279];
- vkCmdDrawMultiIndexedEXT = caps[280];
- vkCreateMicromapEXT = caps[281];
- vkDestroyMicromapEXT = caps[282];
- vkCmdBuildMicromapsEXT = caps[283];
- vkBuildMicromapsEXT = caps[284];
- vkCopyMicromapEXT = caps[285];
- vkCopyMicromapToMemoryEXT = caps[286];
- vkCopyMemoryToMicromapEXT = caps[287];
- vkWriteMicromapsPropertiesEXT = caps[288];
- vkCmdCopyMicromapEXT = caps[289];
- vkCmdCopyMicromapToMemoryEXT = caps[290];
- vkCmdCopyMemoryToMicromapEXT = caps[291];
- vkCmdWriteMicromapsPropertiesEXT = caps[292];
- vkGetDeviceMicromapCompatibilityEXT = caps[293];
- vkGetMicromapBuildSizesEXT = caps[294];
- vkSetDeviceMemoryPriorityEXT = caps[295];
- vkGetPipelinePropertiesEXT = caps[296];
- vkCreatePrivateDataSlotEXT = caps[297];
- vkDestroyPrivateDataSlotEXT = caps[298];
- vkSetPrivateDataEXT = caps[299];
- vkGetPrivateDataEXT = caps[300];
- vkCmdSetSampleLocationsEXT = caps[301];
- vkGetShaderModuleIdentifierEXT = caps[302];
- vkGetShaderModuleCreateInfoIdentifierEXT = caps[303];
- vkReleaseSwapchainImagesEXT = caps[304];
- vkCmdBindTransformFeedbackBuffersEXT = caps[305];
- vkCmdBeginTransformFeedbackEXT = caps[306];
- vkCmdEndTransformFeedbackEXT = caps[307];
- vkCmdBeginQueryIndexedEXT = caps[308];
- vkCmdEndQueryIndexedEXT = caps[309];
- vkCmdDrawIndirectByteCountEXT = caps[310];
- vkCreateValidationCacheEXT = caps[311];
- vkDestroyValidationCacheEXT = caps[312];
- vkMergeValidationCachesEXT = caps[313];
- vkGetValidationCacheDataEXT = caps[314];
- vkCmdSetVertexInputEXT = caps[315];
- vkGetRefreshCycleDurationGOOGLE = caps[316];
- vkGetPastPresentationTimingGOOGLE = caps[317];
- vkCmdBindInvocationMaskHUAWEI = caps[318];
- vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = caps[319];
- vkCmdSubpassShadingHUAWEI = caps[320];
- vkInitializePerformanceApiINTEL = caps[321];
- vkUninitializePerformanceApiINTEL = caps[322];
- vkCmdSetPerformanceMarkerINTEL = caps[323];
- vkCmdSetPerformanceStreamMarkerINTEL = caps[324];
- vkCmdSetPerformanceOverrideINTEL = caps[325];
- vkAcquirePerformanceConfigurationINTEL = caps[326];
- vkReleasePerformanceConfigurationINTEL = caps[327];
- vkQueueSetPerformanceConfigurationINTEL = caps[328];
- vkGetPerformanceParameterINTEL = caps[329];
- vkCreateAccelerationStructureKHR = caps[330];
- vkDestroyAccelerationStructureKHR = caps[331];
- vkCmdBuildAccelerationStructuresKHR = caps[332];
- vkCmdBuildAccelerationStructuresIndirectKHR = caps[333];
- vkBuildAccelerationStructuresKHR = caps[334];
- vkCopyAccelerationStructureKHR = caps[335];
- vkCopyAccelerationStructureToMemoryKHR = caps[336];
- vkCopyMemoryToAccelerationStructureKHR = caps[337];
- vkWriteAccelerationStructuresPropertiesKHR = caps[338];
- vkCmdCopyAccelerationStructureKHR = caps[339];
- vkCmdCopyAccelerationStructureToMemoryKHR = caps[340];
- vkCmdCopyMemoryToAccelerationStructureKHR = caps[341];
- vkGetAccelerationStructureDeviceAddressKHR = caps[342];
- vkCmdWriteAccelerationStructuresPropertiesKHR = caps[343];
- vkGetDeviceAccelerationStructureCompatibilityKHR = caps[344];
- vkGetAccelerationStructureBuildSizesKHR = caps[345];
- vkBindBufferMemory2KHR = caps[346];
- vkBindImageMemory2KHR = caps[347];
- vkGetBufferDeviceAddressKHR = caps[348];
- vkGetBufferOpaqueCaptureAddressKHR = caps[349];
- vkGetDeviceMemoryOpaqueCaptureAddressKHR = caps[350];
- vkCmdCopyBuffer2KHR = caps[351];
- vkCmdCopyImage2KHR = caps[352];
- vkCmdCopyBufferToImage2KHR = caps[353];
- vkCmdCopyImageToBuffer2KHR = caps[354];
- vkCmdBlitImage2KHR = caps[355];
- vkCmdResolveImage2KHR = caps[356];
- vkCreateRenderPass2KHR = caps[357];
- vkCmdBeginRenderPass2KHR = caps[358];
- vkCmdNextSubpass2KHR = caps[359];
- vkCmdEndRenderPass2KHR = caps[360];
- vkCreateDeferredOperationKHR = caps[361];
- vkDestroyDeferredOperationKHR = caps[362];
- vkGetDeferredOperationMaxConcurrencyKHR = caps[363];
- vkGetDeferredOperationResultKHR = caps[364];
- vkDeferredOperationJoinKHR = caps[365];
- vkCreateDescriptorUpdateTemplateKHR = caps[366];
- vkDestroyDescriptorUpdateTemplateKHR = caps[367];
- vkUpdateDescriptorSetWithTemplateKHR = caps[368];
- vkCmdPushDescriptorSetWithTemplateKHR = caps[369];
- vkGetDeviceGroupPeerMemoryFeaturesKHR = caps[370];
- vkCmdSetDeviceMaskKHR = caps[371];
- vkCmdDispatchBaseKHR = caps[372];
- vkGetDeviceGroupPresentCapabilitiesKHR = caps[373];
- vkGetDeviceGroupSurfacePresentModesKHR = caps[374];
- vkAcquireNextImage2KHR = caps[375];
- vkCreateSharedSwapchainsKHR = caps[376];
- vkCmdDrawIndirectCountKHR = caps[377];
- vkCmdDrawIndexedIndirectCountKHR = caps[378];
- vkCmdBeginRenderingKHR = caps[379];
- vkCmdEndRenderingKHR = caps[380];
- vkImportFenceFdKHR = caps[381];
- vkGetFenceFdKHR = caps[382];
- vkImportFenceWin32HandleKHR = caps[383];
- vkGetFenceWin32HandleKHR = caps[384];
- vkGetMemoryFdKHR = caps[385];
- vkGetMemoryFdPropertiesKHR = caps[386];
- vkGetMemoryWin32HandleKHR = caps[387];
- vkGetMemoryWin32HandlePropertiesKHR = caps[388];
- vkImportSemaphoreFdKHR = caps[389];
- vkGetSemaphoreFdKHR = caps[390];
- vkImportSemaphoreWin32HandleKHR = caps[391];
- vkGetSemaphoreWin32HandleKHR = caps[392];
- vkCmdSetFragmentShadingRateKHR = caps[393];
- vkGetImageMemoryRequirements2KHR = caps[394];
- vkGetBufferMemoryRequirements2KHR = caps[395];
- vkGetImageSparseMemoryRequirements2KHR = caps[396];
- vkTrimCommandPoolKHR = caps[397];
- vkGetDescriptorSetLayoutSupportKHR = caps[398];
- vkGetDeviceBufferMemoryRequirementsKHR = caps[399];
- vkGetDeviceImageMemoryRequirementsKHR = caps[400];
- vkGetDeviceImageSparseMemoryRequirementsKHR = caps[401];
- vkAcquireProfilingLockKHR = caps[402];
- vkReleaseProfilingLockKHR = caps[403];
- vkGetPipelineExecutablePropertiesKHR = caps[404];
- vkGetPipelineExecutableStatisticsKHR = caps[405];
- vkGetPipelineExecutableInternalRepresentationsKHR = caps[406];
- vkWaitForPresentKHR = caps[407];
- vkCmdPushDescriptorSetKHR = caps[408];
- vkCmdTraceRaysIndirect2KHR = caps[409];
- vkCmdTraceRaysKHR = caps[410];
- vkCreateRayTracingPipelinesKHR = caps[411];
- vkGetRayTracingShaderGroupHandlesKHR = caps[412];
- vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = caps[413];
- vkCmdTraceRaysIndirectKHR = caps[414];
- vkGetRayTracingShaderGroupStackSizeKHR = caps[415];
- vkCmdSetRayTracingPipelineStackSizeKHR = caps[416];
- vkCreateSamplerYcbcrConversionKHR = caps[417];
- vkDestroySamplerYcbcrConversionKHR = caps[418];
- vkGetSwapchainStatusKHR = caps[419];
- vkCreateSwapchainKHR = caps[420];
- vkDestroySwapchainKHR = caps[421];
- vkGetSwapchainImagesKHR = caps[422];
- vkAcquireNextImageKHR = caps[423];
- vkQueuePresentKHR = caps[424];
- vkCmdSetEvent2KHR = caps[425];
- vkCmdResetEvent2KHR = caps[426];
- vkCmdWaitEvents2KHR = caps[427];
- vkCmdPipelineBarrier2KHR = caps[428];
- vkCmdWriteTimestamp2KHR = caps[429];
- vkQueueSubmit2KHR = caps[430];
- vkCmdWriteBufferMarker2AMD = caps[431];
- vkGetQueueCheckpointData2NV = caps[432];
- vkGetSemaphoreCounterValueKHR = caps[433];
- vkWaitSemaphoresKHR = caps[434];
- vkSignalSemaphoreKHR = caps[435];
- vkCmdDecodeVideoKHR = caps[436];
- vkCmdEncodeVideoKHR = caps[437];
- vkCreateVideoSessionKHR = caps[438];
- vkDestroyVideoSessionKHR = caps[439];
- vkGetVideoSessionMemoryRequirementsKHR = caps[440];
- vkBindVideoSessionMemoryKHR = caps[441];
- vkCreateVideoSessionParametersKHR = caps[442];
- vkUpdateVideoSessionParametersKHR = caps[443];
- vkDestroyVideoSessionParametersKHR = caps[444];
- vkCmdBeginVideoCodingKHR = caps[445];
- vkCmdEndVideoCodingKHR = caps[446];
- vkCmdControlVideoCodingKHR = caps[447];
- vkCmdSetViewportWScalingNV = caps[448];
- vkCmdCopyMemoryIndirectNV = caps[449];
- vkCmdCopyMemoryToImageIndirectNV = caps[450];
- vkCmdSetCheckpointNV = caps[451];
- vkGetQueueCheckpointDataNV = caps[452];
- vkGetGeneratedCommandsMemoryRequirementsNV = caps[453];
- vkCmdPreprocessGeneratedCommandsNV = caps[454];
- vkCmdExecuteGeneratedCommandsNV = caps[455];
- vkCmdBindPipelineShaderGroupNV = caps[456];
- vkCreateIndirectCommandsLayoutNV = caps[457];
- vkDestroyIndirectCommandsLayoutNV = caps[458];
- vkGetMemoryRemoteAddressNV = caps[459];
- vkGetMemoryWin32HandleNV = caps[460];
- vkCmdSetFragmentShadingRateEnumNV = caps[461];
- vkCmdDecompressMemoryNV = caps[462];
- vkCmdDecompressMemoryIndirectCountNV = caps[463];
- vkCmdDrawMeshTasksNV = caps[464];
- vkCmdDrawMeshTasksIndirectNV = caps[465];
- vkCmdDrawMeshTasksIndirectCountNV = caps[466];
- vkCreateOpticalFlowSessionNV = caps[467];
- vkDestroyOpticalFlowSessionNV = caps[468];
- vkBindOpticalFlowSessionImageNV = caps[469];
- vkCmdOpticalFlowExecuteNV = caps[470];
- vkCreateAccelerationStructureNV = caps[471];
- vkDestroyAccelerationStructureNV = caps[472];
- vkGetAccelerationStructureMemoryRequirementsNV = caps[473];
- vkBindAccelerationStructureMemoryNV = caps[474];
- vkCmdBuildAccelerationStructureNV = caps[475];
- vkCmdCopyAccelerationStructureNV = caps[476];
- vkCmdTraceRaysNV = caps[477];
- vkCreateRayTracingPipelinesNV = caps[478];
- vkGetRayTracingShaderGroupHandlesNV = caps[479];
- vkGetAccelerationStructureHandleNV = caps[480];
- vkCmdWriteAccelerationStructuresPropertiesNV = caps[481];
- vkCompileDeferredNV = caps[482];
- vkCmdSetExclusiveScissorNV = caps[483];
- vkCmdBindShadingRateImageNV = caps[484];
- vkCmdSetViewportShadingRatePaletteNV = caps[485];
- vkCmdSetCoarseSampleOrderNV = caps[486];
- vkCreateCuModuleNVX = caps[487];
- vkCreateCuFunctionNVX = caps[488];
- vkDestroyCuModuleNVX = caps[489];
- vkDestroyCuFunctionNVX = caps[490];
- vkCmdCuLaunchKernelNVX = caps[491];
- vkGetImageViewHandleNVX = caps[492];
- vkGetImageViewAddressNVX = caps[493];
- vkGetFramebufferTilePropertiesQCOM = caps[494];
- vkGetDynamicRenderingTilePropertiesQCOM = caps[495];
- vkGetDescriptorSetLayoutHostMappingInfoVALVE = caps[496];
- vkGetDescriptorSetHostMappingVALVE = caps[497];
+ vkGetAndroidHardwareBufferPropertiesANDROID = caps[191];
+ vkGetMemoryAndroidHardwareBufferANDROID = caps[192];
+ vkGetBufferDeviceAddressEXT = caps[193];
+ vkGetCalibratedTimestampsEXT = caps[194];
+ vkCmdSetColorWriteEnableEXT = caps[195];
+ vkCmdBeginConditionalRenderingEXT = caps[196];
+ vkCmdEndConditionalRenderingEXT = caps[197];
+ vkDebugMarkerSetObjectTagEXT = caps[198];
+ vkDebugMarkerSetObjectNameEXT = caps[199];
+ vkCmdDebugMarkerBeginEXT = caps[200];
+ vkCmdDebugMarkerEndEXT = caps[201];
+ vkCmdDebugMarkerInsertEXT = caps[202];
+ vkGetDescriptorSetLayoutSizeEXT = caps[203];
+ vkGetDescriptorSetLayoutBindingOffsetEXT = caps[204];
+ vkGetDescriptorEXT = caps[205];
+ vkCmdBindDescriptorBuffersEXT = caps[206];
+ vkCmdSetDescriptorBufferOffsetsEXT = caps[207];
+ vkCmdBindDescriptorBufferEmbeddedSamplersEXT = caps[208];
+ vkGetBufferOpaqueCaptureDescriptorDataEXT = caps[209];
+ vkGetImageOpaqueCaptureDescriptorDataEXT = caps[210];
+ vkGetImageViewOpaqueCaptureDescriptorDataEXT = caps[211];
+ vkGetSamplerOpaqueCaptureDescriptorDataEXT = caps[212];
+ vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = caps[213];
+ vkGetDeviceFaultInfoEXT = caps[214];
+ vkCmdSetDiscardRectangleEXT = caps[215];
+ vkDisplayPowerControlEXT = caps[216];
+ vkRegisterDeviceEventEXT = caps[217];
+ vkRegisterDisplayEventEXT = caps[218];
+ vkGetSwapchainCounterEXT = caps[219];
+ vkCmdSetCullModeEXT = caps[220];
+ vkCmdSetFrontFaceEXT = caps[221];
+ vkCmdSetPrimitiveTopologyEXT = caps[222];
+ vkCmdSetViewportWithCountEXT = caps[223];
+ vkCmdSetScissorWithCountEXT = caps[224];
+ vkCmdBindVertexBuffers2EXT = caps[225];
+ vkCmdSetDepthTestEnableEXT = caps[226];
+ vkCmdSetDepthWriteEnableEXT = caps[227];
+ vkCmdSetDepthCompareOpEXT = caps[228];
+ vkCmdSetDepthBoundsTestEnableEXT = caps[229];
+ vkCmdSetStencilTestEnableEXT = caps[230];
+ vkCmdSetStencilOpEXT = caps[231];
+ vkCmdSetPatchControlPointsEXT = caps[232];
+ vkCmdSetRasterizerDiscardEnableEXT = caps[233];
+ vkCmdSetDepthBiasEnableEXT = caps[234];
+ vkCmdSetLogicOpEXT = caps[235];
+ vkCmdSetPrimitiveRestartEnableEXT = caps[236];
+ vkCmdSetTessellationDomainOriginEXT = caps[237];
+ vkCmdSetDepthClampEnableEXT = caps[238];
+ vkCmdSetPolygonModeEXT = caps[239];
+ vkCmdSetRasterizationSamplesEXT = caps[240];
+ vkCmdSetSampleMaskEXT = caps[241];
+ vkCmdSetAlphaToCoverageEnableEXT = caps[242];
+ vkCmdSetAlphaToOneEnableEXT = caps[243];
+ vkCmdSetLogicOpEnableEXT = caps[244];
+ vkCmdSetColorBlendEnableEXT = caps[245];
+ vkCmdSetColorBlendEquationEXT = caps[246];
+ vkCmdSetColorWriteMaskEXT = caps[247];
+ vkCmdSetRasterizationStreamEXT = caps[248];
+ vkCmdSetConservativeRasterizationModeEXT = caps[249];
+ vkCmdSetExtraPrimitiveOverestimationSizeEXT = caps[250];
+ vkCmdSetDepthClipEnableEXT = caps[251];
+ vkCmdSetSampleLocationsEnableEXT = caps[252];
+ vkCmdSetColorBlendAdvancedEXT = caps[253];
+ vkCmdSetProvokingVertexModeEXT = caps[254];
+ vkCmdSetLineRasterizationModeEXT = caps[255];
+ vkCmdSetLineStippleEnableEXT = caps[256];
+ vkCmdSetDepthClipNegativeOneToOneEXT = caps[257];
+ vkCmdSetViewportWScalingEnableNV = caps[258];
+ vkCmdSetViewportSwizzleNV = caps[259];
+ vkCmdSetCoverageToColorEnableNV = caps[260];
+ vkCmdSetCoverageToColorLocationNV = caps[261];
+ vkCmdSetCoverageModulationModeNV = caps[262];
+ vkCmdSetCoverageModulationTableEnableNV = caps[263];
+ vkCmdSetCoverageModulationTableNV = caps[264];
+ vkCmdSetShadingRateImageEnableNV = caps[265];
+ vkCmdSetRepresentativeFragmentTestEnableNV = caps[266];
+ vkCmdSetCoverageReductionModeNV = caps[267];
+ vkGetMemoryHostPointerPropertiesEXT = caps[268];
+ vkAcquireFullScreenExclusiveModeEXT = caps[269];
+ vkReleaseFullScreenExclusiveModeEXT = caps[270];
+ vkGetDeviceGroupSurfacePresentModes2EXT = caps[271];
+ vkSetHdrMetadataEXT = caps[272];
+ vkResetQueryPoolEXT = caps[273];
+ vkGetImageSubresourceLayout2EXT = caps[274];
+ vkGetImageDrmFormatModifierPropertiesEXT = caps[275];
+ vkCmdSetLineStippleEXT = caps[276];
+ vkCmdDrawMeshTasksEXT = caps[277];
+ vkCmdDrawMeshTasksIndirectEXT = caps[278];
+ vkCmdDrawMeshTasksIndirectCountEXT = caps[279];
+ vkExportMetalObjectsEXT = caps[280];
+ vkCmdDrawMultiEXT = caps[281];
+ vkCmdDrawMultiIndexedEXT = caps[282];
+ vkCreateMicromapEXT = caps[283];
+ vkDestroyMicromapEXT = caps[284];
+ vkCmdBuildMicromapsEXT = caps[285];
+ vkBuildMicromapsEXT = caps[286];
+ vkCopyMicromapEXT = caps[287];
+ vkCopyMicromapToMemoryEXT = caps[288];
+ vkCopyMemoryToMicromapEXT = caps[289];
+ vkWriteMicromapsPropertiesEXT = caps[290];
+ vkCmdCopyMicromapEXT = caps[291];
+ vkCmdCopyMicromapToMemoryEXT = caps[292];
+ vkCmdCopyMemoryToMicromapEXT = caps[293];
+ vkCmdWriteMicromapsPropertiesEXT = caps[294];
+ vkGetDeviceMicromapCompatibilityEXT = caps[295];
+ vkGetMicromapBuildSizesEXT = caps[296];
+ vkSetDeviceMemoryPriorityEXT = caps[297];
+ vkGetPipelinePropertiesEXT = caps[298];
+ vkCreatePrivateDataSlotEXT = caps[299];
+ vkDestroyPrivateDataSlotEXT = caps[300];
+ vkSetPrivateDataEXT = caps[301];
+ vkGetPrivateDataEXT = caps[302];
+ vkCmdSetSampleLocationsEXT = caps[303];
+ vkGetShaderModuleIdentifierEXT = caps[304];
+ vkGetShaderModuleCreateInfoIdentifierEXT = caps[305];
+ vkReleaseSwapchainImagesEXT = caps[306];
+ vkCmdBindTransformFeedbackBuffersEXT = caps[307];
+ vkCmdBeginTransformFeedbackEXT = caps[308];
+ vkCmdEndTransformFeedbackEXT = caps[309];
+ vkCmdBeginQueryIndexedEXT = caps[310];
+ vkCmdEndQueryIndexedEXT = caps[311];
+ vkCmdDrawIndirectByteCountEXT = caps[312];
+ vkCreateValidationCacheEXT = caps[313];
+ vkDestroyValidationCacheEXT = caps[314];
+ vkMergeValidationCachesEXT = caps[315];
+ vkGetValidationCacheDataEXT = caps[316];
+ vkCmdSetVertexInputEXT = caps[317];
+ vkGetRefreshCycleDurationGOOGLE = caps[318];
+ vkGetPastPresentationTimingGOOGLE = caps[319];
+ vkCmdDrawClusterHUAWEI = caps[320];
+ vkCmdDrawClusterIndirectHUAWEI = caps[321];
+ vkCmdBindInvocationMaskHUAWEI = caps[322];
+ vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = caps[323];
+ vkCmdSubpassShadingHUAWEI = caps[324];
+ vkInitializePerformanceApiINTEL = caps[325];
+ vkUninitializePerformanceApiINTEL = caps[326];
+ vkCmdSetPerformanceMarkerINTEL = caps[327];
+ vkCmdSetPerformanceStreamMarkerINTEL = caps[328];
+ vkCmdSetPerformanceOverrideINTEL = caps[329];
+ vkAcquirePerformanceConfigurationINTEL = caps[330];
+ vkReleasePerformanceConfigurationINTEL = caps[331];
+ vkQueueSetPerformanceConfigurationINTEL = caps[332];
+ vkGetPerformanceParameterINTEL = caps[333];
+ vkCreateAccelerationStructureKHR = caps[334];
+ vkDestroyAccelerationStructureKHR = caps[335];
+ vkCmdBuildAccelerationStructuresKHR = caps[336];
+ vkCmdBuildAccelerationStructuresIndirectKHR = caps[337];
+ vkBuildAccelerationStructuresKHR = caps[338];
+ vkCopyAccelerationStructureKHR = caps[339];
+ vkCopyAccelerationStructureToMemoryKHR = caps[340];
+ vkCopyMemoryToAccelerationStructureKHR = caps[341];
+ vkWriteAccelerationStructuresPropertiesKHR = caps[342];
+ vkCmdCopyAccelerationStructureKHR = caps[343];
+ vkCmdCopyAccelerationStructureToMemoryKHR = caps[344];
+ vkCmdCopyMemoryToAccelerationStructureKHR = caps[345];
+ vkGetAccelerationStructureDeviceAddressKHR = caps[346];
+ vkCmdWriteAccelerationStructuresPropertiesKHR = caps[347];
+ vkGetDeviceAccelerationStructureCompatibilityKHR = caps[348];
+ vkGetAccelerationStructureBuildSizesKHR = caps[349];
+ vkBindBufferMemory2KHR = caps[350];
+ vkBindImageMemory2KHR = caps[351];
+ vkGetBufferDeviceAddressKHR = caps[352];
+ vkGetBufferOpaqueCaptureAddressKHR = caps[353];
+ vkGetDeviceMemoryOpaqueCaptureAddressKHR = caps[354];
+ vkCmdCopyBuffer2KHR = caps[355];
+ vkCmdCopyImage2KHR = caps[356];
+ vkCmdCopyBufferToImage2KHR = caps[357];
+ vkCmdCopyImageToBuffer2KHR = caps[358];
+ vkCmdBlitImage2KHR = caps[359];
+ vkCmdResolveImage2KHR = caps[360];
+ vkCreateRenderPass2KHR = caps[361];
+ vkCmdBeginRenderPass2KHR = caps[362];
+ vkCmdNextSubpass2KHR = caps[363];
+ vkCmdEndRenderPass2KHR = caps[364];
+ vkCreateDeferredOperationKHR = caps[365];
+ vkDestroyDeferredOperationKHR = caps[366];
+ vkGetDeferredOperationMaxConcurrencyKHR = caps[367];
+ vkGetDeferredOperationResultKHR = caps[368];
+ vkDeferredOperationJoinKHR = caps[369];
+ vkCreateDescriptorUpdateTemplateKHR = caps[370];
+ vkDestroyDescriptorUpdateTemplateKHR = caps[371];
+ vkUpdateDescriptorSetWithTemplateKHR = caps[372];
+ vkCmdPushDescriptorSetWithTemplateKHR = caps[373];
+ vkGetDeviceGroupPeerMemoryFeaturesKHR = caps[374];
+ vkCmdSetDeviceMaskKHR = caps[375];
+ vkCmdDispatchBaseKHR = caps[376];
+ vkGetDeviceGroupPresentCapabilitiesKHR = caps[377];
+ vkGetDeviceGroupSurfacePresentModesKHR = caps[378];
+ vkAcquireNextImage2KHR = caps[379];
+ vkCreateSharedSwapchainsKHR = caps[380];
+ vkCmdDrawIndirectCountKHR = caps[381];
+ vkCmdDrawIndexedIndirectCountKHR = caps[382];
+ vkCmdBeginRenderingKHR = caps[383];
+ vkCmdEndRenderingKHR = caps[384];
+ vkImportFenceFdKHR = caps[385];
+ vkGetFenceFdKHR = caps[386];
+ vkImportFenceWin32HandleKHR = caps[387];
+ vkGetFenceWin32HandleKHR = caps[388];
+ vkGetMemoryFdKHR = caps[389];
+ vkGetMemoryFdPropertiesKHR = caps[390];
+ vkGetMemoryWin32HandleKHR = caps[391];
+ vkGetMemoryWin32HandlePropertiesKHR = caps[392];
+ vkImportSemaphoreFdKHR = caps[393];
+ vkGetSemaphoreFdKHR = caps[394];
+ vkImportSemaphoreWin32HandleKHR = caps[395];
+ vkGetSemaphoreWin32HandleKHR = caps[396];
+ vkCmdSetFragmentShadingRateKHR = caps[397];
+ vkGetImageMemoryRequirements2KHR = caps[398];
+ vkGetBufferMemoryRequirements2KHR = caps[399];
+ vkGetImageSparseMemoryRequirements2KHR = caps[400];
+ vkTrimCommandPoolKHR = caps[401];
+ vkGetDescriptorSetLayoutSupportKHR = caps[402];
+ vkGetDeviceBufferMemoryRequirementsKHR = caps[403];
+ vkGetDeviceImageMemoryRequirementsKHR = caps[404];
+ vkGetDeviceImageSparseMemoryRequirementsKHR = caps[405];
+ vkAcquireProfilingLockKHR = caps[406];
+ vkReleaseProfilingLockKHR = caps[407];
+ vkGetPipelineExecutablePropertiesKHR = caps[408];
+ vkGetPipelineExecutableStatisticsKHR = caps[409];
+ vkGetPipelineExecutableInternalRepresentationsKHR = caps[410];
+ vkWaitForPresentKHR = caps[411];
+ vkCmdPushDescriptorSetKHR = caps[412];
+ vkCmdTraceRaysIndirect2KHR = caps[413];
+ vkCmdTraceRaysKHR = caps[414];
+ vkCreateRayTracingPipelinesKHR = caps[415];
+ vkGetRayTracingShaderGroupHandlesKHR = caps[416];
+ vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = caps[417];
+ vkCmdTraceRaysIndirectKHR = caps[418];
+ vkGetRayTracingShaderGroupStackSizeKHR = caps[419];
+ vkCmdSetRayTracingPipelineStackSizeKHR = caps[420];
+ vkCreateSamplerYcbcrConversionKHR = caps[421];
+ vkDestroySamplerYcbcrConversionKHR = caps[422];
+ vkGetSwapchainStatusKHR = caps[423];
+ vkCreateSwapchainKHR = caps[424];
+ vkDestroySwapchainKHR = caps[425];
+ vkGetSwapchainImagesKHR = caps[426];
+ vkAcquireNextImageKHR = caps[427];
+ vkQueuePresentKHR = caps[428];
+ vkCmdSetEvent2KHR = caps[429];
+ vkCmdResetEvent2KHR = caps[430];
+ vkCmdWaitEvents2KHR = caps[431];
+ vkCmdPipelineBarrier2KHR = caps[432];
+ vkCmdWriteTimestamp2KHR = caps[433];
+ vkQueueSubmit2KHR = caps[434];
+ vkCmdWriteBufferMarker2AMD = caps[435];
+ vkGetQueueCheckpointData2NV = caps[436];
+ vkGetSemaphoreCounterValueKHR = caps[437];
+ vkWaitSemaphoresKHR = caps[438];
+ vkSignalSemaphoreKHR = caps[439];
+ vkCmdDecodeVideoKHR = caps[440];
+ vkCmdEncodeVideoKHR = caps[441];
+ vkCreateVideoSessionKHR = caps[442];
+ vkDestroyVideoSessionKHR = caps[443];
+ vkGetVideoSessionMemoryRequirementsKHR = caps[444];
+ vkBindVideoSessionMemoryKHR = caps[445];
+ vkCreateVideoSessionParametersKHR = caps[446];
+ vkUpdateVideoSessionParametersKHR = caps[447];
+ vkDestroyVideoSessionParametersKHR = caps[448];
+ vkCmdBeginVideoCodingKHR = caps[449];
+ vkCmdEndVideoCodingKHR = caps[450];
+ vkCmdControlVideoCodingKHR = caps[451];
+ vkCmdSetViewportWScalingNV = caps[452];
+ vkCmdCopyMemoryIndirectNV = caps[453];
+ vkCmdCopyMemoryToImageIndirectNV = caps[454];
+ vkCmdSetCheckpointNV = caps[455];
+ vkGetQueueCheckpointDataNV = caps[456];
+ vkGetGeneratedCommandsMemoryRequirementsNV = caps[457];
+ vkCmdPreprocessGeneratedCommandsNV = caps[458];
+ vkCmdExecuteGeneratedCommandsNV = caps[459];
+ vkCmdBindPipelineShaderGroupNV = caps[460];
+ vkCreateIndirectCommandsLayoutNV = caps[461];
+ vkDestroyIndirectCommandsLayoutNV = caps[462];
+ vkGetMemoryRemoteAddressNV = caps[463];
+ vkGetMemoryWin32HandleNV = caps[464];
+ vkCmdSetFragmentShadingRateEnumNV = caps[465];
+ vkCmdDecompressMemoryNV = caps[466];
+ vkCmdDecompressMemoryIndirectCountNV = caps[467];
+ vkCmdDrawMeshTasksNV = caps[468];
+ vkCmdDrawMeshTasksIndirectNV = caps[469];
+ vkCmdDrawMeshTasksIndirectCountNV = caps[470];
+ vkCreateOpticalFlowSessionNV = caps[471];
+ vkDestroyOpticalFlowSessionNV = caps[472];
+ vkBindOpticalFlowSessionImageNV = caps[473];
+ vkCmdOpticalFlowExecuteNV = caps[474];
+ vkCreateAccelerationStructureNV = caps[475];
+ vkDestroyAccelerationStructureNV = caps[476];
+ vkGetAccelerationStructureMemoryRequirementsNV = caps[477];
+ vkBindAccelerationStructureMemoryNV = caps[478];
+ vkCmdBuildAccelerationStructureNV = caps[479];
+ vkCmdCopyAccelerationStructureNV = caps[480];
+ vkCmdTraceRaysNV = caps[481];
+ vkCreateRayTracingPipelinesNV = caps[482];
+ vkGetRayTracingShaderGroupHandlesNV = caps[483];
+ vkGetAccelerationStructureHandleNV = caps[484];
+ vkCmdWriteAccelerationStructuresPropertiesNV = caps[485];
+ vkCompileDeferredNV = caps[486];
+ vkCmdSetExclusiveScissorNV = caps[487];
+ vkCmdBindShadingRateImageNV = caps[488];
+ vkCmdSetViewportShadingRatePaletteNV = caps[489];
+ vkCmdSetCoarseSampleOrderNV = caps[490];
+ vkCreateCuModuleNVX = caps[491];
+ vkCreateCuFunctionNVX = caps[492];
+ vkDestroyCuModuleNVX = caps[493];
+ vkDestroyCuFunctionNVX = caps[494];
+ vkCmdCuLaunchKernelNVX = caps[495];
+ vkGetImageViewHandleNVX = caps[496];
+ vkGetImageViewAddressNVX = caps[497];
+ vkGetFramebufferTilePropertiesQCOM = caps[498];
+ vkGetDynamicRenderingTilePropertiesQCOM = caps[499];
+ vkGetDescriptorSetLayoutHostMappingInfoVALVE = caps[500];
+ vkGetDescriptorSetHostMappingVALVE = caps[501];
}
private static boolean check_VK10(FunctionProvider provider, long[] caps, Set ext) {
@@ -2279,13 +2302,25 @@ private static boolean check_AMD_shader_info(FunctionProvider provider, long[] c
) || reportMissing("VK", "VK_AMD_shader_info");
}
+ private static boolean check_ANDROID_external_memory_android_hardware_buffer(FunctionProvider provider, long[] caps, Set ext) {
+ if (!ext.contains("VK_ANDROID_external_memory_android_hardware_buffer")) {
+ return false;
+ }
+
+ return checkFunctions(provider, caps, new int[] {
+ 191, 192
+ },
+ "vkGetAndroidHardwareBufferPropertiesANDROID", "vkGetMemoryAndroidHardwareBufferANDROID"
+ ) || reportMissing("VK", "VK_ANDROID_external_memory_android_hardware_buffer");
+ }
+
private static boolean check_EXT_buffer_device_address(FunctionProvider provider, long[] caps, Set ext) {
if (!ext.contains("VK_EXT_buffer_device_address")) {
return false;
}
return checkFunctions(provider, caps, new int[] {
- 191
+ 193
},
"vkGetBufferDeviceAddressEXT"
) || reportMissing("VK", "VK_EXT_buffer_device_address");
@@ -2297,7 +2332,7 @@ private static boolean check_EXT_calibrated_timestamps(FunctionProvider provider
}
return checkFunctions(provider, caps, new int[] {
- 192
+ 194
},
"vkGetCalibratedTimestampsEXT"
) || reportMissing("VK", "VK_EXT_calibrated_timestamps");
@@ -2309,7 +2344,7 @@ private static boolean check_EXT_color_write_enable(FunctionProvider provider, l
}
return checkFunctions(provider, caps, new int[] {
- 193
+ 195
},
"vkCmdSetColorWriteEnableEXT"
) || reportMissing("VK", "VK_EXT_color_write_enable");
@@ -2321,7 +2356,7 @@ private static boolean check_EXT_conditional_rendering(FunctionProvider provider
}
return checkFunctions(provider, caps, new int[] {
- 194, 195
+ 196, 197
},
"vkCmdBeginConditionalRenderingEXT", "vkCmdEndConditionalRenderingEXT"
) || reportMissing("VK", "VK_EXT_conditional_rendering");
@@ -2333,7 +2368,7 @@ private static boolean check_EXT_debug_marker(FunctionProvider provider, long[]
}
return checkFunctions(provider, caps, new int[] {
- 196, 197, 198, 199, 200
+ 198, 199, 200, 201, 202
},
"vkDebugMarkerSetObjectTagEXT", "vkDebugMarkerSetObjectNameEXT", "vkCmdDebugMarkerBeginEXT", "vkCmdDebugMarkerEndEXT", "vkCmdDebugMarkerInsertEXT"
) || reportMissing("VK", "VK_EXT_debug_marker");
@@ -2347,7 +2382,7 @@ private static boolean check_EXT_descriptor_buffer(FunctionProvider provider, lo
int flag0 = (ext.contains("VK_KHR_acceleration_structure") && ext.contains("VK_NV_ray_tracing")) ? 0 : Integer.MIN_VALUE;
return checkFunctions(provider, caps, new int[] {
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, flag0 + 211
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, flag0 + 213
},
"vkGetDescriptorSetLayoutSizeEXT", "vkGetDescriptorSetLayoutBindingOffsetEXT", "vkGetDescriptorEXT", "vkCmdBindDescriptorBuffersEXT",
"vkCmdSetDescriptorBufferOffsetsEXT", "vkCmdBindDescriptorBufferEmbeddedSamplersEXT", "vkGetBufferOpaqueCaptureDescriptorDataEXT",
@@ -2362,7 +2397,7 @@ private static boolean check_EXT_device_fault(FunctionProvider provider, long[]
}
return checkFunctions(provider, caps, new int[] {
- 212
+ 214
},
"vkGetDeviceFaultInfoEXT"
) || reportMissing("VK", "VK_EXT_device_fault");
@@ -2374,7 +2409,7 @@ private static boolean check_EXT_discard_rectangles(FunctionProvider provider, l
}
return checkFunctions(provider, caps, new int[] {
- 213
+ 215
},
"vkCmdSetDiscardRectangleEXT"
) || reportMissing("VK", "VK_EXT_discard_rectangles");
@@ -2386,7 +2421,7 @@ private static boolean check_EXT_display_control(FunctionProvider provider, long
}
return checkFunctions(provider, caps, new int[] {
- 214, 215, 216, 217
+ 216, 217, 218, 219
},
"vkDisplayPowerControlEXT", "vkRegisterDeviceEventEXT", "vkRegisterDisplayEventEXT", "vkGetSwapchainCounterEXT"
) || reportMissing("VK", "VK_EXT_display_control");
@@ -2398,7 +2433,7 @@ private static boolean check_EXT_extended_dynamic_state(FunctionProvider provide
}
return checkFunctions(provider, caps, new int[] {
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231
},
"vkCmdSetCullModeEXT", "vkCmdSetFrontFaceEXT", "vkCmdSetPrimitiveTopologyEXT", "vkCmdSetViewportWithCountEXT", "vkCmdSetScissorWithCountEXT",
"vkCmdBindVertexBuffers2EXT", "vkCmdSetDepthTestEnableEXT", "vkCmdSetDepthWriteEnableEXT", "vkCmdSetDepthCompareOpEXT",
@@ -2412,7 +2447,7 @@ private static boolean check_EXT_extended_dynamic_state2(FunctionProvider provid
}
return checkFunctions(provider, caps, new int[] {
- 230, 231, 232, 233, 234
+ 232, 233, 234, 235, 236
},
"vkCmdSetPatchControlPointsEXT", "vkCmdSetRasterizerDiscardEnableEXT", "vkCmdSetDepthBiasEnableEXT", "vkCmdSetLogicOpEXT",
"vkCmdSetPrimitiveRestartEnableEXT"
@@ -2425,8 +2460,8 @@ private static boolean check_EXT_extended_dynamic_state3(FunctionProvider provid
}
return checkFunctions(provider, caps, new int[] {
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267
},
"vkCmdSetTessellationDomainOriginEXT", "vkCmdSetDepthClampEnableEXT", "vkCmdSetPolygonModeEXT", "vkCmdSetRasterizationSamplesEXT",
"vkCmdSetSampleMaskEXT", "vkCmdSetAlphaToCoverageEnableEXT", "vkCmdSetAlphaToOneEnableEXT", "vkCmdSetLogicOpEnableEXT",
@@ -2446,7 +2481,7 @@ private static boolean check_EXT_external_memory_host(FunctionProvider provider,
}
return checkFunctions(provider, caps, new int[] {
- 266
+ 268
},
"vkGetMemoryHostPointerPropertiesEXT"
) || reportMissing("VK", "VK_EXT_external_memory_host");
@@ -2460,7 +2495,7 @@ private static boolean check_EXT_full_screen_exclusive(FunctionProvider provider
int flag0 = ext.contains("VK_KHR_device_group") || ext.contains("Vulkan11") ? 0 : Integer.MIN_VALUE;
return checkFunctions(provider, caps, new int[] {
- 267, 268, flag0 + 269
+ 269, 270, flag0 + 271
},
"vkAcquireFullScreenExclusiveModeEXT", "vkReleaseFullScreenExclusiveModeEXT", "vkGetDeviceGroupSurfacePresentModes2EXT"
) || reportMissing("VK", "VK_EXT_full_screen_exclusive");
@@ -2472,7 +2507,7 @@ private static boolean check_EXT_hdr_metadata(FunctionProvider provider, long[]
}
return checkFunctions(provider, caps, new int[] {
- 270
+ 272
},
"vkSetHdrMetadataEXT"
) || reportMissing("VK", "VK_EXT_hdr_metadata");
@@ -2484,7 +2519,7 @@ private static boolean check_EXT_host_query_reset(FunctionProvider provider, lon
}
return checkFunctions(provider, caps, new int[] {
- 271
+ 273
},
"vkResetQueryPoolEXT"
) || reportMissing("VK", "VK_EXT_host_query_reset");
@@ -2496,7 +2531,7 @@ private static boolean check_EXT_image_compression_control(FunctionProvider prov
}
return checkFunctions(provider, caps, new int[] {
- 272
+ 274
},
"vkGetImageSubresourceLayout2EXT"
) || reportMissing("VK", "VK_EXT_image_compression_control");
@@ -2508,7 +2543,7 @@ private static boolean check_EXT_image_drm_format_modifier(FunctionProvider prov
}
return checkFunctions(provider, caps, new int[] {
- 273
+ 275
},
"vkGetImageDrmFormatModifierPropertiesEXT"
) || reportMissing("VK", "VK_EXT_image_drm_format_modifier");
@@ -2520,7 +2555,7 @@ private static boolean check_EXT_line_rasterization(FunctionProvider provider, l
}
return checkFunctions(provider, caps, new int[] {
- 274
+ 276
},
"vkCmdSetLineStippleEXT"
) || reportMissing("VK", "VK_EXT_line_rasterization");
@@ -2532,7 +2567,7 @@ private static boolean check_EXT_mesh_shader(FunctionProvider provider, long[] c
}
return checkFunctions(provider, caps, new int[] {
- 275, 276, 277
+ 277, 278, 279
},
"vkCmdDrawMeshTasksEXT", "vkCmdDrawMeshTasksIndirectEXT", "vkCmdDrawMeshTasksIndirectCountEXT"
) || reportMissing("VK", "VK_EXT_mesh_shader");
@@ -2544,7 +2579,7 @@ private static boolean check_EXT_metal_objects(FunctionProvider provider, long[]
}
return checkFunctions(provider, caps, new int[] {
- 278
+ 280
},
"vkExportMetalObjectsEXT"
) || reportMissing("VK", "VK_EXT_metal_objects");
@@ -2556,7 +2591,7 @@ private static boolean check_EXT_multi_draw(FunctionProvider provider, long[] ca
}
return checkFunctions(provider, caps, new int[] {
- 279, 280
+ 281, 282
},
"vkCmdDrawMultiEXT", "vkCmdDrawMultiIndexedEXT"
) || reportMissing("VK", "VK_EXT_multi_draw");
@@ -2568,7 +2603,7 @@ private static boolean check_EXT_opacity_micromap(FunctionProvider provider, lon
}
return checkFunctions(provider, caps, new int[] {
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294
+ 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296
},
"vkCreateMicromapEXT", "vkDestroyMicromapEXT", "vkCmdBuildMicromapsEXT", "vkBuildMicromapsEXT", "vkCopyMicromapEXT", "vkCopyMicromapToMemoryEXT",
"vkCopyMemoryToMicromapEXT", "vkWriteMicromapsPropertiesEXT", "vkCmdCopyMicromapEXT", "vkCmdCopyMicromapToMemoryEXT",
@@ -2582,7 +2617,7 @@ private static boolean check_EXT_pageable_device_local_memory(FunctionProvider p
}
return checkFunctions(provider, caps, new int[] {
- 295
+ 297
},
"vkSetDeviceMemoryPriorityEXT"
) || reportMissing("VK", "VK_EXT_pageable_device_local_memory");
@@ -2594,7 +2629,7 @@ private static boolean check_EXT_pipeline_properties(FunctionProvider provider,
}
return checkFunctions(provider, caps, new int[] {
- 296
+ 298
},
"vkGetPipelinePropertiesEXT"
) || reportMissing("VK", "VK_EXT_pipeline_properties");
@@ -2606,7 +2641,7 @@ private static boolean check_EXT_private_data(FunctionProvider provider, long[]
}
return checkFunctions(provider, caps, new int[] {
- 297, 298, 299, 300
+ 299, 300, 301, 302
},
"vkCreatePrivateDataSlotEXT", "vkDestroyPrivateDataSlotEXT", "vkSetPrivateDataEXT", "vkGetPrivateDataEXT"
) || reportMissing("VK", "VK_EXT_private_data");
@@ -2618,7 +2653,7 @@ private static boolean check_EXT_sample_locations(FunctionProvider provider, lon
}
return checkFunctions(provider, caps, new int[] {
- 301
+ 303
},
"vkCmdSetSampleLocationsEXT"
) || reportMissing("VK", "VK_EXT_sample_locations");
@@ -2630,7 +2665,7 @@ private static boolean check_EXT_shader_module_identifier(FunctionProvider provi
}
return checkFunctions(provider, caps, new int[] {
- 302, 303
+ 304, 305
},
"vkGetShaderModuleIdentifierEXT", "vkGetShaderModuleCreateInfoIdentifierEXT"
) || reportMissing("VK", "VK_EXT_shader_module_identifier");
@@ -2642,7 +2677,7 @@ private static boolean check_EXT_swapchain_maintenance1(FunctionProvider provide
}
return checkFunctions(provider, caps, new int[] {
- 304
+ 306
},
"vkReleaseSwapchainImagesEXT"
) || reportMissing("VK", "VK_EXT_swapchain_maintenance1");
@@ -2654,7 +2689,7 @@ private static boolean check_EXT_transform_feedback(FunctionProvider provider, l
}
return checkFunctions(provider, caps, new int[] {
- 305, 306, 307, 308, 309, 310
+ 307, 308, 309, 310, 311, 312
},
"vkCmdBindTransformFeedbackBuffersEXT", "vkCmdBeginTransformFeedbackEXT", "vkCmdEndTransformFeedbackEXT", "vkCmdBeginQueryIndexedEXT",
"vkCmdEndQueryIndexedEXT", "vkCmdDrawIndirectByteCountEXT"
@@ -2667,7 +2702,7 @@ private static boolean check_EXT_validation_cache(FunctionProvider provider, lon
}
return checkFunctions(provider, caps, new int[] {
- 311, 312, 313, 314
+ 313, 314, 315, 316
},
"vkCreateValidationCacheEXT", "vkDestroyValidationCacheEXT", "vkMergeValidationCachesEXT", "vkGetValidationCacheDataEXT"
) || reportMissing("VK", "VK_EXT_validation_cache");
@@ -2679,7 +2714,7 @@ private static boolean check_EXT_vertex_input_dynamic_state(FunctionProvider pro
}
return checkFunctions(provider, caps, new int[] {
- 315
+ 317
},
"vkCmdSetVertexInputEXT"
) || reportMissing("VK", "VK_EXT_vertex_input_dynamic_state");
@@ -2691,19 +2726,31 @@ private static boolean check_GOOGLE_display_timing(FunctionProvider provider, lo
}
return checkFunctions(provider, caps, new int[] {
- 316, 317
+ 318, 319
},
"vkGetRefreshCycleDurationGOOGLE", "vkGetPastPresentationTimingGOOGLE"
) || reportMissing("VK", "VK_GOOGLE_display_timing");
}
+ private static boolean check_HUAWEI_cluster_culling_shader(FunctionProvider provider, long[] caps, Set ext) {
+ if (!ext.contains("VK_HUAWEI_cluster_culling_shader")) {
+ return false;
+ }
+
+ return checkFunctions(provider, caps, new int[] {
+ 320, 321
+ },
+ "vkCmdDrawClusterHUAWEI", "vkCmdDrawClusterIndirectHUAWEI"
+ ) || reportMissing("VK", "VK_HUAWEI_cluster_culling_shader");
+ }
+
private static boolean check_HUAWEI_invocation_mask(FunctionProvider provider, long[] caps, Set ext) {
if (!ext.contains("VK_HUAWEI_invocation_mask")) {
return false;
}
return checkFunctions(provider, caps, new int[] {
- 318
+ 322
},
"vkCmdBindInvocationMaskHUAWEI"
) || reportMissing("VK", "VK_HUAWEI_invocation_mask");
@@ -2715,7 +2762,7 @@ private static boolean check_HUAWEI_subpass_shading(FunctionProvider provider, l
}
return checkFunctions(provider, caps, new int[] {
- 319, 320
+ 323, 324
},
"vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI", "vkCmdSubpassShadingHUAWEI"
) || reportMissing("VK", "VK_HUAWEI_subpass_shading");
@@ -2727,7 +2774,7 @@ private static boolean check_INTEL_performance_query(FunctionProvider provider,
}
return checkFunctions(provider, caps, new int[] {
- 321, 322, 323, 324, 325, 326, 327, 328, 329
+ 325, 326, 327, 328, 329, 330, 331, 332, 333
},
"vkInitializePerformanceApiINTEL", "vkUninitializePerformanceApiINTEL", "vkCmdSetPerformanceMarkerINTEL", "vkCmdSetPerformanceStreamMarkerINTEL",
"vkCmdSetPerformanceOverrideINTEL", "vkAcquirePerformanceConfigurationINTEL", "vkReleasePerformanceConfigurationINTEL",
@@ -2741,7 +2788,7 @@ private static boolean check_KHR_acceleration_structure(FunctionProvider provide
}
return checkFunctions(provider, caps, new int[] {
- 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349
},
"vkCreateAccelerationStructureKHR", "vkDestroyAccelerationStructureKHR", "vkCmdBuildAccelerationStructuresKHR",
"vkCmdBuildAccelerationStructuresIndirectKHR", "vkBuildAccelerationStructuresKHR", "vkCopyAccelerationStructureKHR",
@@ -2758,7 +2805,7 @@ private static boolean check_KHR_bind_memory2(FunctionProvider provider, long[]
}
return checkFunctions(provider, caps, new int[] {
- 346, 347
+ 350, 351
},
"vkBindBufferMemory2KHR", "vkBindImageMemory2KHR"
) || reportMissing("VK", "VK_KHR_bind_memory2");
@@ -2770,7 +2817,7 @@ private static boolean check_KHR_buffer_device_address(FunctionProvider provider
}
return checkFunctions(provider, caps, new int[] {
- 348, 349, 350
+ 352, 353, 354
},
"vkGetBufferDeviceAddressKHR", "vkGetBufferOpaqueCaptureAddressKHR", "vkGetDeviceMemoryOpaqueCaptureAddressKHR"
) || reportMissing("VK", "VK_KHR_buffer_device_address");
@@ -2782,7 +2829,7 @@ private static boolean check_KHR_copy_commands2(FunctionProvider provider, long[
}
return checkFunctions(provider, caps, new int[] {
- 351, 352, 353, 354, 355, 356
+ 355, 356, 357, 358, 359, 360
},
"vkCmdCopyBuffer2KHR", "vkCmdCopyImage2KHR", "vkCmdCopyBufferToImage2KHR", "vkCmdCopyImageToBuffer2KHR", "vkCmdBlitImage2KHR",
"vkCmdResolveImage2KHR"
@@ -2795,7 +2842,7 @@ private static boolean check_KHR_create_renderpass2(FunctionProvider provider, l
}
return checkFunctions(provider, caps, new int[] {
- 357, 358, 359, 360
+ 361, 362, 363, 364
},
"vkCreateRenderPass2KHR", "vkCmdBeginRenderPass2KHR", "vkCmdNextSubpass2KHR", "vkCmdEndRenderPass2KHR"
) || reportMissing("VK", "VK_KHR_create_renderpass2");
@@ -2807,7 +2854,7 @@ private static boolean check_KHR_deferred_host_operations(FunctionProvider provi
}
return checkFunctions(provider, caps, new int[] {
- 361, 362, 363, 364, 365
+ 365, 366, 367, 368, 369
},
"vkCreateDeferredOperationKHR", "vkDestroyDeferredOperationKHR", "vkGetDeferredOperationMaxConcurrencyKHR", "vkGetDeferredOperationResultKHR",
"vkDeferredOperationJoinKHR"
@@ -2822,7 +2869,7 @@ private static boolean check_KHR_descriptor_update_template(FunctionProvider pro
int flag0 = ext.contains("VK_KHR_push_descriptor") ? 0 : Integer.MIN_VALUE;
return checkFunctions(provider, caps, new int[] {
- 366, 367, 368, flag0 + 369
+ 370, 371, 372, flag0 + 373
},
"vkCreateDescriptorUpdateTemplateKHR", "vkDestroyDescriptorUpdateTemplateKHR", "vkUpdateDescriptorSetWithTemplateKHR",
"vkCmdPushDescriptorSetWithTemplateKHR"
@@ -2838,7 +2885,7 @@ private static boolean check_KHR_device_group(FunctionProvider provider, long[]
int flag2 = ext.contains("VK_KHR_swapchain") ? 0 : Integer.MIN_VALUE;
return checkFunctions(provider, caps, new int[] {
- 370, 371, 372, flag0 + 373, flag0 + 374, flag2 + 375
+ 374, 375, 376, flag0 + 377, flag0 + 378, flag2 + 379
},
"vkGetDeviceGroupPeerMemoryFeaturesKHR", "vkCmdSetDeviceMaskKHR", "vkCmdDispatchBaseKHR", "vkGetDeviceGroupPresentCapabilitiesKHR",
"vkGetDeviceGroupSurfacePresentModesKHR", "vkAcquireNextImage2KHR"
@@ -2851,7 +2898,7 @@ private static boolean check_KHR_display_swapchain(FunctionProvider provider, lo
}
return checkFunctions(provider, caps, new int[] {
- 376
+ 380
},
"vkCreateSharedSwapchainsKHR"
) || reportMissing("VK", "VK_KHR_display_swapchain");
@@ -2863,7 +2910,7 @@ private static boolean check_KHR_draw_indirect_count(FunctionProvider provider,
}
return checkFunctions(provider, caps, new int[] {
- 377, 378
+ 381, 382
},
"vkCmdDrawIndirectCountKHR", "vkCmdDrawIndexedIndirectCountKHR"
) || reportMissing("VK", "VK_KHR_draw_indirect_count");
@@ -2875,7 +2922,7 @@ private static boolean check_KHR_dynamic_rendering(FunctionProvider provider, lo
}
return checkFunctions(provider, caps, new int[] {
- 379, 380
+ 383, 384
},
"vkCmdBeginRenderingKHR", "vkCmdEndRenderingKHR"
) || reportMissing("VK", "VK_KHR_dynamic_rendering");
@@ -2887,7 +2934,7 @@ private static boolean check_KHR_external_fence_fd(FunctionProvider provider, lo
}
return checkFunctions(provider, caps, new int[] {
- 381, 382
+ 385, 386
},
"vkImportFenceFdKHR", "vkGetFenceFdKHR"
) || reportMissing("VK", "VK_KHR_external_fence_fd");
@@ -2899,7 +2946,7 @@ private static boolean check_KHR_external_fence_win32(FunctionProvider provider,
}
return checkFunctions(provider, caps, new int[] {
- 383, 384
+ 387, 388
},
"vkImportFenceWin32HandleKHR", "vkGetFenceWin32HandleKHR"
) || reportMissing("VK", "VK_KHR_external_fence_win32");
@@ -2911,7 +2958,7 @@ private static boolean check_KHR_external_memory_fd(FunctionProvider provider, l
}
return checkFunctions(provider, caps, new int[] {
- 385, 386
+ 389, 390
},
"vkGetMemoryFdKHR", "vkGetMemoryFdPropertiesKHR"
) || reportMissing("VK", "VK_KHR_external_memory_fd");
@@ -2923,7 +2970,7 @@ private static boolean check_KHR_external_memory_win32(FunctionProvider provider
}
return checkFunctions(provider, caps, new int[] {
- 387, 388
+ 391, 392
},
"vkGetMemoryWin32HandleKHR", "vkGetMemoryWin32HandlePropertiesKHR"
) || reportMissing("VK", "VK_KHR_external_memory_win32");
@@ -2935,7 +2982,7 @@ private static boolean check_KHR_external_semaphore_fd(FunctionProvider provider
}
return checkFunctions(provider, caps, new int[] {
- 389, 390
+ 393, 394
},
"vkImportSemaphoreFdKHR", "vkGetSemaphoreFdKHR"
) || reportMissing("VK", "VK_KHR_external_semaphore_fd");
@@ -2947,7 +2994,7 @@ private static boolean check_KHR_external_semaphore_win32(FunctionProvider provi
}
return checkFunctions(provider, caps, new int[] {
- 391, 392
+ 395, 396
},
"vkImportSemaphoreWin32HandleKHR", "vkGetSemaphoreWin32HandleKHR"
) || reportMissing("VK", "VK_KHR_external_semaphore_win32");
@@ -2959,7 +3006,7 @@ private static boolean check_KHR_fragment_shading_rate(FunctionProvider provider
}
return checkFunctions(provider, caps, new int[] {
- 393
+ 397
},
"vkCmdSetFragmentShadingRateKHR"
) || reportMissing("VK", "VK_KHR_fragment_shading_rate");
@@ -2971,7 +3018,7 @@ private static boolean check_KHR_get_memory_requirements2(FunctionProvider provi
}
return checkFunctions(provider, caps, new int[] {
- 394, 395, 396
+ 398, 399, 400
},
"vkGetImageMemoryRequirements2KHR", "vkGetBufferMemoryRequirements2KHR", "vkGetImageSparseMemoryRequirements2KHR"
) || reportMissing("VK", "VK_KHR_get_memory_requirements2");
@@ -2983,7 +3030,7 @@ private static boolean check_KHR_maintenance1(FunctionProvider provider, long[]
}
return checkFunctions(provider, caps, new int[] {
- 397
+ 401
},
"vkTrimCommandPoolKHR"
) || reportMissing("VK", "VK_KHR_maintenance1");
@@ -2995,7 +3042,7 @@ private static boolean check_KHR_maintenance3(FunctionProvider provider, long[]
}
return checkFunctions(provider, caps, new int[] {
- 398
+ 402
},
"vkGetDescriptorSetLayoutSupportKHR"
) || reportMissing("VK", "VK_KHR_maintenance3");
@@ -3007,7 +3054,7 @@ private static boolean check_KHR_maintenance4(FunctionProvider provider, long[]
}
return checkFunctions(provider, caps, new int[] {
- 399, 400, 401
+ 403, 404, 405
},
"vkGetDeviceBufferMemoryRequirementsKHR", "vkGetDeviceImageMemoryRequirementsKHR", "vkGetDeviceImageSparseMemoryRequirementsKHR"
) || reportMissing("VK", "VK_KHR_maintenance4");
@@ -3019,7 +3066,7 @@ private static boolean check_KHR_performance_query(FunctionProvider provider, lo
}
return checkFunctions(provider, caps, new int[] {
- 402, 403
+ 406, 407
},
"vkAcquireProfilingLockKHR", "vkReleaseProfilingLockKHR"
) || reportMissing("VK", "VK_KHR_performance_query");
@@ -3031,7 +3078,7 @@ private static boolean check_KHR_pipeline_executable_properties(FunctionProvider
}
return checkFunctions(provider, caps, new int[] {
- 404, 405, 406
+ 408, 409, 410
},
"vkGetPipelineExecutablePropertiesKHR", "vkGetPipelineExecutableStatisticsKHR", "vkGetPipelineExecutableInternalRepresentationsKHR"
) || reportMissing("VK", "VK_KHR_pipeline_executable_properties");
@@ -3043,7 +3090,7 @@ private static boolean check_KHR_present_wait(FunctionProvider provider, long[]
}
return checkFunctions(provider, caps, new int[] {
- 407
+ 411
},
"vkWaitForPresentKHR"
) || reportMissing("VK", "VK_KHR_present_wait");
@@ -3057,7 +3104,7 @@ private static boolean check_KHR_push_descriptor(FunctionProvider provider, long
int flag0 = ext.contains("Vulkan11") || ext.contains("VK_KHR_descriptor_update_template") ? 0 : Integer.MIN_VALUE;
return checkFunctions(provider, caps, new int[] {
- 408, flag0 + 369
+ 412, flag0 + 373
},
"vkCmdPushDescriptorSetKHR", "vkCmdPushDescriptorSetWithTemplateKHR"
) || reportMissing("VK", "VK_KHR_push_descriptor");
@@ -3071,7 +3118,7 @@ private static boolean check_KHR_ray_tracing_maintenance1(FunctionProvider provi
int flag0 = ext.contains("VK_KHR_ray_tracing_pipeline") ? 0 : Integer.MIN_VALUE;
return checkFunctions(provider, caps, new int[] {
- flag0 + 409
+ flag0 + 413
},
"vkCmdTraceRaysIndirect2KHR"
) || reportMissing("VK", "VK_KHR_ray_tracing_maintenance1");
@@ -3083,7 +3130,7 @@ private static boolean check_KHR_ray_tracing_pipeline(FunctionProvider provider,
}
return checkFunctions(provider, caps, new int[] {
- 410, 411, 412, 413, 414, 415, 416
+ 414, 415, 416, 417, 418, 419, 420
},
"vkCmdTraceRaysKHR", "vkCreateRayTracingPipelinesKHR", "vkGetRayTracingShaderGroupHandlesKHR", "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR",
"vkCmdTraceRaysIndirectKHR", "vkGetRayTracingShaderGroupStackSizeKHR", "vkCmdSetRayTracingPipelineStackSizeKHR"
@@ -3096,7 +3143,7 @@ private static boolean check_KHR_sampler_ycbcr_conversion(FunctionProvider provi
}
return checkFunctions(provider, caps, new int[] {
- 417, 418
+ 421, 422
},
"vkCreateSamplerYcbcrConversionKHR", "vkDestroySamplerYcbcrConversionKHR"
) || reportMissing("VK", "VK_KHR_sampler_ycbcr_conversion");
@@ -3108,7 +3155,7 @@ private static boolean check_KHR_shared_presentable_image(FunctionProvider provi
}
return checkFunctions(provider, caps, new int[] {
- 419
+ 423
},
"vkGetSwapchainStatusKHR"
) || reportMissing("VK", "VK_KHR_shared_presentable_image");
@@ -3122,7 +3169,7 @@ private static boolean check_KHR_swapchain(FunctionProvider provider, long[] cap
int flag0 = ext.contains("Vulkan11") ? 0 : Integer.MIN_VALUE;
return checkFunctions(provider, caps, new int[] {
- 420, 421, 422, 423, 424, flag0 + 373, flag0 + 374, flag0 + 375
+ 424, 425, 426, 427, 428, flag0 + 377, flag0 + 378, flag0 + 379
},
"vkCreateSwapchainKHR", "vkDestroySwapchainKHR", "vkGetSwapchainImagesKHR", "vkAcquireNextImageKHR", "vkQueuePresentKHR",
"vkGetDeviceGroupPresentCapabilitiesKHR", "vkGetDeviceGroupSurfacePresentModesKHR", "vkAcquireNextImage2KHR"
@@ -3138,7 +3185,7 @@ private static boolean check_KHR_synchronization2(FunctionProvider provider, lon
int flag1 = ext.contains("VK_NV_device_diagnostic_checkpoints") ? 0 : Integer.MIN_VALUE;
return checkFunctions(provider, caps, new int[] {
- 425, 426, 427, 428, 429, 430, flag0 + 431, flag1 + 432
+ 429, 430, 431, 432, 433, 434, flag0 + 435, flag1 + 436
},
"vkCmdSetEvent2KHR", "vkCmdResetEvent2KHR", "vkCmdWaitEvents2KHR", "vkCmdPipelineBarrier2KHR", "vkCmdWriteTimestamp2KHR", "vkQueueSubmit2KHR",
"vkCmdWriteBufferMarker2AMD", "vkGetQueueCheckpointData2NV"
@@ -3151,7 +3198,7 @@ private static boolean check_KHR_timeline_semaphore(FunctionProvider provider, l
}
return checkFunctions(provider, caps, new int[] {
- 433, 434, 435
+ 437, 438, 439
},
"vkGetSemaphoreCounterValueKHR", "vkWaitSemaphoresKHR", "vkSignalSemaphoreKHR"
) || reportMissing("VK", "VK_KHR_timeline_semaphore");
@@ -3163,7 +3210,7 @@ private static boolean check_KHR_video_decode_queue(FunctionProvider provider, l
}
return checkFunctions(provider, caps, new int[] {
- 436
+ 440
},
"vkCmdDecodeVideoKHR"
) || reportMissing("VK", "VK_KHR_video_decode_queue");
@@ -3175,7 +3222,7 @@ private static boolean check_KHR_video_encode_queue(FunctionProvider provider, l
}
return checkFunctions(provider, caps, new int[] {
- 437
+ 441
},
"vkCmdEncodeVideoKHR"
) || reportMissing("VK", "VK_KHR_video_encode_queue");
@@ -3187,7 +3234,7 @@ private static boolean check_KHR_video_queue(FunctionProvider provider, long[] c
}
return checkFunctions(provider, caps, new int[] {
- 438, 439, 440, 441, 442, 443, 444, 445, 446, 447
+ 442, 443, 444, 445, 446, 447, 448, 449, 450, 451
},
"vkCreateVideoSessionKHR", "vkDestroyVideoSessionKHR", "vkGetVideoSessionMemoryRequirementsKHR", "vkBindVideoSessionMemoryKHR",
"vkCreateVideoSessionParametersKHR", "vkUpdateVideoSessionParametersKHR", "vkDestroyVideoSessionParametersKHR", "vkCmdBeginVideoCodingKHR",
@@ -3201,7 +3248,7 @@ private static boolean check_NV_clip_space_w_scaling(FunctionProvider provider,
}
return checkFunctions(provider, caps, new int[] {
- 448
+ 452
},
"vkCmdSetViewportWScalingNV"
) || reportMissing("VK", "VK_NV_clip_space_w_scaling");
@@ -3213,7 +3260,7 @@ private static boolean check_NV_copy_memory_indirect(FunctionProvider provider,
}
return checkFunctions(provider, caps, new int[] {
- 449, 450
+ 453, 454
},
"vkCmdCopyMemoryIndirectNV", "vkCmdCopyMemoryToImageIndirectNV"
) || reportMissing("VK", "VK_NV_copy_memory_indirect");
@@ -3225,7 +3272,7 @@ private static boolean check_NV_device_diagnostic_checkpoints(FunctionProvider p
}
return checkFunctions(provider, caps, new int[] {
- 451, 452
+ 455, 456
},
"vkCmdSetCheckpointNV", "vkGetQueueCheckpointDataNV"
) || reportMissing("VK", "VK_NV_device_diagnostic_checkpoints");
@@ -3237,7 +3284,7 @@ private static boolean check_NV_device_generated_commands(FunctionProvider provi
}
return checkFunctions(provider, caps, new int[] {
- 453, 454, 455, 456, 457, 458
+ 457, 458, 459, 460, 461, 462
},
"vkGetGeneratedCommandsMemoryRequirementsNV", "vkCmdPreprocessGeneratedCommandsNV", "vkCmdExecuteGeneratedCommandsNV",
"vkCmdBindPipelineShaderGroupNV", "vkCreateIndirectCommandsLayoutNV", "vkDestroyIndirectCommandsLayoutNV"
@@ -3250,7 +3297,7 @@ private static boolean check_NV_external_memory_rdma(FunctionProvider provider,
}
return checkFunctions(provider, caps, new int[] {
- 459
+ 463
},
"vkGetMemoryRemoteAddressNV"
) || reportMissing("VK", "VK_NV_external_memory_rdma");
@@ -3262,7 +3309,7 @@ private static boolean check_NV_external_memory_win32(FunctionProvider provider,
}
return checkFunctions(provider, caps, new int[] {
- 460
+ 464
},
"vkGetMemoryWin32HandleNV"
) || reportMissing("VK", "VK_NV_external_memory_win32");
@@ -3274,7 +3321,7 @@ private static boolean check_NV_fragment_shading_rate_enums(FunctionProvider pro
}
return checkFunctions(provider, caps, new int[] {
- 461
+ 465
},
"vkCmdSetFragmentShadingRateEnumNV"
) || reportMissing("VK", "VK_NV_fragment_shading_rate_enums");
@@ -3286,7 +3333,7 @@ private static boolean check_NV_memory_decompression(FunctionProvider provider,
}
return checkFunctions(provider, caps, new int[] {
- 462, 463
+ 466, 467
},
"vkCmdDecompressMemoryNV", "vkCmdDecompressMemoryIndirectCountNV"
) || reportMissing("VK", "VK_NV_memory_decompression");
@@ -3298,7 +3345,7 @@ private static boolean check_NV_mesh_shader(FunctionProvider provider, long[] ca
}
return checkFunctions(provider, caps, new int[] {
- 464, 465, 466
+ 468, 469, 470
},
"vkCmdDrawMeshTasksNV", "vkCmdDrawMeshTasksIndirectNV", "vkCmdDrawMeshTasksIndirectCountNV"
) || reportMissing("VK", "VK_NV_mesh_shader");
@@ -3310,7 +3357,7 @@ private static boolean check_NV_optical_flow(FunctionProvider provider, long[] c
}
return checkFunctions(provider, caps, new int[] {
- 467, 468, 469, 470
+ 471, 472, 473, 474
},
"vkCreateOpticalFlowSessionNV", "vkDestroyOpticalFlowSessionNV", "vkBindOpticalFlowSessionImageNV", "vkCmdOpticalFlowExecuteNV"
) || reportMissing("VK", "VK_NV_optical_flow");
@@ -3322,7 +3369,7 @@ private static boolean check_NV_ray_tracing(FunctionProvider provider, long[] ca
}
return checkFunctions(provider, caps, new int[] {
- 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482
+ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486
},
"vkCreateAccelerationStructureNV", "vkDestroyAccelerationStructureNV", "vkGetAccelerationStructureMemoryRequirementsNV",
"vkBindAccelerationStructureMemoryNV", "vkCmdBuildAccelerationStructureNV", "vkCmdCopyAccelerationStructureNV", "vkCmdTraceRaysNV",
@@ -3337,7 +3384,7 @@ private static boolean check_NV_scissor_exclusive(FunctionProvider provider, lon
}
return checkFunctions(provider, caps, new int[] {
- 483
+ 487
},
"vkCmdSetExclusiveScissorNV"
) || reportMissing("VK", "VK_NV_scissor_exclusive");
@@ -3349,7 +3396,7 @@ private static boolean check_NV_shading_rate_image(FunctionProvider provider, lo
}
return checkFunctions(provider, caps, new int[] {
- 484, 485, 486
+ 488, 489, 490
},
"vkCmdBindShadingRateImageNV", "vkCmdSetViewportShadingRatePaletteNV", "vkCmdSetCoarseSampleOrderNV"
) || reportMissing("VK", "VK_NV_shading_rate_image");
@@ -3361,7 +3408,7 @@ private static boolean check_NVX_binary_import(FunctionProvider provider, long[]
}
return checkFunctions(provider, caps, new int[] {
- 487, 488, 489, 490, 491
+ 491, 492, 493, 494, 495
},
"vkCreateCuModuleNVX", "vkCreateCuFunctionNVX", "vkDestroyCuModuleNVX", "vkDestroyCuFunctionNVX", "vkCmdCuLaunchKernelNVX"
) || reportMissing("VK", "VK_NVX_binary_import");
@@ -3373,7 +3420,7 @@ private static boolean check_NVX_image_view_handle(FunctionProvider provider, lo
}
return checkFunctions(provider, caps, new int[] {
- 492, 493
+ 496, 497
},
"vkGetImageViewHandleNVX", "vkGetImageViewAddressNVX"
) || reportMissing("VK", "VK_NVX_image_view_handle");
@@ -3385,7 +3432,7 @@ private static boolean check_QCOM_tile_properties(FunctionProvider provider, lon
}
return checkFunctions(provider, caps, new int[] {
- 494, 495
+ 498, 499
},
"vkGetFramebufferTilePropertiesQCOM", "vkGetDynamicRenderingTilePropertiesQCOM"
) || reportMissing("VK", "VK_QCOM_tile_properties");
@@ -3397,7 +3444,7 @@ private static boolean check_VALVE_descriptor_set_host_mapping(FunctionProvider
}
return checkFunctions(provider, caps, new int[] {
- 496, 497
+ 500, 501
},
"vkGetDescriptorSetLayoutHostMappingInfoVALVE", "vkGetDescriptorSetHostMappingVALVE"
) || reportMissing("VK", "VK_VALVE_descriptor_set_host_mapping");
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VKCapabilitiesInstance.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VKCapabilitiesInstance.java
index 3a3231926c..169513f563 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VKCapabilitiesInstance.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VKCapabilitiesInstance.java
@@ -89,6 +89,11 @@ public class VKCapabilitiesInstance {
public final long
vkReleaseDisplayEXT;
+ /** Function pointers for EXT_directfb_surface */
+ public final long
+ vkCreateDirectFBSurfaceEXT,
+ vkGetPhysicalDeviceDirectFBPresentationSupportEXT;
+
/** Function pointers for EXT_display_surface_counter */
public final long
vkGetPhysicalDeviceSurfaceCapabilities2EXT;
@@ -113,6 +118,10 @@ public class VKCapabilitiesInstance {
public final long
vkGetPhysicalDeviceToolPropertiesEXT;
+ /** Function pointers for KHR_android_surface */
+ public final long
+ vkCreateAndroidSurfaceKHR;
+
/** Function pointers for KHR_device_group */
public final long
vkGetPhysicalDevicePresentRectanglesKHR;
@@ -197,6 +206,11 @@ public class VKCapabilitiesInstance {
vkCreateWin32SurfaceKHR,
vkGetPhysicalDeviceWin32PresentationSupportKHR;
+ /** Function pointers for KHR_xcb_surface */
+ public final long
+ vkCreateXcbSurfaceKHR,
+ vkGetPhysicalDeviceXcbPresentationSupportKHR;
+
/** Function pointers for KHR_xlib_surface */
public final long
vkCreateXlibSurfaceKHR,
@@ -248,6 +262,8 @@ public class VKCapabilitiesInstance {
public final boolean VK_EXT_debug_utils;
/** When true, {@link EXTDirectModeDisplay} is supported. */
public final boolean VK_EXT_direct_mode_display;
+ /** When true, {@link EXTDirectfbSurface} is supported. */
+ public final boolean VK_EXT_directfb_surface;
/** When true, {@link EXTDisplaySurfaceCounter} is supported. */
public final boolean VK_EXT_display_surface_counter;
/** When true, {@link EXTHeadlessSurface} is supported. */
@@ -264,6 +280,8 @@ public class VKCapabilitiesInstance {
public final boolean VK_EXT_validation_flags;
/** When true, {@link GOOGLESurfacelessQuery} is supported. */
public final boolean VK_GOOGLE_surfaceless_query;
+ /** When true, {@link KHRAndroidSurface} is supported. */
+ public final boolean VK_KHR_android_surface;
/** When true, {@link KHRDeviceGroupCreation} is supported. */
public final boolean VK_KHR_device_group_creation;
/** When true, {@link KHRDisplay} is supported. */
@@ -290,6 +308,8 @@ public class VKCapabilitiesInstance {
public final boolean VK_KHR_wayland_surface;
/** When true, {@link KHRWin32Surface} is supported. */
public final boolean VK_KHR_win32_surface;
+ /** When true, {@link KHRXcbSurface} is supported. */
+ public final boolean VK_KHR_xcb_surface;
/** When true, {@link KHRXlibSurface} is supported. */
public final boolean VK_KHR_xlib_surface;
/** When true, {@link LUNARGDirectDriverLoading} is supported. */
@@ -302,7 +322,7 @@ public class VKCapabilitiesInstance {
VKCapabilitiesInstance(FunctionProvider provider, int apiVersion, Set ext, Set deviceExt) {
this.apiVersion = apiVersion;
- long[] caps = new long[98];
+ long[] caps = new long[103];
Vulkan10 = check_VK10(provider, caps, ext);
Vulkan11 = check_VK11(provider, caps, ext);
@@ -314,6 +334,7 @@ public class VKCapabilitiesInstance {
VK_EXT_debug_report = check_EXT_debug_report(provider, caps, ext);
VK_EXT_debug_utils = check_EXT_debug_utils(provider, caps, ext);
VK_EXT_direct_mode_display = check_EXT_direct_mode_display(provider, caps, ext);
+ VK_EXT_directfb_surface = check_EXT_directfb_surface(provider, caps, ext);
VK_EXT_display_surface_counter = check_EXT_display_surface_counter(provider, caps, ext);
check_EXT_full_screen_exclusive(provider, caps, deviceExt);
VK_EXT_headless_surface = check_EXT_headless_surface(provider, caps, ext);
@@ -325,6 +346,7 @@ public class VKCapabilitiesInstance {
VK_EXT_validation_features = ext.contains("VK_EXT_validation_features");
VK_EXT_validation_flags = ext.contains("VK_EXT_validation_flags");
VK_GOOGLE_surfaceless_query = ext.contains("VK_GOOGLE_surfaceless_query");
+ VK_KHR_android_surface = check_KHR_android_surface(provider, caps, ext);
check_KHR_device_group(provider, caps, deviceExt);
VK_KHR_device_group_creation = check_KHR_device_group_creation(provider, caps, ext);
VK_KHR_display = check_KHR_display(provider, caps, ext);
@@ -343,6 +365,7 @@ public class VKCapabilitiesInstance {
check_KHR_video_queue(provider, caps, deviceExt);
VK_KHR_wayland_surface = check_KHR_wayland_surface(provider, caps, ext);
VK_KHR_win32_surface = check_KHR_win32_surface(provider, caps, ext);
+ VK_KHR_xcb_surface = check_KHR_xcb_surface(provider, caps, ext);
VK_KHR_xlib_surface = check_KHR_xlib_surface(provider, caps, ext);
VK_LUNARG_direct_driver_loading = ext.contains("VK_LUNARG_direct_driver_loading");
VK_MVK_macos_surface = check_MVK_macos_surface(provider, caps, ext);
@@ -396,60 +419,65 @@ public class VKCapabilitiesInstance {
vkDestroyDebugUtilsMessengerEXT = caps[41];
vkSubmitDebugUtilsMessageEXT = caps[42];
vkReleaseDisplayEXT = caps[43];
- vkGetPhysicalDeviceSurfaceCapabilities2EXT = caps[44];
- vkGetPhysicalDeviceSurfacePresentModes2EXT = caps[45];
- vkCreateHeadlessSurfaceEXT = caps[46];
- vkCreateMetalSurfaceEXT = caps[47];
- vkGetPhysicalDeviceMultisamplePropertiesEXT = caps[48];
- vkGetPhysicalDeviceToolPropertiesEXT = caps[49];
- vkGetPhysicalDevicePresentRectanglesKHR = caps[50];
- vkEnumeratePhysicalDeviceGroupsKHR = caps[51];
- vkGetPhysicalDeviceDisplayPropertiesKHR = caps[52];
- vkGetPhysicalDeviceDisplayPlanePropertiesKHR = caps[53];
- vkGetDisplayPlaneSupportedDisplaysKHR = caps[54];
- vkGetDisplayModePropertiesKHR = caps[55];
- vkCreateDisplayModeKHR = caps[56];
- vkGetDisplayPlaneCapabilitiesKHR = caps[57];
- vkCreateDisplayPlaneSurfaceKHR = caps[58];
- vkGetPhysicalDeviceExternalFencePropertiesKHR = caps[59];
- vkGetPhysicalDeviceExternalBufferPropertiesKHR = caps[60];
- vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = caps[61];
- vkGetPhysicalDeviceFragmentShadingRatesKHR = caps[62];
- vkGetPhysicalDeviceDisplayProperties2KHR = caps[63];
- vkGetPhysicalDeviceDisplayPlaneProperties2KHR = caps[64];
- vkGetDisplayModeProperties2KHR = caps[65];
- vkGetDisplayPlaneCapabilities2KHR = caps[66];
- vkGetPhysicalDeviceFeatures2KHR = caps[67];
- vkGetPhysicalDeviceProperties2KHR = caps[68];
- vkGetPhysicalDeviceFormatProperties2KHR = caps[69];
- vkGetPhysicalDeviceImageFormatProperties2KHR = caps[70];
- vkGetPhysicalDeviceQueueFamilyProperties2KHR = caps[71];
- vkGetPhysicalDeviceMemoryProperties2KHR = caps[72];
- vkGetPhysicalDeviceSparseImageFormatProperties2KHR = caps[73];
- vkGetPhysicalDeviceSurfaceCapabilities2KHR = caps[74];
- vkGetPhysicalDeviceSurfaceFormats2KHR = caps[75];
- vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = caps[76];
- vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = caps[77];
- vkDestroySurfaceKHR = caps[78];
- vkGetPhysicalDeviceSurfaceSupportKHR = caps[79];
- vkGetPhysicalDeviceSurfaceCapabilitiesKHR = caps[80];
- vkGetPhysicalDeviceSurfaceFormatsKHR = caps[81];
- vkGetPhysicalDeviceSurfacePresentModesKHR = caps[82];
- vkGetPhysicalDeviceVideoCapabilitiesKHR = caps[83];
- vkGetPhysicalDeviceVideoFormatPropertiesKHR = caps[84];
- vkCreateWaylandSurfaceKHR = caps[85];
- vkGetPhysicalDeviceWaylandPresentationSupportKHR = caps[86];
- vkCreateWin32SurfaceKHR = caps[87];
- vkGetPhysicalDeviceWin32PresentationSupportKHR = caps[88];
- vkCreateXlibSurfaceKHR = caps[89];
- vkGetPhysicalDeviceXlibPresentationSupportKHR = caps[90];
- vkCreateMacOSSurfaceMVK = caps[91];
- vkAcquireWinrtDisplayNV = caps[92];
- vkGetWinrtDisplayNV = caps[93];
- vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = caps[94];
- vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = caps[95];
- vkGetPhysicalDeviceExternalImageFormatPropertiesNV = caps[96];
- vkGetPhysicalDeviceOpticalFlowImageFormatsNV = caps[97];
+ vkCreateDirectFBSurfaceEXT = caps[44];
+ vkGetPhysicalDeviceDirectFBPresentationSupportEXT = caps[45];
+ vkGetPhysicalDeviceSurfaceCapabilities2EXT = caps[46];
+ vkGetPhysicalDeviceSurfacePresentModes2EXT = caps[47];
+ vkCreateHeadlessSurfaceEXT = caps[48];
+ vkCreateMetalSurfaceEXT = caps[49];
+ vkGetPhysicalDeviceMultisamplePropertiesEXT = caps[50];
+ vkGetPhysicalDeviceToolPropertiesEXT = caps[51];
+ vkCreateAndroidSurfaceKHR = caps[52];
+ vkGetPhysicalDevicePresentRectanglesKHR = caps[53];
+ vkEnumeratePhysicalDeviceGroupsKHR = caps[54];
+ vkGetPhysicalDeviceDisplayPropertiesKHR = caps[55];
+ vkGetPhysicalDeviceDisplayPlanePropertiesKHR = caps[56];
+ vkGetDisplayPlaneSupportedDisplaysKHR = caps[57];
+ vkGetDisplayModePropertiesKHR = caps[58];
+ vkCreateDisplayModeKHR = caps[59];
+ vkGetDisplayPlaneCapabilitiesKHR = caps[60];
+ vkCreateDisplayPlaneSurfaceKHR = caps[61];
+ vkGetPhysicalDeviceExternalFencePropertiesKHR = caps[62];
+ vkGetPhysicalDeviceExternalBufferPropertiesKHR = caps[63];
+ vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = caps[64];
+ vkGetPhysicalDeviceFragmentShadingRatesKHR = caps[65];
+ vkGetPhysicalDeviceDisplayProperties2KHR = caps[66];
+ vkGetPhysicalDeviceDisplayPlaneProperties2KHR = caps[67];
+ vkGetDisplayModeProperties2KHR = caps[68];
+ vkGetDisplayPlaneCapabilities2KHR = caps[69];
+ vkGetPhysicalDeviceFeatures2KHR = caps[70];
+ vkGetPhysicalDeviceProperties2KHR = caps[71];
+ vkGetPhysicalDeviceFormatProperties2KHR = caps[72];
+ vkGetPhysicalDeviceImageFormatProperties2KHR = caps[73];
+ vkGetPhysicalDeviceQueueFamilyProperties2KHR = caps[74];
+ vkGetPhysicalDeviceMemoryProperties2KHR = caps[75];
+ vkGetPhysicalDeviceSparseImageFormatProperties2KHR = caps[76];
+ vkGetPhysicalDeviceSurfaceCapabilities2KHR = caps[77];
+ vkGetPhysicalDeviceSurfaceFormats2KHR = caps[78];
+ vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = caps[79];
+ vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = caps[80];
+ vkDestroySurfaceKHR = caps[81];
+ vkGetPhysicalDeviceSurfaceSupportKHR = caps[82];
+ vkGetPhysicalDeviceSurfaceCapabilitiesKHR = caps[83];
+ vkGetPhysicalDeviceSurfaceFormatsKHR = caps[84];
+ vkGetPhysicalDeviceSurfacePresentModesKHR = caps[85];
+ vkGetPhysicalDeviceVideoCapabilitiesKHR = caps[86];
+ vkGetPhysicalDeviceVideoFormatPropertiesKHR = caps[87];
+ vkCreateWaylandSurfaceKHR = caps[88];
+ vkGetPhysicalDeviceWaylandPresentationSupportKHR = caps[89];
+ vkCreateWin32SurfaceKHR = caps[90];
+ vkGetPhysicalDeviceWin32PresentationSupportKHR = caps[91];
+ vkCreateXcbSurfaceKHR = caps[92];
+ vkGetPhysicalDeviceXcbPresentationSupportKHR = caps[93];
+ vkCreateXlibSurfaceKHR = caps[94];
+ vkGetPhysicalDeviceXlibPresentationSupportKHR = caps[95];
+ vkCreateMacOSSurfaceMVK = caps[96];
+ vkAcquireWinrtDisplayNV = caps[97];
+ vkGetWinrtDisplayNV = caps[98];
+ vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = caps[99];
+ vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = caps[100];
+ vkGetPhysicalDeviceExternalImageFormatPropertiesNV = caps[101];
+ vkGetPhysicalDeviceOpticalFlowImageFormatsNV = caps[102];
}
private static boolean check_VK10(FunctionProvider provider, long[] caps, Set ext) {
@@ -568,13 +596,25 @@ private static boolean check_EXT_direct_mode_display(FunctionProvider provider,
) || reportMissing("VK", "VK_EXT_direct_mode_display");
}
+ private static boolean check_EXT_directfb_surface(FunctionProvider provider, long[] caps, Set ext) {
+ if (!ext.contains("VK_EXT_directfb_surface")) {
+ return false;
+ }
+
+ return checkFunctions(provider, caps, new int[] {
+ 44, 45
+ },
+ "vkCreateDirectFBSurfaceEXT", "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"
+ ) || reportMissing("VK", "VK_EXT_directfb_surface");
+ }
+
private static boolean check_EXT_display_surface_counter(FunctionProvider provider, long[] caps, Set ext) {
if (!ext.contains("VK_EXT_display_surface_counter")) {
return false;
}
return checkFunctions(provider, caps, new int[] {
- 44
+ 46
},
"vkGetPhysicalDeviceSurfaceCapabilities2EXT"
) || reportMissing("VK", "VK_EXT_display_surface_counter");
@@ -586,7 +626,7 @@ private static boolean check_EXT_full_screen_exclusive(FunctionProvider provider
}
return checkFunctions(provider, caps, new int[] {
- 45
+ 47
},
"vkGetPhysicalDeviceSurfacePresentModes2EXT"
) || reportMissing("VK", "VK_EXT_full_screen_exclusive");
@@ -598,7 +638,7 @@ private static boolean check_EXT_headless_surface(FunctionProvider provider, lon
}
return checkFunctions(provider, caps, new int[] {
- 46
+ 48
},
"vkCreateHeadlessSurfaceEXT"
) || reportMissing("VK", "VK_EXT_headless_surface");
@@ -610,7 +650,7 @@ private static boolean check_EXT_metal_surface(FunctionProvider provider, long[]
}
return checkFunctions(provider, caps, new int[] {
- 47
+ 49
},
"vkCreateMetalSurfaceEXT"
) || reportMissing("VK", "VK_EXT_metal_surface");
@@ -622,7 +662,7 @@ private static boolean check_EXT_sample_locations(FunctionProvider provider, lon
}
return checkFunctions(provider, caps, new int[] {
- 48
+ 50
},
"vkGetPhysicalDeviceMultisamplePropertiesEXT"
) || reportMissing("VK", "VK_EXT_sample_locations");
@@ -634,12 +674,24 @@ private static boolean check_EXT_tooling_info(FunctionProvider provider, long[]
}
return checkFunctions(provider, caps, new int[] {
- 49
+ 51
},
"vkGetPhysicalDeviceToolPropertiesEXT"
) || reportMissing("VK", "VK_EXT_tooling_info");
}
+ private static boolean check_KHR_android_surface(FunctionProvider provider, long[] caps, Set ext) {
+ if (!ext.contains("VK_KHR_android_surface")) {
+ return false;
+ }
+
+ return checkFunctions(provider, caps, new int[] {
+ 52
+ },
+ "vkCreateAndroidSurfaceKHR"
+ ) || reportMissing("VK", "VK_KHR_android_surface");
+ }
+
private static boolean check_KHR_device_group(FunctionProvider provider, long[] caps, Set ext) {
if (!ext.contains("VK_KHR_device_group")) {
return false;
@@ -648,7 +700,7 @@ private static boolean check_KHR_device_group(FunctionProvider provider, long[]
int flag0 = ext.contains("VK_KHR_surface") ? 0 : Integer.MIN_VALUE;
return checkFunctions(provider, caps, new int[] {
- flag0 + 50
+ flag0 + 53
},
"vkGetPhysicalDevicePresentRectanglesKHR"
) || reportMissing("VK", "VK_KHR_device_group");
@@ -660,7 +712,7 @@ private static boolean check_KHR_device_group_creation(FunctionProvider provider
}
return checkFunctions(provider, caps, new int[] {
- 51
+ 54
},
"vkEnumeratePhysicalDeviceGroupsKHR"
) || reportMissing("VK", "VK_KHR_device_group_creation");
@@ -672,7 +724,7 @@ private static boolean check_KHR_display(FunctionProvider provider, long[] caps,
}
return checkFunctions(provider, caps, new int[] {
- 52, 53, 54, 55, 56, 57, 58
+ 55, 56, 57, 58, 59, 60, 61
},
"vkGetPhysicalDeviceDisplayPropertiesKHR", "vkGetPhysicalDeviceDisplayPlanePropertiesKHR", "vkGetDisplayPlaneSupportedDisplaysKHR",
"vkGetDisplayModePropertiesKHR", "vkCreateDisplayModeKHR", "vkGetDisplayPlaneCapabilitiesKHR", "vkCreateDisplayPlaneSurfaceKHR"
@@ -685,7 +737,7 @@ private static boolean check_KHR_external_fence_capabilities(FunctionProvider pr
}
return checkFunctions(provider, caps, new int[] {
- 59
+ 62
},
"vkGetPhysicalDeviceExternalFencePropertiesKHR"
) || reportMissing("VK", "VK_KHR_external_fence_capabilities");
@@ -697,7 +749,7 @@ private static boolean check_KHR_external_memory_capabilities(FunctionProvider p
}
return checkFunctions(provider, caps, new int[] {
- 60
+ 63
},
"vkGetPhysicalDeviceExternalBufferPropertiesKHR"
) || reportMissing("VK", "VK_KHR_external_memory_capabilities");
@@ -709,7 +761,7 @@ private static boolean check_KHR_external_semaphore_capabilities(FunctionProvide
}
return checkFunctions(provider, caps, new int[] {
- 61
+ 64
},
"vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"
) || reportMissing("VK", "VK_KHR_external_semaphore_capabilities");
@@ -721,7 +773,7 @@ private static boolean check_KHR_fragment_shading_rate(FunctionProvider provider
}
return checkFunctions(provider, caps, new int[] {
- 62
+ 65
},
"vkGetPhysicalDeviceFragmentShadingRatesKHR"
) || reportMissing("VK", "VK_KHR_fragment_shading_rate");
@@ -733,7 +785,7 @@ private static boolean check_KHR_get_display_properties2(FunctionProvider provid
}
return checkFunctions(provider, caps, new int[] {
- 63, 64, 65, 66
+ 66, 67, 68, 69
},
"vkGetPhysicalDeviceDisplayProperties2KHR", "vkGetPhysicalDeviceDisplayPlaneProperties2KHR", "vkGetDisplayModeProperties2KHR",
"vkGetDisplayPlaneCapabilities2KHR"
@@ -746,7 +798,7 @@ private static boolean check_KHR_get_physical_device_properties2(FunctionProvide
}
return checkFunctions(provider, caps, new int[] {
- 67, 68, 69, 70, 71, 72, 73
+ 70, 71, 72, 73, 74, 75, 76
},
"vkGetPhysicalDeviceFeatures2KHR", "vkGetPhysicalDeviceProperties2KHR", "vkGetPhysicalDeviceFormatProperties2KHR",
"vkGetPhysicalDeviceImageFormatProperties2KHR", "vkGetPhysicalDeviceQueueFamilyProperties2KHR", "vkGetPhysicalDeviceMemoryProperties2KHR",
@@ -760,7 +812,7 @@ private static boolean check_KHR_get_surface_capabilities2(FunctionProvider prov
}
return checkFunctions(provider, caps, new int[] {
- 74, 75
+ 77, 78
},
"vkGetPhysicalDeviceSurfaceCapabilities2KHR", "vkGetPhysicalDeviceSurfaceFormats2KHR"
) || reportMissing("VK", "VK_KHR_get_surface_capabilities2");
@@ -772,7 +824,7 @@ private static boolean check_KHR_performance_query(FunctionProvider provider, lo
}
return checkFunctions(provider, caps, new int[] {
- 76, 77
+ 79, 80
},
"vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR", "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"
) || reportMissing("VK", "VK_KHR_performance_query");
@@ -784,7 +836,7 @@ private static boolean check_KHR_surface(FunctionProvider provider, long[] caps,
}
return checkFunctions(provider, caps, new int[] {
- 78, 79, 80, 81, 82
+ 81, 82, 83, 84, 85
},
"vkDestroySurfaceKHR", "vkGetPhysicalDeviceSurfaceSupportKHR", "vkGetPhysicalDeviceSurfaceCapabilitiesKHR", "vkGetPhysicalDeviceSurfaceFormatsKHR",
"vkGetPhysicalDeviceSurfacePresentModesKHR"
@@ -799,7 +851,7 @@ private static boolean check_KHR_swapchain(FunctionProvider provider, long[] cap
int flag0 = ext.contains("Vulkan11") ? 0 : Integer.MIN_VALUE;
return checkFunctions(provider, caps, new int[] {
- flag0 + 50
+ flag0 + 53
},
"vkGetPhysicalDevicePresentRectanglesKHR"
) || reportMissing("VK", "VK_KHR_swapchain");
@@ -811,7 +863,7 @@ private static boolean check_KHR_video_queue(FunctionProvider provider, long[] c
}
return checkFunctions(provider, caps, new int[] {
- 83, 84
+ 86, 87
},
"vkGetPhysicalDeviceVideoCapabilitiesKHR", "vkGetPhysicalDeviceVideoFormatPropertiesKHR"
) || reportMissing("VK", "VK_KHR_video_queue");
@@ -823,7 +875,7 @@ private static boolean check_KHR_wayland_surface(FunctionProvider provider, long
}
return checkFunctions(provider, caps, new int[] {
- 85, 86
+ 88, 89
},
"vkCreateWaylandSurfaceKHR", "vkGetPhysicalDeviceWaylandPresentationSupportKHR"
) || reportMissing("VK", "VK_KHR_wayland_surface");
@@ -835,19 +887,31 @@ private static boolean check_KHR_win32_surface(FunctionProvider provider, long[]
}
return checkFunctions(provider, caps, new int[] {
- 87, 88
+ 90, 91
},
"vkCreateWin32SurfaceKHR", "vkGetPhysicalDeviceWin32PresentationSupportKHR"
) || reportMissing("VK", "VK_KHR_win32_surface");
}
+ private static boolean check_KHR_xcb_surface(FunctionProvider provider, long[] caps, Set ext) {
+ if (!ext.contains("VK_KHR_xcb_surface")) {
+ return false;
+ }
+
+ return checkFunctions(provider, caps, new int[] {
+ 92, 93
+ },
+ "vkCreateXcbSurfaceKHR", "vkGetPhysicalDeviceXcbPresentationSupportKHR"
+ ) || reportMissing("VK", "VK_KHR_xcb_surface");
+ }
+
private static boolean check_KHR_xlib_surface(FunctionProvider provider, long[] caps, Set ext) {
if (!ext.contains("VK_KHR_xlib_surface")) {
return false;
}
return checkFunctions(provider, caps, new int[] {
- 89, 90
+ 94, 95
},
"vkCreateXlibSurfaceKHR", "vkGetPhysicalDeviceXlibPresentationSupportKHR"
) || reportMissing("VK", "VK_KHR_xlib_surface");
@@ -859,7 +923,7 @@ private static boolean check_MVK_macos_surface(FunctionProvider provider, long[]
}
return checkFunctions(provider, caps, new int[] {
- 91
+ 96
},
"vkCreateMacOSSurfaceMVK"
) || reportMissing("VK", "VK_MVK_macos_surface");
@@ -871,7 +935,7 @@ private static boolean check_NV_acquire_winrt_display(FunctionProvider provider,
}
return checkFunctions(provider, caps, new int[] {
- 92, 93
+ 97, 98
},
"vkAcquireWinrtDisplayNV", "vkGetWinrtDisplayNV"
) || reportMissing("VK", "VK_NV_acquire_winrt_display");
@@ -883,7 +947,7 @@ private static boolean check_NV_cooperative_matrix(FunctionProvider provider, lo
}
return checkFunctions(provider, caps, new int[] {
- 94
+ 99
},
"vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"
) || reportMissing("VK", "VK_NV_cooperative_matrix");
@@ -895,7 +959,7 @@ private static boolean check_NV_coverage_reduction_mode(FunctionProvider provide
}
return checkFunctions(provider, caps, new int[] {
- 95
+ 100
},
"vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"
) || reportMissing("VK", "VK_NV_coverage_reduction_mode");
@@ -907,7 +971,7 @@ private static boolean check_NV_external_memory_capabilities(FunctionProvider pr
}
return checkFunctions(provider, caps, new int[] {
- 96
+ 101
},
"vkGetPhysicalDeviceExternalImageFormatPropertiesNV"
) || reportMissing("VK", "VK_NV_external_memory_capabilities");
@@ -919,7 +983,7 @@ private static boolean check_NV_optical_flow(FunctionProvider provider, long[] c
}
return checkFunctions(provider, caps, new int[] {
- 97
+ 102
},
"vkGetPhysicalDeviceOpticalFlowImageFormatsNV"
) || reportMissing("VK", "VK_NV_optical_flow");
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkAllocationCallbacks.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkAllocationCallbacks.java
index 0ce4991010..b077791a88 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkAllocationCallbacks.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkAllocationCallbacks.java
@@ -29,7 +29,7 @@
*
* See Also
*
- * {@link VkAllocationFunction}, {@link VkFreeFunction}, {@link VkInternalAllocationNotification}, {@link VkInternalFreeNotification}, {@link VkReallocationFunction}, {@link VK10#vkAllocateMemory AllocateMemory}, {@link KHRAccelerationStructure#vkCreateAccelerationStructureKHR CreateAccelerationStructureKHR}, {@link NVRayTracing#vkCreateAccelerationStructureNV CreateAccelerationStructureNV}, {@link VK10#vkCreateBuffer CreateBuffer}, {@link VK10#vkCreateBufferView CreateBufferView}, {@link VK10#vkCreateCommandPool CreateCommandPool}, {@link VK10#vkCreateComputePipelines CreateComputePipelines}, {@link NVXBinaryImport#vkCreateCuFunctionNVX CreateCuFunctionNVX}, {@link NVXBinaryImport#vkCreateCuModuleNVX CreateCuModuleNVX}, {@link EXTDebugReport#vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT}, {@link EXTDebugUtils#vkCreateDebugUtilsMessengerEXT CreateDebugUtilsMessengerEXT}, {@link KHRDeferredHostOperations#vkCreateDeferredOperationKHR CreateDeferredOperationKHR}, {@link VK10#vkCreateDescriptorPool CreateDescriptorPool}, {@link VK10#vkCreateDescriptorSetLayout CreateDescriptorSetLayout}, {@link VK11#vkCreateDescriptorUpdateTemplate CreateDescriptorUpdateTemplate}, {@link KHRDescriptorUpdateTemplate#vkCreateDescriptorUpdateTemplateKHR CreateDescriptorUpdateTemplateKHR}, {@link VK10#vkCreateDevice CreateDevice}, {@link KHRDisplay#vkCreateDisplayModeKHR CreateDisplayModeKHR}, {@link KHRDisplay#vkCreateDisplayPlaneSurfaceKHR CreateDisplayPlaneSurfaceKHR}, {@link VK10#vkCreateEvent CreateEvent}, {@link VK10#vkCreateFence CreateFence}, {@link VK10#vkCreateFramebuffer CreateFramebuffer}, {@link VK10#vkCreateGraphicsPipelines CreateGraphicsPipelines}, {@link EXTHeadlessSurface#vkCreateHeadlessSurfaceEXT CreateHeadlessSurfaceEXT}, {@link VK10#vkCreateImage CreateImage}, {@link VK10#vkCreateImageView CreateImageView}, {@link NVDeviceGeneratedCommands#vkCreateIndirectCommandsLayoutNV CreateIndirectCommandsLayoutNV}, {@link VK10#vkCreateInstance CreateInstance}, {@link MVKMacosSurface#vkCreateMacOSSurfaceMVK CreateMacOSSurfaceMVK}, {@link EXTMetalSurface#vkCreateMetalSurfaceEXT CreateMetalSurfaceEXT}, {@link EXTOpacityMicromap#vkCreateMicromapEXT CreateMicromapEXT}, {@link NVOpticalFlow#vkCreateOpticalFlowSessionNV CreateOpticalFlowSessionNV}, {@link VK10#vkCreatePipelineCache CreatePipelineCache}, {@link VK10#vkCreatePipelineLayout CreatePipelineLayout}, {@link VK13#vkCreatePrivateDataSlot CreatePrivateDataSlot}, {@link EXTPrivateData#vkCreatePrivateDataSlotEXT CreatePrivateDataSlotEXT}, {@link VK10#vkCreateQueryPool CreateQueryPool}, {@link KHRRayTracingPipeline#vkCreateRayTracingPipelinesKHR CreateRayTracingPipelinesKHR}, {@link NVRayTracing#vkCreateRayTracingPipelinesNV CreateRayTracingPipelinesNV}, {@link VK10#vkCreateRenderPass CreateRenderPass}, {@link VK12#vkCreateRenderPass2 CreateRenderPass2}, {@link KHRCreateRenderpass2#vkCreateRenderPass2KHR CreateRenderPass2KHR}, {@link VK10#vkCreateSampler CreateSampler}, {@link VK11#vkCreateSamplerYcbcrConversion CreateSamplerYcbcrConversion}, {@link KHRSamplerYcbcrConversion#vkCreateSamplerYcbcrConversionKHR CreateSamplerYcbcrConversionKHR}, {@link VK10#vkCreateSemaphore CreateSemaphore}, {@link VK10#vkCreateShaderModule CreateShaderModule}, {@link KHRDisplaySwapchain#vkCreateSharedSwapchainsKHR CreateSharedSwapchainsKHR}, {@link KHRSwapchain#vkCreateSwapchainKHR CreateSwapchainKHR}, {@link EXTValidationCache#vkCreateValidationCacheEXT CreateValidationCacheEXT}, {@link KHRVideoQueue#vkCreateVideoSessionKHR CreateVideoSessionKHR}, {@link KHRVideoQueue#vkCreateVideoSessionParametersKHR CreateVideoSessionParametersKHR}, {@link KHRWaylandSurface#vkCreateWaylandSurfaceKHR CreateWaylandSurfaceKHR}, {@link KHRWin32Surface#vkCreateWin32SurfaceKHR CreateWin32SurfaceKHR}, {@link KHRXlibSurface#vkCreateXlibSurfaceKHR CreateXlibSurfaceKHR}, {@link KHRAccelerationStructure#vkDestroyAccelerationStructureKHR DestroyAccelerationStructureKHR}, {@link NVRayTracing#vkDestroyAccelerationStructureNV DestroyAccelerationStructureNV}, {@link VK10#vkDestroyBuffer DestroyBuffer}, {@link VK10#vkDestroyBufferView DestroyBufferView}, {@link VK10#vkDestroyCommandPool DestroyCommandPool}, {@link NVXBinaryImport#vkDestroyCuFunctionNVX DestroyCuFunctionNVX}, {@link NVXBinaryImport#vkDestroyCuModuleNVX DestroyCuModuleNVX}, {@link EXTDebugReport#vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT}, {@link EXTDebugUtils#vkDestroyDebugUtilsMessengerEXT DestroyDebugUtilsMessengerEXT}, {@link KHRDeferredHostOperations#vkDestroyDeferredOperationKHR DestroyDeferredOperationKHR}, {@link VK10#vkDestroyDescriptorPool DestroyDescriptorPool}, {@link VK10#vkDestroyDescriptorSetLayout DestroyDescriptorSetLayout}, {@link VK11#vkDestroyDescriptorUpdateTemplate DestroyDescriptorUpdateTemplate}, {@link KHRDescriptorUpdateTemplate#vkDestroyDescriptorUpdateTemplateKHR DestroyDescriptorUpdateTemplateKHR}, {@link VK10#vkDestroyDevice DestroyDevice}, {@link VK10#vkDestroyEvent DestroyEvent}, {@link VK10#vkDestroyFence DestroyFence}, {@link VK10#vkDestroyFramebuffer DestroyFramebuffer}, {@link VK10#vkDestroyImage DestroyImage}, {@link VK10#vkDestroyImageView DestroyImageView}, {@link NVDeviceGeneratedCommands#vkDestroyIndirectCommandsLayoutNV DestroyIndirectCommandsLayoutNV}, {@link VK10#vkDestroyInstance DestroyInstance}, {@link EXTOpacityMicromap#vkDestroyMicromapEXT DestroyMicromapEXT}, {@link NVOpticalFlow#vkDestroyOpticalFlowSessionNV DestroyOpticalFlowSessionNV}, {@link VK10#vkDestroyPipeline DestroyPipeline}, {@link VK10#vkDestroyPipelineCache DestroyPipelineCache}, {@link VK10#vkDestroyPipelineLayout DestroyPipelineLayout}, {@link VK13#vkDestroyPrivateDataSlot DestroyPrivateDataSlot}, {@link EXTPrivateData#vkDestroyPrivateDataSlotEXT DestroyPrivateDataSlotEXT}, {@link VK10#vkDestroyQueryPool DestroyQueryPool}, {@link VK10#vkDestroyRenderPass DestroyRenderPass}, {@link VK10#vkDestroySampler DestroySampler}, {@link VK11#vkDestroySamplerYcbcrConversion DestroySamplerYcbcrConversion}, {@link KHRSamplerYcbcrConversion#vkDestroySamplerYcbcrConversionKHR DestroySamplerYcbcrConversionKHR}, {@link VK10#vkDestroySemaphore DestroySemaphore}, {@link VK10#vkDestroyShaderModule DestroyShaderModule}, {@link KHRSurface#vkDestroySurfaceKHR DestroySurfaceKHR}, {@link KHRSwapchain#vkDestroySwapchainKHR DestroySwapchainKHR}, {@link EXTValidationCache#vkDestroyValidationCacheEXT DestroyValidationCacheEXT}, {@link KHRVideoQueue#vkDestroyVideoSessionKHR DestroyVideoSessionKHR}, {@link KHRVideoQueue#vkDestroyVideoSessionParametersKHR DestroyVideoSessionParametersKHR}, {@link VK10#vkFreeMemory FreeMemory}, {@link EXTDisplayControl#vkRegisterDeviceEventEXT RegisterDeviceEventEXT}, {@link EXTDisplayControl#vkRegisterDisplayEventEXT RegisterDisplayEventEXT}
+ * {@link VkAllocationFunction}, {@link VkFreeFunction}, {@link VkInternalAllocationNotification}, {@link VkInternalFreeNotification}, {@link VkReallocationFunction}, {@link VK10#vkAllocateMemory AllocateMemory}, {@link KHRAccelerationStructure#vkCreateAccelerationStructureKHR CreateAccelerationStructureKHR}, {@link NVRayTracing#vkCreateAccelerationStructureNV CreateAccelerationStructureNV}, {@link KHRAndroidSurface#vkCreateAndroidSurfaceKHR CreateAndroidSurfaceKHR}, {@link VK10#vkCreateBuffer CreateBuffer}, {@link VK10#vkCreateBufferView CreateBufferView}, {@link VK10#vkCreateCommandPool CreateCommandPool}, {@link VK10#vkCreateComputePipelines CreateComputePipelines}, {@link NVXBinaryImport#vkCreateCuFunctionNVX CreateCuFunctionNVX}, {@link NVXBinaryImport#vkCreateCuModuleNVX CreateCuModuleNVX}, {@link EXTDebugReport#vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT}, {@link EXTDebugUtils#vkCreateDebugUtilsMessengerEXT CreateDebugUtilsMessengerEXT}, {@link KHRDeferredHostOperations#vkCreateDeferredOperationKHR CreateDeferredOperationKHR}, {@link VK10#vkCreateDescriptorPool CreateDescriptorPool}, {@link VK10#vkCreateDescriptorSetLayout CreateDescriptorSetLayout}, {@link VK11#vkCreateDescriptorUpdateTemplate CreateDescriptorUpdateTemplate}, {@link KHRDescriptorUpdateTemplate#vkCreateDescriptorUpdateTemplateKHR CreateDescriptorUpdateTemplateKHR}, {@link VK10#vkCreateDevice CreateDevice}, {@link EXTDirectfbSurface#vkCreateDirectFBSurfaceEXT CreateDirectFBSurfaceEXT}, {@link KHRDisplay#vkCreateDisplayModeKHR CreateDisplayModeKHR}, {@link KHRDisplay#vkCreateDisplayPlaneSurfaceKHR CreateDisplayPlaneSurfaceKHR}, {@link VK10#vkCreateEvent CreateEvent}, {@link VK10#vkCreateFence CreateFence}, {@link VK10#vkCreateFramebuffer CreateFramebuffer}, {@link VK10#vkCreateGraphicsPipelines CreateGraphicsPipelines}, {@link EXTHeadlessSurface#vkCreateHeadlessSurfaceEXT CreateHeadlessSurfaceEXT}, {@link VK10#vkCreateImage CreateImage}, {@link VK10#vkCreateImageView CreateImageView}, {@link NVDeviceGeneratedCommands#vkCreateIndirectCommandsLayoutNV CreateIndirectCommandsLayoutNV}, {@link VK10#vkCreateInstance CreateInstance}, {@link MVKMacosSurface#vkCreateMacOSSurfaceMVK CreateMacOSSurfaceMVK}, {@link EXTMetalSurface#vkCreateMetalSurfaceEXT CreateMetalSurfaceEXT}, {@link EXTOpacityMicromap#vkCreateMicromapEXT CreateMicromapEXT}, {@link NVOpticalFlow#vkCreateOpticalFlowSessionNV CreateOpticalFlowSessionNV}, {@link VK10#vkCreatePipelineCache CreatePipelineCache}, {@link VK10#vkCreatePipelineLayout CreatePipelineLayout}, {@link VK13#vkCreatePrivateDataSlot CreatePrivateDataSlot}, {@link EXTPrivateData#vkCreatePrivateDataSlotEXT CreatePrivateDataSlotEXT}, {@link VK10#vkCreateQueryPool CreateQueryPool}, {@link KHRRayTracingPipeline#vkCreateRayTracingPipelinesKHR CreateRayTracingPipelinesKHR}, {@link NVRayTracing#vkCreateRayTracingPipelinesNV CreateRayTracingPipelinesNV}, {@link VK10#vkCreateRenderPass CreateRenderPass}, {@link VK12#vkCreateRenderPass2 CreateRenderPass2}, {@link KHRCreateRenderpass2#vkCreateRenderPass2KHR CreateRenderPass2KHR}, {@link VK10#vkCreateSampler CreateSampler}, {@link VK11#vkCreateSamplerYcbcrConversion CreateSamplerYcbcrConversion}, {@link KHRSamplerYcbcrConversion#vkCreateSamplerYcbcrConversionKHR CreateSamplerYcbcrConversionKHR}, {@link VK10#vkCreateSemaphore CreateSemaphore}, {@link VK10#vkCreateShaderModule CreateShaderModule}, {@link KHRDisplaySwapchain#vkCreateSharedSwapchainsKHR CreateSharedSwapchainsKHR}, {@link KHRSwapchain#vkCreateSwapchainKHR CreateSwapchainKHR}, {@link EXTValidationCache#vkCreateValidationCacheEXT CreateValidationCacheEXT}, {@link KHRVideoQueue#vkCreateVideoSessionKHR CreateVideoSessionKHR}, {@link KHRVideoQueue#vkCreateVideoSessionParametersKHR CreateVideoSessionParametersKHR}, {@link KHRWaylandSurface#vkCreateWaylandSurfaceKHR CreateWaylandSurfaceKHR}, {@link KHRWin32Surface#vkCreateWin32SurfaceKHR CreateWin32SurfaceKHR}, {@link KHRXcbSurface#vkCreateXcbSurfaceKHR CreateXcbSurfaceKHR}, {@link KHRXlibSurface#vkCreateXlibSurfaceKHR CreateXlibSurfaceKHR}, {@link KHRAccelerationStructure#vkDestroyAccelerationStructureKHR DestroyAccelerationStructureKHR}, {@link NVRayTracing#vkDestroyAccelerationStructureNV DestroyAccelerationStructureNV}, {@link VK10#vkDestroyBuffer DestroyBuffer}, {@link VK10#vkDestroyBufferView DestroyBufferView}, {@link VK10#vkDestroyCommandPool DestroyCommandPool}, {@link NVXBinaryImport#vkDestroyCuFunctionNVX DestroyCuFunctionNVX}, {@link NVXBinaryImport#vkDestroyCuModuleNVX DestroyCuModuleNVX}, {@link EXTDebugReport#vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT}, {@link EXTDebugUtils#vkDestroyDebugUtilsMessengerEXT DestroyDebugUtilsMessengerEXT}, {@link KHRDeferredHostOperations#vkDestroyDeferredOperationKHR DestroyDeferredOperationKHR}, {@link VK10#vkDestroyDescriptorPool DestroyDescriptorPool}, {@link VK10#vkDestroyDescriptorSetLayout DestroyDescriptorSetLayout}, {@link VK11#vkDestroyDescriptorUpdateTemplate DestroyDescriptorUpdateTemplate}, {@link KHRDescriptorUpdateTemplate#vkDestroyDescriptorUpdateTemplateKHR DestroyDescriptorUpdateTemplateKHR}, {@link VK10#vkDestroyDevice DestroyDevice}, {@link VK10#vkDestroyEvent DestroyEvent}, {@link VK10#vkDestroyFence DestroyFence}, {@link VK10#vkDestroyFramebuffer DestroyFramebuffer}, {@link VK10#vkDestroyImage DestroyImage}, {@link VK10#vkDestroyImageView DestroyImageView}, {@link NVDeviceGeneratedCommands#vkDestroyIndirectCommandsLayoutNV DestroyIndirectCommandsLayoutNV}, {@link VK10#vkDestroyInstance DestroyInstance}, {@link EXTOpacityMicromap#vkDestroyMicromapEXT DestroyMicromapEXT}, {@link NVOpticalFlow#vkDestroyOpticalFlowSessionNV DestroyOpticalFlowSessionNV}, {@link VK10#vkDestroyPipeline DestroyPipeline}, {@link VK10#vkDestroyPipelineCache DestroyPipelineCache}, {@link VK10#vkDestroyPipelineLayout DestroyPipelineLayout}, {@link VK13#vkDestroyPrivateDataSlot DestroyPrivateDataSlot}, {@link EXTPrivateData#vkDestroyPrivateDataSlotEXT DestroyPrivateDataSlotEXT}, {@link VK10#vkDestroyQueryPool DestroyQueryPool}, {@link VK10#vkDestroyRenderPass DestroyRenderPass}, {@link VK10#vkDestroySampler DestroySampler}, {@link VK11#vkDestroySamplerYcbcrConversion DestroySamplerYcbcrConversion}, {@link KHRSamplerYcbcrConversion#vkDestroySamplerYcbcrConversionKHR DestroySamplerYcbcrConversionKHR}, {@link VK10#vkDestroySemaphore DestroySemaphore}, {@link VK10#vkDestroyShaderModule DestroyShaderModule}, {@link KHRSurface#vkDestroySurfaceKHR DestroySurfaceKHR}, {@link KHRSwapchain#vkDestroySwapchainKHR DestroySwapchainKHR}, {@link EXTValidationCache#vkDestroyValidationCacheEXT DestroyValidationCacheEXT}, {@link KHRVideoQueue#vkDestroyVideoSessionKHR DestroyVideoSessionKHR}, {@link KHRVideoQueue#vkDestroyVideoSessionParametersKHR DestroyVideoSessionParametersKHR}, {@link VK10#vkFreeMemory FreeMemory}, {@link EXTDisplayControl#vkRegisterDeviceEventEXT RegisterDeviceEventEXT}, {@link EXTDisplayControl#vkRegisterDisplayEventEXT RegisterDisplayEventEXT}
*
* Layout
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkAndroidHardwareBufferFormatProperties2ANDROID.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkAndroidHardwareBufferFormatProperties2ANDROID.java
new file mode 100644
index 0000000000..f4a328de1a
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkAndroidHardwareBufferFormatProperties2ANDROID.java
@@ -0,0 +1,390 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package org.lwjgl.vulkan;
+
+import javax.annotation.*;
+
+import java.nio.*;
+
+import org.lwjgl.*;
+import org.lwjgl.system.*;
+
+import static org.lwjgl.system.MemoryUtil.*;
+import static org.lwjgl.system.MemoryStack.*;
+
+/**
+ * Structure describing the image format properties of an Android hardware buffer.
+ *
+ * Description
+ *
+ * The bits reported in {@code formatFeatures} must include the bits reported in the corresponding fields of {@link VkAndroidHardwareBufferFormatPropertiesANDROID}{@code ::formatFeatures}.
+ *
+ * Valid Usage (Implicit)
+ *
+ *
+ * - {@code sType} must be {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID}
+ *
+ *
+ * See Also
+ *
+ * {@link VkComponentMapping}
+ *
+ * Layout
+ *
+ *
+ * struct VkAndroidHardwareBufferFormatProperties2ANDROID {
+ * VkStructureType {@link #sType};
+ * void * {@link #pNext};
+ * VkFormat {@link #format};
+ * uint64_t {@link #externalFormat};
+ * VkFormatFeatureFlags2 {@link #formatFeatures};
+ * {@link VkComponentMapping VkComponentMapping} {@link #samplerYcbcrConversionComponents};
+ * VkSamplerYcbcrModelConversion {@link #suggestedYcbcrModel};
+ * VkSamplerYcbcrRange {@link #suggestedYcbcrRange};
+ * VkChromaLocation {@link #suggestedXChromaOffset};
+ * VkChromaLocation {@link #suggestedYChromaOffset};
+ * }
+ */
+public class VkAndroidHardwareBufferFormatProperties2ANDROID extends Struct implements NativeResource {
+
+ /** The struct size in bytes. */
+ public static final int SIZEOF;
+
+ /** The struct alignment in bytes. */
+ public static final int ALIGNOF;
+
+ /** The struct member offsets. */
+ public static final int
+ STYPE,
+ PNEXT,
+ FORMAT,
+ EXTERNALFORMAT,
+ FORMATFEATURES,
+ SAMPLERYCBCRCONVERSIONCOMPONENTS,
+ SUGGESTEDYCBCRMODEL,
+ SUGGESTEDYCBCRRANGE,
+ SUGGESTEDXCHROMAOFFSET,
+ SUGGESTEDYCHROMAOFFSET;
+
+ static {
+ Layout layout = __struct(
+ __member(4),
+ __member(POINTER_SIZE),
+ __member(4),
+ __member(8),
+ __member(8),
+ __member(VkComponentMapping.SIZEOF, VkComponentMapping.ALIGNOF),
+ __member(4),
+ __member(4),
+ __member(4),
+ __member(4)
+ );
+
+ SIZEOF = layout.getSize();
+ ALIGNOF = layout.getAlignment();
+
+ STYPE = layout.offsetof(0);
+ PNEXT = layout.offsetof(1);
+ FORMAT = layout.offsetof(2);
+ EXTERNALFORMAT = layout.offsetof(3);
+ FORMATFEATURES = layout.offsetof(4);
+ SAMPLERYCBCRCONVERSIONCOMPONENTS = layout.offsetof(5);
+ SUGGESTEDYCBCRMODEL = layout.offsetof(6);
+ SUGGESTEDYCBCRRANGE = layout.offsetof(7);
+ SUGGESTEDXCHROMAOFFSET = layout.offsetof(8);
+ SUGGESTEDYCHROMAOFFSET = layout.offsetof(9);
+ }
+
+ /**
+ * Creates a {@code VkAndroidHardwareBufferFormatProperties2ANDROID} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * visible to the struct instance and vice versa.
+ *
+ * The created instance holds a strong reference to the container object.
+ */
+ public VkAndroidHardwareBufferFormatProperties2ANDROID(ByteBuffer container) {
+ super(memAddress(container), __checkContainer(container, SIZEOF));
+ }
+
+ @Override
+ public int sizeof() { return SIZEOF; }
+
+ /** the type of this structure. */
+ @NativeType("VkStructureType")
+ public int sType() { return nsType(address()); }
+ /** {@code NULL} or a pointer to a structure extending this structure. */
+ @NativeType("void *")
+ public long pNext() { return npNext(address()); }
+ /** the Vulkan format corresponding to the Android hardware buffer’s format, or {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED} if there is not an equivalent Vulkan format. */
+ @NativeType("VkFormat")
+ public int format() { return nformat(address()); }
+ /** an implementation-defined external format identifier for use with {@link VkExternalFormatANDROID}. It must not be zero. */
+ @NativeType("uint64_t")
+ public long externalFormat() { return nexternalFormat(address()); }
+ /** describes the capabilities of this external format when used with an image bound to memory imported from {@code buffer}. */
+ @NativeType("VkFormatFeatureFlags2")
+ public long formatFeatures() { return nformatFeatures(address()); }
+ /** the component swizzle that should be used in {@link VkSamplerYcbcrConversionCreateInfo}. */
+ public VkComponentMapping samplerYcbcrConversionComponents() { return nsamplerYcbcrConversionComponents(address()); }
+ /** a suggested color model to use in the {@link VkSamplerYcbcrConversionCreateInfo}. */
+ @NativeType("VkSamplerYcbcrModelConversion")
+ public int suggestedYcbcrModel() { return nsuggestedYcbcrModel(address()); }
+ /** a suggested numerical value range to use in {@link VkSamplerYcbcrConversionCreateInfo}. */
+ @NativeType("VkSamplerYcbcrRange")
+ public int suggestedYcbcrRange() { return nsuggestedYcbcrRange(address()); }
+ /** a suggested X chroma offset to use in {@link VkSamplerYcbcrConversionCreateInfo}. */
+ @NativeType("VkChromaLocation")
+ public int suggestedXChromaOffset() { return nsuggestedXChromaOffset(address()); }
+ /** a suggested Y chroma offset to use in {@link VkSamplerYcbcrConversionCreateInfo}. */
+ @NativeType("VkChromaLocation")
+ public int suggestedYChromaOffset() { return nsuggestedYChromaOffset(address()); }
+
+ /** Sets the specified value to the {@link #sType} field. */
+ public VkAndroidHardwareBufferFormatProperties2ANDROID sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID} value to the {@link #sType} field. */
+ public VkAndroidHardwareBufferFormatProperties2ANDROID sType$Default() { return sType(ANDROIDExternalMemoryAndroidHardwareBuffer.VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID); }
+ /** Sets the specified value to the {@link #pNext} field. */
+ public VkAndroidHardwareBufferFormatProperties2ANDROID pNext(@NativeType("void *") long value) { npNext(address(), value); return this; }
+
+ /** Initializes this struct with the specified values. */
+ public VkAndroidHardwareBufferFormatProperties2ANDROID set(
+ int sType,
+ long pNext
+ ) {
+ sType(sType);
+ pNext(pNext);
+
+ return this;
+ }
+
+ /**
+ * Copies the specified struct data to this struct.
+ *
+ * @param src the source struct
+ *
+ * @return this struct
+ */
+ public VkAndroidHardwareBufferFormatProperties2ANDROID set(VkAndroidHardwareBufferFormatProperties2ANDROID src) {
+ memCopy(src.address(), address(), SIZEOF);
+ return this;
+ }
+
+ // -----------------------------------
+
+ /** Returns a new {@code VkAndroidHardwareBufferFormatProperties2ANDROID} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkAndroidHardwareBufferFormatProperties2ANDROID malloc() {
+ return wrap(VkAndroidHardwareBufferFormatProperties2ANDROID.class, nmemAllocChecked(SIZEOF));
+ }
+
+ /** Returns a new {@code VkAndroidHardwareBufferFormatProperties2ANDROID} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkAndroidHardwareBufferFormatProperties2ANDROID calloc() {
+ return wrap(VkAndroidHardwareBufferFormatProperties2ANDROID.class, nmemCallocChecked(1, SIZEOF));
+ }
+
+ /** Returns a new {@code VkAndroidHardwareBufferFormatProperties2ANDROID} instance allocated with {@link BufferUtils}. */
+ public static VkAndroidHardwareBufferFormatProperties2ANDROID create() {
+ ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
+ return wrap(VkAndroidHardwareBufferFormatProperties2ANDROID.class, memAddress(container), container);
+ }
+
+ /** Returns a new {@code VkAndroidHardwareBufferFormatProperties2ANDROID} instance for the specified memory address. */
+ public static VkAndroidHardwareBufferFormatProperties2ANDROID create(long address) {
+ return wrap(VkAndroidHardwareBufferFormatProperties2ANDROID.class, address);
+ }
+
+ /** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkAndroidHardwareBufferFormatProperties2ANDROID createSafe(long address) {
+ return address == NULL ? null : wrap(VkAndroidHardwareBufferFormatProperties2ANDROID.class, address);
+ }
+
+ /**
+ * Returns a new {@link VkAndroidHardwareBufferFormatProperties2ANDROID.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferFormatProperties2ANDROID.Buffer malloc(int capacity) {
+ return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkAndroidHardwareBufferFormatProperties2ANDROID.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferFormatProperties2ANDROID.Buffer calloc(int capacity) {
+ return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkAndroidHardwareBufferFormatProperties2ANDROID.Buffer} instance allocated with {@link BufferUtils}.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferFormatProperties2ANDROID.Buffer create(int capacity) {
+ ByteBuffer container = __create(capacity, SIZEOF);
+ return wrap(Buffer.class, memAddress(container), capacity, container);
+ }
+
+ /**
+ * Create a {@link VkAndroidHardwareBufferFormatProperties2ANDROID.Buffer} instance at the specified memory.
+ *
+ * @param address the memory address
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferFormatProperties2ANDROID.Buffer create(long address, int capacity) {
+ return wrap(Buffer.class, address, capacity);
+ }
+
+ /** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkAndroidHardwareBufferFormatProperties2ANDROID.Buffer createSafe(long address, int capacity) {
+ return address == NULL ? null : wrap(Buffer.class, address, capacity);
+ }
+
+ /**
+ * Returns a new {@code VkAndroidHardwareBufferFormatProperties2ANDROID} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkAndroidHardwareBufferFormatProperties2ANDROID malloc(MemoryStack stack) {
+ return wrap(VkAndroidHardwareBufferFormatProperties2ANDROID.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@code VkAndroidHardwareBufferFormatProperties2ANDROID} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkAndroidHardwareBufferFormatProperties2ANDROID calloc(MemoryStack stack) {
+ return wrap(VkAndroidHardwareBufferFormatProperties2ANDROID.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@link VkAndroidHardwareBufferFormatProperties2ANDROID.Buffer} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferFormatProperties2ANDROID.Buffer malloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkAndroidHardwareBufferFormatProperties2ANDROID.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferFormatProperties2ANDROID.Buffer calloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
+ }
+
+ // -----------------------------------
+
+ /** Unsafe version of {@link #sType}. */
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkAndroidHardwareBufferFormatProperties2ANDROID.STYPE); }
+ /** Unsafe version of {@link #pNext}. */
+ public static long npNext(long struct) { return memGetAddress(struct + VkAndroidHardwareBufferFormatProperties2ANDROID.PNEXT); }
+ /** Unsafe version of {@link #format}. */
+ public static int nformat(long struct) { return UNSAFE.getInt(null, struct + VkAndroidHardwareBufferFormatProperties2ANDROID.FORMAT); }
+ /** Unsafe version of {@link #externalFormat}. */
+ public static long nexternalFormat(long struct) { return UNSAFE.getLong(null, struct + VkAndroidHardwareBufferFormatProperties2ANDROID.EXTERNALFORMAT); }
+ /** Unsafe version of {@link #formatFeatures}. */
+ public static long nformatFeatures(long struct) { return UNSAFE.getLong(null, struct + VkAndroidHardwareBufferFormatProperties2ANDROID.FORMATFEATURES); }
+ /** Unsafe version of {@link #samplerYcbcrConversionComponents}. */
+ public static VkComponentMapping nsamplerYcbcrConversionComponents(long struct) { return VkComponentMapping.create(struct + VkAndroidHardwareBufferFormatProperties2ANDROID.SAMPLERYCBCRCONVERSIONCOMPONENTS); }
+ /** Unsafe version of {@link #suggestedYcbcrModel}. */
+ public static int nsuggestedYcbcrModel(long struct) { return UNSAFE.getInt(null, struct + VkAndroidHardwareBufferFormatProperties2ANDROID.SUGGESTEDYCBCRMODEL); }
+ /** Unsafe version of {@link #suggestedYcbcrRange}. */
+ public static int nsuggestedYcbcrRange(long struct) { return UNSAFE.getInt(null, struct + VkAndroidHardwareBufferFormatProperties2ANDROID.SUGGESTEDYCBCRRANGE); }
+ /** Unsafe version of {@link #suggestedXChromaOffset}. */
+ public static int nsuggestedXChromaOffset(long struct) { return UNSAFE.getInt(null, struct + VkAndroidHardwareBufferFormatProperties2ANDROID.SUGGESTEDXCHROMAOFFSET); }
+ /** Unsafe version of {@link #suggestedYChromaOffset}. */
+ public static int nsuggestedYChromaOffset(long struct) { return UNSAFE.getInt(null, struct + VkAndroidHardwareBufferFormatProperties2ANDROID.SUGGESTEDYCHROMAOFFSET); }
+
+ /** Unsafe version of {@link #sType(int) sType}. */
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkAndroidHardwareBufferFormatProperties2ANDROID.STYPE, value); }
+ /** Unsafe version of {@link #pNext(long) pNext}. */
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkAndroidHardwareBufferFormatProperties2ANDROID.PNEXT, value); }
+
+ // -----------------------------------
+
+ /** An array of {@link VkAndroidHardwareBufferFormatProperties2ANDROID} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
+
+ private static final VkAndroidHardwareBufferFormatProperties2ANDROID ELEMENT_FACTORY = VkAndroidHardwareBufferFormatProperties2ANDROID.create(-1L);
+
+ /**
+ * Creates a new {@code VkAndroidHardwareBufferFormatProperties2ANDROID.Buffer} instance backed by the specified container.
+ *
+ * Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
+ * will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
+ * by {@link VkAndroidHardwareBufferFormatProperties2ANDROID#SIZEOF}, and its mark will be undefined.
+ *
+ * The created buffer instance holds a strong reference to the container object.
+ */
+ public Buffer(ByteBuffer container) {
+ super(container, container.remaining() / SIZEOF);
+ }
+
+ public Buffer(long address, int cap) {
+ super(address, null, -1, 0, cap, cap);
+ }
+
+ Buffer(long address, @Nullable ByteBuffer container, int mark, int pos, int lim, int cap) {
+ super(address, container, mark, pos, lim, cap);
+ }
+
+ @Override
+ protected Buffer self() {
+ return this;
+ }
+
+ @Override
+ protected VkAndroidHardwareBufferFormatProperties2ANDROID getElementFactory() {
+ return ELEMENT_FACTORY;
+ }
+
+ /** @return the value of the {@link VkAndroidHardwareBufferFormatProperties2ANDROID#sType} field. */
+ @NativeType("VkStructureType")
+ public int sType() { return VkAndroidHardwareBufferFormatProperties2ANDROID.nsType(address()); }
+ /** @return the value of the {@link VkAndroidHardwareBufferFormatProperties2ANDROID#pNext} field. */
+ @NativeType("void *")
+ public long pNext() { return VkAndroidHardwareBufferFormatProperties2ANDROID.npNext(address()); }
+ /** @return the value of the {@link VkAndroidHardwareBufferFormatProperties2ANDROID#format} field. */
+ @NativeType("VkFormat")
+ public int format() { return VkAndroidHardwareBufferFormatProperties2ANDROID.nformat(address()); }
+ /** @return the value of the {@link VkAndroidHardwareBufferFormatProperties2ANDROID#externalFormat} field. */
+ @NativeType("uint64_t")
+ public long externalFormat() { return VkAndroidHardwareBufferFormatProperties2ANDROID.nexternalFormat(address()); }
+ /** @return the value of the {@link VkAndroidHardwareBufferFormatProperties2ANDROID#formatFeatures} field. */
+ @NativeType("VkFormatFeatureFlags2")
+ public long formatFeatures() { return VkAndroidHardwareBufferFormatProperties2ANDROID.nformatFeatures(address()); }
+ /** @return a {@link VkComponentMapping} view of the {@link VkAndroidHardwareBufferFormatProperties2ANDROID#samplerYcbcrConversionComponents} field. */
+ public VkComponentMapping samplerYcbcrConversionComponents() { return VkAndroidHardwareBufferFormatProperties2ANDROID.nsamplerYcbcrConversionComponents(address()); }
+ /** @return the value of the {@link VkAndroidHardwareBufferFormatProperties2ANDROID#suggestedYcbcrModel} field. */
+ @NativeType("VkSamplerYcbcrModelConversion")
+ public int suggestedYcbcrModel() { return VkAndroidHardwareBufferFormatProperties2ANDROID.nsuggestedYcbcrModel(address()); }
+ /** @return the value of the {@link VkAndroidHardwareBufferFormatProperties2ANDROID#suggestedYcbcrRange} field. */
+ @NativeType("VkSamplerYcbcrRange")
+ public int suggestedYcbcrRange() { return VkAndroidHardwareBufferFormatProperties2ANDROID.nsuggestedYcbcrRange(address()); }
+ /** @return the value of the {@link VkAndroidHardwareBufferFormatProperties2ANDROID#suggestedXChromaOffset} field. */
+ @NativeType("VkChromaLocation")
+ public int suggestedXChromaOffset() { return VkAndroidHardwareBufferFormatProperties2ANDROID.nsuggestedXChromaOffset(address()); }
+ /** @return the value of the {@link VkAndroidHardwareBufferFormatProperties2ANDROID#suggestedYChromaOffset} field. */
+ @NativeType("VkChromaLocation")
+ public int suggestedYChromaOffset() { return VkAndroidHardwareBufferFormatProperties2ANDROID.nsuggestedYChromaOffset(address()); }
+
+ /** Sets the specified value to the {@link VkAndroidHardwareBufferFormatProperties2ANDROID#sType} field. */
+ public VkAndroidHardwareBufferFormatProperties2ANDROID.Buffer sType(@NativeType("VkStructureType") int value) { VkAndroidHardwareBufferFormatProperties2ANDROID.nsType(address(), value); return this; }
+ /** Sets the {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID} value to the {@link VkAndroidHardwareBufferFormatProperties2ANDROID#sType} field. */
+ public VkAndroidHardwareBufferFormatProperties2ANDROID.Buffer sType$Default() { return sType(ANDROIDExternalMemoryAndroidHardwareBuffer.VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID); }
+ /** Sets the specified value to the {@link VkAndroidHardwareBufferFormatProperties2ANDROID#pNext} field. */
+ public VkAndroidHardwareBufferFormatProperties2ANDROID.Buffer pNext(@NativeType("void *") long value) { VkAndroidHardwareBufferFormatProperties2ANDROID.npNext(address(), value); return this; }
+
+ }
+
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkAndroidHardwareBufferFormatPropertiesANDROID.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkAndroidHardwareBufferFormatPropertiesANDROID.java
new file mode 100644
index 0000000000..3e7b1e9919
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkAndroidHardwareBufferFormatPropertiesANDROID.java
@@ -0,0 +1,408 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package org.lwjgl.vulkan;
+
+import javax.annotation.*;
+
+import java.nio.*;
+
+import org.lwjgl.*;
+import org.lwjgl.system.*;
+
+import static org.lwjgl.system.MemoryUtil.*;
+import static org.lwjgl.system.MemoryStack.*;
+
+/**
+ * Structure describing the image format properties of an Android hardware buffer.
+ *
+ * Description
+ *
+ * If the Android hardware buffer has one of the formats listed in the Format Equivalence table, then {@code format} must have the equivalent Vulkan format listed in the table. Otherwise, {@code format} may be {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}, indicating the Android hardware buffer can only be used with an external format.
+ *
+ * The {@code formatFeatures} member must include {@link VK10#VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT FORMAT_FEATURE_SAMPLED_IMAGE_BIT} and at least one of {@link VK11#VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT} or {@link VK11#VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT}, and should include {@link VK10#VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT} and {@link VK11#VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT}.
+ *
+ * Note
+ *
+ *
The {@code formatFeatures} member only indicates the features available when using an external-format image created from the Android hardware buffer. Images from Android hardware buffers with a format other than {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED} are subject to the format capabilities obtained from {@link VK11#vkGetPhysicalDeviceFormatProperties2 GetPhysicalDeviceFormatProperties2}, and {@link VK11#vkGetPhysicalDeviceImageFormatProperties2 GetPhysicalDeviceImageFormatProperties2} with appropriate parameters. These sets of features are independent of each other, e.g. the external format will support sampler Y′CBCR conversion even if the non-external format does not, and writing to non-external format images is possible but writing to external format images is not.
+ *
+ *
+ * Android hardware buffers with the same external format must have the same support for {@link VK10#VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT}, {@link VK11#VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT}, {@link VK11#VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT}, {@link VK11#VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT}, {@link VK11#VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT}, and {@link VK11#VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT}. in {@code formatFeatures}. Other format features may differ between Android hardware buffers that have the same external format. This allows applications to use the same {@code VkSamplerYcbcrConversion} object (and samplers and pipelines created from them) for any Android hardware buffers that have the same external format.
+ *
+ * If {@code format} is not {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}, then the value of {@code samplerYcbcrConversionComponents} must be valid when used as the {@code components} member of {@link VkSamplerYcbcrConversionCreateInfo} with that format. If {@code format} is {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}, all members of {@code samplerYcbcrConversionComponents} must be the identity swizzle.
+ *
+ * Implementations may not always be able to determine the color model, numerical range, or chroma offsets of the image contents, so the values in {@link VkAndroidHardwareBufferFormatPropertiesANDROID} are only suggestions. Applications should treat these values as sensible defaults to use in the absence of more reliable information obtained through some other means. If the underlying physical device is also usable via OpenGL ES with the {@code GL_OES_EGL_image_external} extension, the implementation should suggest values that will produce similar sampled values as would be obtained by sampling the same external image via {@code samplerExternalOES} in OpenGL ES using equivalent sampler parameters.
+ *
+ * Note
+ *
+ *
Since {@code GL_OES_EGL_image_external} does not require the same sampling and conversion calculations as Vulkan does, achieving identical results between APIs may not be possible on some implementations.
+ *
+ *
+ * Valid Usage (Implicit)
+ *
+ *
+ * - {@code sType} must be {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID}
+ *
+ *
+ * See Also
+ *
+ * {@link VkComponentMapping}
+ *
+ * Layout
+ *
+ *
+ * struct VkAndroidHardwareBufferFormatPropertiesANDROID {
+ * VkStructureType {@link #sType};
+ * void * {@link #pNext};
+ * VkFormat {@link #format};
+ * uint64_t {@link #externalFormat};
+ * VkFormatFeatureFlags {@link #formatFeatures};
+ * {@link VkComponentMapping VkComponentMapping} {@link #samplerYcbcrConversionComponents};
+ * VkSamplerYcbcrModelConversion {@link #suggestedYcbcrModel};
+ * VkSamplerYcbcrRange {@link #suggestedYcbcrRange};
+ * VkChromaLocation {@link #suggestedXChromaOffset};
+ * VkChromaLocation {@link #suggestedYChromaOffset};
+ * }
+ */
+public class VkAndroidHardwareBufferFormatPropertiesANDROID extends Struct implements NativeResource {
+
+ /** The struct size in bytes. */
+ public static final int SIZEOF;
+
+ /** The struct alignment in bytes. */
+ public static final int ALIGNOF;
+
+ /** The struct member offsets. */
+ public static final int
+ STYPE,
+ PNEXT,
+ FORMAT,
+ EXTERNALFORMAT,
+ FORMATFEATURES,
+ SAMPLERYCBCRCONVERSIONCOMPONENTS,
+ SUGGESTEDYCBCRMODEL,
+ SUGGESTEDYCBCRRANGE,
+ SUGGESTEDXCHROMAOFFSET,
+ SUGGESTEDYCHROMAOFFSET;
+
+ static {
+ Layout layout = __struct(
+ __member(4),
+ __member(POINTER_SIZE),
+ __member(4),
+ __member(8),
+ __member(4),
+ __member(VkComponentMapping.SIZEOF, VkComponentMapping.ALIGNOF),
+ __member(4),
+ __member(4),
+ __member(4),
+ __member(4)
+ );
+
+ SIZEOF = layout.getSize();
+ ALIGNOF = layout.getAlignment();
+
+ STYPE = layout.offsetof(0);
+ PNEXT = layout.offsetof(1);
+ FORMAT = layout.offsetof(2);
+ EXTERNALFORMAT = layout.offsetof(3);
+ FORMATFEATURES = layout.offsetof(4);
+ SAMPLERYCBCRCONVERSIONCOMPONENTS = layout.offsetof(5);
+ SUGGESTEDYCBCRMODEL = layout.offsetof(6);
+ SUGGESTEDYCBCRRANGE = layout.offsetof(7);
+ SUGGESTEDXCHROMAOFFSET = layout.offsetof(8);
+ SUGGESTEDYCHROMAOFFSET = layout.offsetof(9);
+ }
+
+ /**
+ * Creates a {@code VkAndroidHardwareBufferFormatPropertiesANDROID} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * visible to the struct instance and vice versa.
+ *
+ * The created instance holds a strong reference to the container object.
+ */
+ public VkAndroidHardwareBufferFormatPropertiesANDROID(ByteBuffer container) {
+ super(memAddress(container), __checkContainer(container, SIZEOF));
+ }
+
+ @Override
+ public int sizeof() { return SIZEOF; }
+
+ /** the type of this structure. */
+ @NativeType("VkStructureType")
+ public int sType() { return nsType(address()); }
+ /** {@code NULL} or a pointer to a structure extending this structure. */
+ @NativeType("void *")
+ public long pNext() { return npNext(address()); }
+ /** the Vulkan format corresponding to the Android hardware buffer’s format, or {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED} if there is not an equivalent Vulkan format. */
+ @NativeType("VkFormat")
+ public int format() { return nformat(address()); }
+ /** an implementation-defined external format identifier for use with {@link VkExternalFormatANDROID}. It must not be zero. */
+ @NativeType("uint64_t")
+ public long externalFormat() { return nexternalFormat(address()); }
+ /** describes the capabilities of this external format when used with an image bound to memory imported from {@code buffer}. */
+ @NativeType("VkFormatFeatureFlags")
+ public int formatFeatures() { return nformatFeatures(address()); }
+ /** the component swizzle that should be used in {@link VkSamplerYcbcrConversionCreateInfo}. */
+ public VkComponentMapping samplerYcbcrConversionComponents() { return nsamplerYcbcrConversionComponents(address()); }
+ /** a suggested color model to use in the {@link VkSamplerYcbcrConversionCreateInfo}. */
+ @NativeType("VkSamplerYcbcrModelConversion")
+ public int suggestedYcbcrModel() { return nsuggestedYcbcrModel(address()); }
+ /** a suggested numerical value range to use in {@link VkSamplerYcbcrConversionCreateInfo}. */
+ @NativeType("VkSamplerYcbcrRange")
+ public int suggestedYcbcrRange() { return nsuggestedYcbcrRange(address()); }
+ /** a suggested X chroma offset to use in {@link VkSamplerYcbcrConversionCreateInfo}. */
+ @NativeType("VkChromaLocation")
+ public int suggestedXChromaOffset() { return nsuggestedXChromaOffset(address()); }
+ /** a suggested Y chroma offset to use in {@link VkSamplerYcbcrConversionCreateInfo}. */
+ @NativeType("VkChromaLocation")
+ public int suggestedYChromaOffset() { return nsuggestedYChromaOffset(address()); }
+
+ /** Sets the specified value to the {@link #sType} field. */
+ public VkAndroidHardwareBufferFormatPropertiesANDROID sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID} value to the {@link #sType} field. */
+ public VkAndroidHardwareBufferFormatPropertiesANDROID sType$Default() { return sType(ANDROIDExternalMemoryAndroidHardwareBuffer.VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID); }
+ /** Sets the specified value to the {@link #pNext} field. */
+ public VkAndroidHardwareBufferFormatPropertiesANDROID pNext(@NativeType("void *") long value) { npNext(address(), value); return this; }
+
+ /** Initializes this struct with the specified values. */
+ public VkAndroidHardwareBufferFormatPropertiesANDROID set(
+ int sType,
+ long pNext
+ ) {
+ sType(sType);
+ pNext(pNext);
+
+ return this;
+ }
+
+ /**
+ * Copies the specified struct data to this struct.
+ *
+ * @param src the source struct
+ *
+ * @return this struct
+ */
+ public VkAndroidHardwareBufferFormatPropertiesANDROID set(VkAndroidHardwareBufferFormatPropertiesANDROID src) {
+ memCopy(src.address(), address(), SIZEOF);
+ return this;
+ }
+
+ // -----------------------------------
+
+ /** Returns a new {@code VkAndroidHardwareBufferFormatPropertiesANDROID} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkAndroidHardwareBufferFormatPropertiesANDROID malloc() {
+ return wrap(VkAndroidHardwareBufferFormatPropertiesANDROID.class, nmemAllocChecked(SIZEOF));
+ }
+
+ /** Returns a new {@code VkAndroidHardwareBufferFormatPropertiesANDROID} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkAndroidHardwareBufferFormatPropertiesANDROID calloc() {
+ return wrap(VkAndroidHardwareBufferFormatPropertiesANDROID.class, nmemCallocChecked(1, SIZEOF));
+ }
+
+ /** Returns a new {@code VkAndroidHardwareBufferFormatPropertiesANDROID} instance allocated with {@link BufferUtils}. */
+ public static VkAndroidHardwareBufferFormatPropertiesANDROID create() {
+ ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
+ return wrap(VkAndroidHardwareBufferFormatPropertiesANDROID.class, memAddress(container), container);
+ }
+
+ /** Returns a new {@code VkAndroidHardwareBufferFormatPropertiesANDROID} instance for the specified memory address. */
+ public static VkAndroidHardwareBufferFormatPropertiesANDROID create(long address) {
+ return wrap(VkAndroidHardwareBufferFormatPropertiesANDROID.class, address);
+ }
+
+ /** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkAndroidHardwareBufferFormatPropertiesANDROID createSafe(long address) {
+ return address == NULL ? null : wrap(VkAndroidHardwareBufferFormatPropertiesANDROID.class, address);
+ }
+
+ /**
+ * Returns a new {@link VkAndroidHardwareBufferFormatPropertiesANDROID.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferFormatPropertiesANDROID.Buffer malloc(int capacity) {
+ return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkAndroidHardwareBufferFormatPropertiesANDROID.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferFormatPropertiesANDROID.Buffer calloc(int capacity) {
+ return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkAndroidHardwareBufferFormatPropertiesANDROID.Buffer} instance allocated with {@link BufferUtils}.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferFormatPropertiesANDROID.Buffer create(int capacity) {
+ ByteBuffer container = __create(capacity, SIZEOF);
+ return wrap(Buffer.class, memAddress(container), capacity, container);
+ }
+
+ /**
+ * Create a {@link VkAndroidHardwareBufferFormatPropertiesANDROID.Buffer} instance at the specified memory.
+ *
+ * @param address the memory address
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferFormatPropertiesANDROID.Buffer create(long address, int capacity) {
+ return wrap(Buffer.class, address, capacity);
+ }
+
+ /** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkAndroidHardwareBufferFormatPropertiesANDROID.Buffer createSafe(long address, int capacity) {
+ return address == NULL ? null : wrap(Buffer.class, address, capacity);
+ }
+
+ /**
+ * Returns a new {@code VkAndroidHardwareBufferFormatPropertiesANDROID} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkAndroidHardwareBufferFormatPropertiesANDROID malloc(MemoryStack stack) {
+ return wrap(VkAndroidHardwareBufferFormatPropertiesANDROID.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@code VkAndroidHardwareBufferFormatPropertiesANDROID} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkAndroidHardwareBufferFormatPropertiesANDROID calloc(MemoryStack stack) {
+ return wrap(VkAndroidHardwareBufferFormatPropertiesANDROID.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@link VkAndroidHardwareBufferFormatPropertiesANDROID.Buffer} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferFormatPropertiesANDROID.Buffer malloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkAndroidHardwareBufferFormatPropertiesANDROID.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferFormatPropertiesANDROID.Buffer calloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
+ }
+
+ // -----------------------------------
+
+ /** Unsafe version of {@link #sType}. */
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkAndroidHardwareBufferFormatPropertiesANDROID.STYPE); }
+ /** Unsafe version of {@link #pNext}. */
+ public static long npNext(long struct) { return memGetAddress(struct + VkAndroidHardwareBufferFormatPropertiesANDROID.PNEXT); }
+ /** Unsafe version of {@link #format}. */
+ public static int nformat(long struct) { return UNSAFE.getInt(null, struct + VkAndroidHardwareBufferFormatPropertiesANDROID.FORMAT); }
+ /** Unsafe version of {@link #externalFormat}. */
+ public static long nexternalFormat(long struct) { return UNSAFE.getLong(null, struct + VkAndroidHardwareBufferFormatPropertiesANDROID.EXTERNALFORMAT); }
+ /** Unsafe version of {@link #formatFeatures}. */
+ public static int nformatFeatures(long struct) { return UNSAFE.getInt(null, struct + VkAndroidHardwareBufferFormatPropertiesANDROID.FORMATFEATURES); }
+ /** Unsafe version of {@link #samplerYcbcrConversionComponents}. */
+ public static VkComponentMapping nsamplerYcbcrConversionComponents(long struct) { return VkComponentMapping.create(struct + VkAndroidHardwareBufferFormatPropertiesANDROID.SAMPLERYCBCRCONVERSIONCOMPONENTS); }
+ /** Unsafe version of {@link #suggestedYcbcrModel}. */
+ public static int nsuggestedYcbcrModel(long struct) { return UNSAFE.getInt(null, struct + VkAndroidHardwareBufferFormatPropertiesANDROID.SUGGESTEDYCBCRMODEL); }
+ /** Unsafe version of {@link #suggestedYcbcrRange}. */
+ public static int nsuggestedYcbcrRange(long struct) { return UNSAFE.getInt(null, struct + VkAndroidHardwareBufferFormatPropertiesANDROID.SUGGESTEDYCBCRRANGE); }
+ /** Unsafe version of {@link #suggestedXChromaOffset}. */
+ public static int nsuggestedXChromaOffset(long struct) { return UNSAFE.getInt(null, struct + VkAndroidHardwareBufferFormatPropertiesANDROID.SUGGESTEDXCHROMAOFFSET); }
+ /** Unsafe version of {@link #suggestedYChromaOffset}. */
+ public static int nsuggestedYChromaOffset(long struct) { return UNSAFE.getInt(null, struct + VkAndroidHardwareBufferFormatPropertiesANDROID.SUGGESTEDYCHROMAOFFSET); }
+
+ /** Unsafe version of {@link #sType(int) sType}. */
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkAndroidHardwareBufferFormatPropertiesANDROID.STYPE, value); }
+ /** Unsafe version of {@link #pNext(long) pNext}. */
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkAndroidHardwareBufferFormatPropertiesANDROID.PNEXT, value); }
+
+ // -----------------------------------
+
+ /** An array of {@link VkAndroidHardwareBufferFormatPropertiesANDROID} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
+
+ private static final VkAndroidHardwareBufferFormatPropertiesANDROID ELEMENT_FACTORY = VkAndroidHardwareBufferFormatPropertiesANDROID.create(-1L);
+
+ /**
+ * Creates a new {@code VkAndroidHardwareBufferFormatPropertiesANDROID.Buffer} instance backed by the specified container.
+ *
+ * Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
+ * will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
+ * by {@link VkAndroidHardwareBufferFormatPropertiesANDROID#SIZEOF}, and its mark will be undefined.
+ *
+ * The created buffer instance holds a strong reference to the container object.
+ */
+ public Buffer(ByteBuffer container) {
+ super(container, container.remaining() / SIZEOF);
+ }
+
+ public Buffer(long address, int cap) {
+ super(address, null, -1, 0, cap, cap);
+ }
+
+ Buffer(long address, @Nullable ByteBuffer container, int mark, int pos, int lim, int cap) {
+ super(address, container, mark, pos, lim, cap);
+ }
+
+ @Override
+ protected Buffer self() {
+ return this;
+ }
+
+ @Override
+ protected VkAndroidHardwareBufferFormatPropertiesANDROID getElementFactory() {
+ return ELEMENT_FACTORY;
+ }
+
+ /** @return the value of the {@link VkAndroidHardwareBufferFormatPropertiesANDROID#sType} field. */
+ @NativeType("VkStructureType")
+ public int sType() { return VkAndroidHardwareBufferFormatPropertiesANDROID.nsType(address()); }
+ /** @return the value of the {@link VkAndroidHardwareBufferFormatPropertiesANDROID#pNext} field. */
+ @NativeType("void *")
+ public long pNext() { return VkAndroidHardwareBufferFormatPropertiesANDROID.npNext(address()); }
+ /** @return the value of the {@link VkAndroidHardwareBufferFormatPropertiesANDROID#format} field. */
+ @NativeType("VkFormat")
+ public int format() { return VkAndroidHardwareBufferFormatPropertiesANDROID.nformat(address()); }
+ /** @return the value of the {@link VkAndroidHardwareBufferFormatPropertiesANDROID#externalFormat} field. */
+ @NativeType("uint64_t")
+ public long externalFormat() { return VkAndroidHardwareBufferFormatPropertiesANDROID.nexternalFormat(address()); }
+ /** @return the value of the {@link VkAndroidHardwareBufferFormatPropertiesANDROID#formatFeatures} field. */
+ @NativeType("VkFormatFeatureFlags")
+ public int formatFeatures() { return VkAndroidHardwareBufferFormatPropertiesANDROID.nformatFeatures(address()); }
+ /** @return a {@link VkComponentMapping} view of the {@link VkAndroidHardwareBufferFormatPropertiesANDROID#samplerYcbcrConversionComponents} field. */
+ public VkComponentMapping samplerYcbcrConversionComponents() { return VkAndroidHardwareBufferFormatPropertiesANDROID.nsamplerYcbcrConversionComponents(address()); }
+ /** @return the value of the {@link VkAndroidHardwareBufferFormatPropertiesANDROID#suggestedYcbcrModel} field. */
+ @NativeType("VkSamplerYcbcrModelConversion")
+ public int suggestedYcbcrModel() { return VkAndroidHardwareBufferFormatPropertiesANDROID.nsuggestedYcbcrModel(address()); }
+ /** @return the value of the {@link VkAndroidHardwareBufferFormatPropertiesANDROID#suggestedYcbcrRange} field. */
+ @NativeType("VkSamplerYcbcrRange")
+ public int suggestedYcbcrRange() { return VkAndroidHardwareBufferFormatPropertiesANDROID.nsuggestedYcbcrRange(address()); }
+ /** @return the value of the {@link VkAndroidHardwareBufferFormatPropertiesANDROID#suggestedXChromaOffset} field. */
+ @NativeType("VkChromaLocation")
+ public int suggestedXChromaOffset() { return VkAndroidHardwareBufferFormatPropertiesANDROID.nsuggestedXChromaOffset(address()); }
+ /** @return the value of the {@link VkAndroidHardwareBufferFormatPropertiesANDROID#suggestedYChromaOffset} field. */
+ @NativeType("VkChromaLocation")
+ public int suggestedYChromaOffset() { return VkAndroidHardwareBufferFormatPropertiesANDROID.nsuggestedYChromaOffset(address()); }
+
+ /** Sets the specified value to the {@link VkAndroidHardwareBufferFormatPropertiesANDROID#sType} field. */
+ public VkAndroidHardwareBufferFormatPropertiesANDROID.Buffer sType(@NativeType("VkStructureType") int value) { VkAndroidHardwareBufferFormatPropertiesANDROID.nsType(address(), value); return this; }
+ /** Sets the {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID} value to the {@link VkAndroidHardwareBufferFormatPropertiesANDROID#sType} field. */
+ public VkAndroidHardwareBufferFormatPropertiesANDROID.Buffer sType$Default() { return sType(ANDROIDExternalMemoryAndroidHardwareBuffer.VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID); }
+ /** Sets the specified value to the {@link VkAndroidHardwareBufferFormatPropertiesANDROID#pNext} field. */
+ public VkAndroidHardwareBufferFormatPropertiesANDROID.Buffer pNext(@NativeType("void *") long value) { VkAndroidHardwareBufferFormatPropertiesANDROID.npNext(address(), value); return this; }
+
+ }
+
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkAndroidHardwareBufferPropertiesANDROID.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkAndroidHardwareBufferPropertiesANDROID.java
new file mode 100644
index 0000000000..72c3807fb6
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkAndroidHardwareBufferPropertiesANDROID.java
@@ -0,0 +1,326 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package org.lwjgl.vulkan;
+
+import javax.annotation.*;
+
+import java.nio.*;
+
+import org.lwjgl.*;
+import org.lwjgl.system.*;
+
+import static org.lwjgl.system.MemoryUtil.*;
+import static org.lwjgl.system.MemoryStack.*;
+
+/**
+ * Properties of External Memory Android Hardware Buffers.
+ *
+ * Valid Usage (Implicit)
+ *
+ *
+ * - {@code sType} must be {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID}
+ * - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of {@link VkAndroidHardwareBufferFormatProperties2ANDROID} or {@link VkAndroidHardwareBufferFormatPropertiesANDROID}
+ * - The {@code sType} value of each struct in the {@code pNext} chain must be unique
+ *
+ *
+ * See Also
+ *
+ * {@link ANDROIDExternalMemoryAndroidHardwareBuffer#vkGetAndroidHardwareBufferPropertiesANDROID GetAndroidHardwareBufferPropertiesANDROID}
+ *
+ * Layout
+ *
+ *
+ * struct VkAndroidHardwareBufferPropertiesANDROID {
+ * VkStructureType {@link #sType};
+ * void * {@link #pNext};
+ * VkDeviceSize {@link #allocationSize};
+ * uint32_t {@link #memoryTypeBits};
+ * }
+ */
+public class VkAndroidHardwareBufferPropertiesANDROID extends Struct implements NativeResource {
+
+ /** The struct size in bytes. */
+ public static final int SIZEOF;
+
+ /** The struct alignment in bytes. */
+ public static final int ALIGNOF;
+
+ /** The struct member offsets. */
+ public static final int
+ STYPE,
+ PNEXT,
+ ALLOCATIONSIZE,
+ MEMORYTYPEBITS;
+
+ static {
+ Layout layout = __struct(
+ __member(4),
+ __member(POINTER_SIZE),
+ __member(8),
+ __member(4)
+ );
+
+ SIZEOF = layout.getSize();
+ ALIGNOF = layout.getAlignment();
+
+ STYPE = layout.offsetof(0);
+ PNEXT = layout.offsetof(1);
+ ALLOCATIONSIZE = layout.offsetof(2);
+ MEMORYTYPEBITS = layout.offsetof(3);
+ }
+
+ /**
+ * Creates a {@code VkAndroidHardwareBufferPropertiesANDROID} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * visible to the struct instance and vice versa.
+ *
+ * The created instance holds a strong reference to the container object.
+ */
+ public VkAndroidHardwareBufferPropertiesANDROID(ByteBuffer container) {
+ super(memAddress(container), __checkContainer(container, SIZEOF));
+ }
+
+ @Override
+ public int sizeof() { return SIZEOF; }
+
+ /** the type of this structure. */
+ @NativeType("VkStructureType")
+ public int sType() { return nsType(address()); }
+ /** {@code NULL} or a pointer to a structure extending this structure. */
+ @NativeType("void *")
+ public long pNext() { return npNext(address()); }
+ /** the size of the external memory */
+ @NativeType("VkDeviceSize")
+ public long allocationSize() { return nallocationSize(address()); }
+ /** a bitmask containing one bit set for every memory type which the specified Android hardware buffer can be imported as. */
+ @NativeType("uint32_t")
+ public int memoryTypeBits() { return nmemoryTypeBits(address()); }
+
+ /** Sets the specified value to the {@link #sType} field. */
+ public VkAndroidHardwareBufferPropertiesANDROID sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID} value to the {@link #sType} field. */
+ public VkAndroidHardwareBufferPropertiesANDROID sType$Default() { return sType(ANDROIDExternalMemoryAndroidHardwareBuffer.VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID); }
+ /** Sets the specified value to the {@link #pNext} field. */
+ public VkAndroidHardwareBufferPropertiesANDROID pNext(@NativeType("void *") long value) { npNext(address(), value); return this; }
+ /** Prepends the specified {@link VkAndroidHardwareBufferFormatProperties2ANDROID} value to the {@code pNext} chain. */
+ public VkAndroidHardwareBufferPropertiesANDROID pNext(VkAndroidHardwareBufferFormatProperties2ANDROID value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkAndroidHardwareBufferFormatPropertiesANDROID} value to the {@code pNext} chain. */
+ public VkAndroidHardwareBufferPropertiesANDROID pNext(VkAndroidHardwareBufferFormatPropertiesANDROID value) { return this.pNext(value.pNext(this.pNext()).address()); }
+
+ /** Initializes this struct with the specified values. */
+ public VkAndroidHardwareBufferPropertiesANDROID set(
+ int sType,
+ long pNext
+ ) {
+ sType(sType);
+ pNext(pNext);
+
+ return this;
+ }
+
+ /**
+ * Copies the specified struct data to this struct.
+ *
+ * @param src the source struct
+ *
+ * @return this struct
+ */
+ public VkAndroidHardwareBufferPropertiesANDROID set(VkAndroidHardwareBufferPropertiesANDROID src) {
+ memCopy(src.address(), address(), SIZEOF);
+ return this;
+ }
+
+ // -----------------------------------
+
+ /** Returns a new {@code VkAndroidHardwareBufferPropertiesANDROID} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkAndroidHardwareBufferPropertiesANDROID malloc() {
+ return wrap(VkAndroidHardwareBufferPropertiesANDROID.class, nmemAllocChecked(SIZEOF));
+ }
+
+ /** Returns a new {@code VkAndroidHardwareBufferPropertiesANDROID} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkAndroidHardwareBufferPropertiesANDROID calloc() {
+ return wrap(VkAndroidHardwareBufferPropertiesANDROID.class, nmemCallocChecked(1, SIZEOF));
+ }
+
+ /** Returns a new {@code VkAndroidHardwareBufferPropertiesANDROID} instance allocated with {@link BufferUtils}. */
+ public static VkAndroidHardwareBufferPropertiesANDROID create() {
+ ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
+ return wrap(VkAndroidHardwareBufferPropertiesANDROID.class, memAddress(container), container);
+ }
+
+ /** Returns a new {@code VkAndroidHardwareBufferPropertiesANDROID} instance for the specified memory address. */
+ public static VkAndroidHardwareBufferPropertiesANDROID create(long address) {
+ return wrap(VkAndroidHardwareBufferPropertiesANDROID.class, address);
+ }
+
+ /** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkAndroidHardwareBufferPropertiesANDROID createSafe(long address) {
+ return address == NULL ? null : wrap(VkAndroidHardwareBufferPropertiesANDROID.class, address);
+ }
+
+ /**
+ * Returns a new {@link VkAndroidHardwareBufferPropertiesANDROID.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferPropertiesANDROID.Buffer malloc(int capacity) {
+ return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkAndroidHardwareBufferPropertiesANDROID.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferPropertiesANDROID.Buffer calloc(int capacity) {
+ return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkAndroidHardwareBufferPropertiesANDROID.Buffer} instance allocated with {@link BufferUtils}.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferPropertiesANDROID.Buffer create(int capacity) {
+ ByteBuffer container = __create(capacity, SIZEOF);
+ return wrap(Buffer.class, memAddress(container), capacity, container);
+ }
+
+ /**
+ * Create a {@link VkAndroidHardwareBufferPropertiesANDROID.Buffer} instance at the specified memory.
+ *
+ * @param address the memory address
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferPropertiesANDROID.Buffer create(long address, int capacity) {
+ return wrap(Buffer.class, address, capacity);
+ }
+
+ /** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkAndroidHardwareBufferPropertiesANDROID.Buffer createSafe(long address, int capacity) {
+ return address == NULL ? null : wrap(Buffer.class, address, capacity);
+ }
+
+ /**
+ * Returns a new {@code VkAndroidHardwareBufferPropertiesANDROID} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkAndroidHardwareBufferPropertiesANDROID malloc(MemoryStack stack) {
+ return wrap(VkAndroidHardwareBufferPropertiesANDROID.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@code VkAndroidHardwareBufferPropertiesANDROID} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkAndroidHardwareBufferPropertiesANDROID calloc(MemoryStack stack) {
+ return wrap(VkAndroidHardwareBufferPropertiesANDROID.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@link VkAndroidHardwareBufferPropertiesANDROID.Buffer} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferPropertiesANDROID.Buffer malloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkAndroidHardwareBufferPropertiesANDROID.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferPropertiesANDROID.Buffer calloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
+ }
+
+ // -----------------------------------
+
+ /** Unsafe version of {@link #sType}. */
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkAndroidHardwareBufferPropertiesANDROID.STYPE); }
+ /** Unsafe version of {@link #pNext}. */
+ public static long npNext(long struct) { return memGetAddress(struct + VkAndroidHardwareBufferPropertiesANDROID.PNEXT); }
+ /** Unsafe version of {@link #allocationSize}. */
+ public static long nallocationSize(long struct) { return UNSAFE.getLong(null, struct + VkAndroidHardwareBufferPropertiesANDROID.ALLOCATIONSIZE); }
+ /** Unsafe version of {@link #memoryTypeBits}. */
+ public static int nmemoryTypeBits(long struct) { return UNSAFE.getInt(null, struct + VkAndroidHardwareBufferPropertiesANDROID.MEMORYTYPEBITS); }
+
+ /** Unsafe version of {@link #sType(int) sType}. */
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkAndroidHardwareBufferPropertiesANDROID.STYPE, value); }
+ /** Unsafe version of {@link #pNext(long) pNext}. */
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkAndroidHardwareBufferPropertiesANDROID.PNEXT, value); }
+
+ // -----------------------------------
+
+ /** An array of {@link VkAndroidHardwareBufferPropertiesANDROID} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
+
+ private static final VkAndroidHardwareBufferPropertiesANDROID ELEMENT_FACTORY = VkAndroidHardwareBufferPropertiesANDROID.create(-1L);
+
+ /**
+ * Creates a new {@code VkAndroidHardwareBufferPropertiesANDROID.Buffer} instance backed by the specified container.
+ *
+ * Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
+ * will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
+ * by {@link VkAndroidHardwareBufferPropertiesANDROID#SIZEOF}, and its mark will be undefined.
+ *
+ * The created buffer instance holds a strong reference to the container object.
+ */
+ public Buffer(ByteBuffer container) {
+ super(container, container.remaining() / SIZEOF);
+ }
+
+ public Buffer(long address, int cap) {
+ super(address, null, -1, 0, cap, cap);
+ }
+
+ Buffer(long address, @Nullable ByteBuffer container, int mark, int pos, int lim, int cap) {
+ super(address, container, mark, pos, lim, cap);
+ }
+
+ @Override
+ protected Buffer self() {
+ return this;
+ }
+
+ @Override
+ protected VkAndroidHardwareBufferPropertiesANDROID getElementFactory() {
+ return ELEMENT_FACTORY;
+ }
+
+ /** @return the value of the {@link VkAndroidHardwareBufferPropertiesANDROID#sType} field. */
+ @NativeType("VkStructureType")
+ public int sType() { return VkAndroidHardwareBufferPropertiesANDROID.nsType(address()); }
+ /** @return the value of the {@link VkAndroidHardwareBufferPropertiesANDROID#pNext} field. */
+ @NativeType("void *")
+ public long pNext() { return VkAndroidHardwareBufferPropertiesANDROID.npNext(address()); }
+ /** @return the value of the {@link VkAndroidHardwareBufferPropertiesANDROID#allocationSize} field. */
+ @NativeType("VkDeviceSize")
+ public long allocationSize() { return VkAndroidHardwareBufferPropertiesANDROID.nallocationSize(address()); }
+ /** @return the value of the {@link VkAndroidHardwareBufferPropertiesANDROID#memoryTypeBits} field. */
+ @NativeType("uint32_t")
+ public int memoryTypeBits() { return VkAndroidHardwareBufferPropertiesANDROID.nmemoryTypeBits(address()); }
+
+ /** Sets the specified value to the {@link VkAndroidHardwareBufferPropertiesANDROID#sType} field. */
+ public VkAndroidHardwareBufferPropertiesANDROID.Buffer sType(@NativeType("VkStructureType") int value) { VkAndroidHardwareBufferPropertiesANDROID.nsType(address(), value); return this; }
+ /** Sets the {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID} value to the {@link VkAndroidHardwareBufferPropertiesANDROID#sType} field. */
+ public VkAndroidHardwareBufferPropertiesANDROID.Buffer sType$Default() { return sType(ANDROIDExternalMemoryAndroidHardwareBuffer.VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID); }
+ /** Sets the specified value to the {@link VkAndroidHardwareBufferPropertiesANDROID#pNext} field. */
+ public VkAndroidHardwareBufferPropertiesANDROID.Buffer pNext(@NativeType("void *") long value) { VkAndroidHardwareBufferPropertiesANDROID.npNext(address(), value); return this; }
+ /** Prepends the specified {@link VkAndroidHardwareBufferFormatProperties2ANDROID} value to the {@code pNext} chain. */
+ public VkAndroidHardwareBufferPropertiesANDROID.Buffer pNext(VkAndroidHardwareBufferFormatProperties2ANDROID value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkAndroidHardwareBufferFormatPropertiesANDROID} value to the {@code pNext} chain. */
+ public VkAndroidHardwareBufferPropertiesANDROID.Buffer pNext(VkAndroidHardwareBufferFormatPropertiesANDROID value) { return this.pNext(value.pNext(this.pNext()).address()); }
+
+ }
+
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkAndroidHardwareBufferUsageANDROID.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkAndroidHardwareBufferUsageANDROID.java
new file mode 100644
index 0000000000..3d9254a9b3
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkAndroidHardwareBufferUsageANDROID.java
@@ -0,0 +1,309 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package org.lwjgl.vulkan;
+
+import javax.annotation.*;
+
+import java.nio.*;
+
+import org.lwjgl.*;
+import org.lwjgl.system.*;
+
+import static org.lwjgl.system.MemoryUtil.*;
+import static org.lwjgl.system.MemoryStack.*;
+
+/**
+ * Struct containing Android hardware buffer usage flags.
+ *
+ * Description
+ *
+ * The {@code androidHardwareBufferUsage} field must include Android hardware buffer usage flags listed in the AHardwareBuffer Usage Equivalence table when the corresponding Vulkan image usage or image creation flags are included in the {@code usage} or {@code flags} fields of {@link VkPhysicalDeviceImageFormatInfo2}. It must include at least one GPU usage flag ({@code AHARDWAREBUFFER_USAGE_GPU_*}), even if none of the corresponding Vulkan usages or flags are requested.
+ *
+ * Note
+ *
+ *
Requiring at least one GPU usage flag ensures that Android hardware buffer memory will be allocated in a memory pool accessible to the Vulkan implementation, and that specializing the memory layout based on usage flags does not prevent it from being compatible with Vulkan. Implementations may avoid unnecessary restrictions caused by this requirement by using vendor usage flags to indicate that only the Vulkan uses indicated in {@link VkImageFormatProperties2} are required.
+ *
+ *
+ * Valid Usage (Implicit)
+ *
+ *
+ * - {@code sType} must be {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID}
+ *
+ *
+ * Layout
+ *
+ *
+ * struct VkAndroidHardwareBufferUsageANDROID {
+ * VkStructureType {@link #sType};
+ * void * {@link #pNext};
+ * uint64_t {@link #androidHardwareBufferUsage};
+ * }
+ */
+public class VkAndroidHardwareBufferUsageANDROID extends Struct implements NativeResource {
+
+ /** The struct size in bytes. */
+ public static final int SIZEOF;
+
+ /** The struct alignment in bytes. */
+ public static final int ALIGNOF;
+
+ /** The struct member offsets. */
+ public static final int
+ STYPE,
+ PNEXT,
+ ANDROIDHARDWAREBUFFERUSAGE;
+
+ static {
+ Layout layout = __struct(
+ __member(4),
+ __member(POINTER_SIZE),
+ __member(8)
+ );
+
+ SIZEOF = layout.getSize();
+ ALIGNOF = layout.getAlignment();
+
+ STYPE = layout.offsetof(0);
+ PNEXT = layout.offsetof(1);
+ ANDROIDHARDWAREBUFFERUSAGE = layout.offsetof(2);
+ }
+
+ /**
+ * Creates a {@code VkAndroidHardwareBufferUsageANDROID} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * visible to the struct instance and vice versa.
+ *
+ * The created instance holds a strong reference to the container object.
+ */
+ public VkAndroidHardwareBufferUsageANDROID(ByteBuffer container) {
+ super(memAddress(container), __checkContainer(container, SIZEOF));
+ }
+
+ @Override
+ public int sizeof() { return SIZEOF; }
+
+ /** the type of this structure. */
+ @NativeType("VkStructureType")
+ public int sType() { return nsType(address()); }
+ /** {@code NULL} or a pointer to a structure extending this structure. */
+ @NativeType("void *")
+ public long pNext() { return npNext(address()); }
+ /** returns the Android hardware buffer usage flags. */
+ @NativeType("uint64_t")
+ public long androidHardwareBufferUsage() { return nandroidHardwareBufferUsage(address()); }
+
+ /** Sets the specified value to the {@link #sType} field. */
+ public VkAndroidHardwareBufferUsageANDROID sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID} value to the {@link #sType} field. */
+ public VkAndroidHardwareBufferUsageANDROID sType$Default() { return sType(ANDROIDExternalMemoryAndroidHardwareBuffer.VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID); }
+ /** Sets the specified value to the {@link #pNext} field. */
+ public VkAndroidHardwareBufferUsageANDROID pNext(@NativeType("void *") long value) { npNext(address(), value); return this; }
+
+ /** Initializes this struct with the specified values. */
+ public VkAndroidHardwareBufferUsageANDROID set(
+ int sType,
+ long pNext
+ ) {
+ sType(sType);
+ pNext(pNext);
+
+ return this;
+ }
+
+ /**
+ * Copies the specified struct data to this struct.
+ *
+ * @param src the source struct
+ *
+ * @return this struct
+ */
+ public VkAndroidHardwareBufferUsageANDROID set(VkAndroidHardwareBufferUsageANDROID src) {
+ memCopy(src.address(), address(), SIZEOF);
+ return this;
+ }
+
+ // -----------------------------------
+
+ /** Returns a new {@code VkAndroidHardwareBufferUsageANDROID} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkAndroidHardwareBufferUsageANDROID malloc() {
+ return wrap(VkAndroidHardwareBufferUsageANDROID.class, nmemAllocChecked(SIZEOF));
+ }
+
+ /** Returns a new {@code VkAndroidHardwareBufferUsageANDROID} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkAndroidHardwareBufferUsageANDROID calloc() {
+ return wrap(VkAndroidHardwareBufferUsageANDROID.class, nmemCallocChecked(1, SIZEOF));
+ }
+
+ /** Returns a new {@code VkAndroidHardwareBufferUsageANDROID} instance allocated with {@link BufferUtils}. */
+ public static VkAndroidHardwareBufferUsageANDROID create() {
+ ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
+ return wrap(VkAndroidHardwareBufferUsageANDROID.class, memAddress(container), container);
+ }
+
+ /** Returns a new {@code VkAndroidHardwareBufferUsageANDROID} instance for the specified memory address. */
+ public static VkAndroidHardwareBufferUsageANDROID create(long address) {
+ return wrap(VkAndroidHardwareBufferUsageANDROID.class, address);
+ }
+
+ /** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkAndroidHardwareBufferUsageANDROID createSafe(long address) {
+ return address == NULL ? null : wrap(VkAndroidHardwareBufferUsageANDROID.class, address);
+ }
+
+ /**
+ * Returns a new {@link VkAndroidHardwareBufferUsageANDROID.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferUsageANDROID.Buffer malloc(int capacity) {
+ return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkAndroidHardwareBufferUsageANDROID.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferUsageANDROID.Buffer calloc(int capacity) {
+ return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkAndroidHardwareBufferUsageANDROID.Buffer} instance allocated with {@link BufferUtils}.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferUsageANDROID.Buffer create(int capacity) {
+ ByteBuffer container = __create(capacity, SIZEOF);
+ return wrap(Buffer.class, memAddress(container), capacity, container);
+ }
+
+ /**
+ * Create a {@link VkAndroidHardwareBufferUsageANDROID.Buffer} instance at the specified memory.
+ *
+ * @param address the memory address
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferUsageANDROID.Buffer create(long address, int capacity) {
+ return wrap(Buffer.class, address, capacity);
+ }
+
+ /** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkAndroidHardwareBufferUsageANDROID.Buffer createSafe(long address, int capacity) {
+ return address == NULL ? null : wrap(Buffer.class, address, capacity);
+ }
+
+ /**
+ * Returns a new {@code VkAndroidHardwareBufferUsageANDROID} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkAndroidHardwareBufferUsageANDROID malloc(MemoryStack stack) {
+ return wrap(VkAndroidHardwareBufferUsageANDROID.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@code VkAndroidHardwareBufferUsageANDROID} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkAndroidHardwareBufferUsageANDROID calloc(MemoryStack stack) {
+ return wrap(VkAndroidHardwareBufferUsageANDROID.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@link VkAndroidHardwareBufferUsageANDROID.Buffer} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferUsageANDROID.Buffer malloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkAndroidHardwareBufferUsageANDROID.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidHardwareBufferUsageANDROID.Buffer calloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
+ }
+
+ // -----------------------------------
+
+ /** Unsafe version of {@link #sType}. */
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkAndroidHardwareBufferUsageANDROID.STYPE); }
+ /** Unsafe version of {@link #pNext}. */
+ public static long npNext(long struct) { return memGetAddress(struct + VkAndroidHardwareBufferUsageANDROID.PNEXT); }
+ /** Unsafe version of {@link #androidHardwareBufferUsage}. */
+ public static long nandroidHardwareBufferUsage(long struct) { return UNSAFE.getLong(null, struct + VkAndroidHardwareBufferUsageANDROID.ANDROIDHARDWAREBUFFERUSAGE); }
+
+ /** Unsafe version of {@link #sType(int) sType}. */
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkAndroidHardwareBufferUsageANDROID.STYPE, value); }
+ /** Unsafe version of {@link #pNext(long) pNext}. */
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkAndroidHardwareBufferUsageANDROID.PNEXT, value); }
+
+ // -----------------------------------
+
+ /** An array of {@link VkAndroidHardwareBufferUsageANDROID} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
+
+ private static final VkAndroidHardwareBufferUsageANDROID ELEMENT_FACTORY = VkAndroidHardwareBufferUsageANDROID.create(-1L);
+
+ /**
+ * Creates a new {@code VkAndroidHardwareBufferUsageANDROID.Buffer} instance backed by the specified container.
+ *
+ * Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
+ * will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
+ * by {@link VkAndroidHardwareBufferUsageANDROID#SIZEOF}, and its mark will be undefined.
+ *
+ * The created buffer instance holds a strong reference to the container object.
+ */
+ public Buffer(ByteBuffer container) {
+ super(container, container.remaining() / SIZEOF);
+ }
+
+ public Buffer(long address, int cap) {
+ super(address, null, -1, 0, cap, cap);
+ }
+
+ Buffer(long address, @Nullable ByteBuffer container, int mark, int pos, int lim, int cap) {
+ super(address, container, mark, pos, lim, cap);
+ }
+
+ @Override
+ protected Buffer self() {
+ return this;
+ }
+
+ @Override
+ protected VkAndroidHardwareBufferUsageANDROID getElementFactory() {
+ return ELEMENT_FACTORY;
+ }
+
+ /** @return the value of the {@link VkAndroidHardwareBufferUsageANDROID#sType} field. */
+ @NativeType("VkStructureType")
+ public int sType() { return VkAndroidHardwareBufferUsageANDROID.nsType(address()); }
+ /** @return the value of the {@link VkAndroidHardwareBufferUsageANDROID#pNext} field. */
+ @NativeType("void *")
+ public long pNext() { return VkAndroidHardwareBufferUsageANDROID.npNext(address()); }
+ /** @return the value of the {@link VkAndroidHardwareBufferUsageANDROID#androidHardwareBufferUsage} field. */
+ @NativeType("uint64_t")
+ public long androidHardwareBufferUsage() { return VkAndroidHardwareBufferUsageANDROID.nandroidHardwareBufferUsage(address()); }
+
+ /** Sets the specified value to the {@link VkAndroidHardwareBufferUsageANDROID#sType} field. */
+ public VkAndroidHardwareBufferUsageANDROID.Buffer sType(@NativeType("VkStructureType") int value) { VkAndroidHardwareBufferUsageANDROID.nsType(address(), value); return this; }
+ /** Sets the {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID} value to the {@link VkAndroidHardwareBufferUsageANDROID#sType} field. */
+ public VkAndroidHardwareBufferUsageANDROID.Buffer sType$Default() { return sType(ANDROIDExternalMemoryAndroidHardwareBuffer.VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID); }
+ /** Sets the specified value to the {@link VkAndroidHardwareBufferUsageANDROID#pNext} field. */
+ public VkAndroidHardwareBufferUsageANDROID.Buffer pNext(@NativeType("void *") long value) { VkAndroidHardwareBufferUsageANDROID.npNext(address(), value); return this; }
+
+ }
+
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkAndroidSurfaceCreateInfoKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkAndroidSurfaceCreateInfoKHR.java
new file mode 100644
index 0000000000..e354b791ff
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkAndroidSurfaceCreateInfoKHR.java
@@ -0,0 +1,340 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package org.lwjgl.vulkan;
+
+import javax.annotation.*;
+
+import java.nio.*;
+
+import org.lwjgl.*;
+import org.lwjgl.system.*;
+
+import static org.lwjgl.system.MemoryUtil.*;
+import static org.lwjgl.system.MemoryStack.*;
+
+/**
+ * Structure specifying parameters of a newly created Android surface object.
+ *
+ * Valid Usage
+ *
+ *
+ * - {@code window} must point to a valid Android {@code ANativeWindow}
+ *
+ *
+ * Valid Usage (Implicit)
+ *
+ *
+ * - {@code sType} must be {@link KHRAndroidSurface#VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR}
+ * - {@code pNext} must be {@code NULL}
+ * - {@code flags} must be 0
+ *
+ *
+ * See Also
+ *
+ * {@link KHRAndroidSurface#vkCreateAndroidSurfaceKHR CreateAndroidSurfaceKHR}
+ *
+ * Layout
+ *
+ *
+ * struct VkAndroidSurfaceCreateInfoKHR {
+ * VkStructureType {@link #sType};
+ * void const * {@link #pNext};
+ * VkAndroidSurfaceCreateFlagsKHR {@link #flags};
+ * ANativeWindow * {@link #window};
+ * }
+ */
+public class VkAndroidSurfaceCreateInfoKHR extends Struct implements NativeResource {
+
+ /** The struct size in bytes. */
+ public static final int SIZEOF;
+
+ /** The struct alignment in bytes. */
+ public static final int ALIGNOF;
+
+ /** The struct member offsets. */
+ public static final int
+ STYPE,
+ PNEXT,
+ FLAGS,
+ WINDOW;
+
+ static {
+ Layout layout = __struct(
+ __member(4),
+ __member(POINTER_SIZE),
+ __member(4),
+ __member(POINTER_SIZE)
+ );
+
+ SIZEOF = layout.getSize();
+ ALIGNOF = layout.getAlignment();
+
+ STYPE = layout.offsetof(0);
+ PNEXT = layout.offsetof(1);
+ FLAGS = layout.offsetof(2);
+ WINDOW = layout.offsetof(3);
+ }
+
+ /**
+ * Creates a {@code VkAndroidSurfaceCreateInfoKHR} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * visible to the struct instance and vice versa.
+ *
+ * The created instance holds a strong reference to the container object.
+ */
+ public VkAndroidSurfaceCreateInfoKHR(ByteBuffer container) {
+ super(memAddress(container), __checkContainer(container, SIZEOF));
+ }
+
+ @Override
+ public int sizeof() { return SIZEOF; }
+
+ /** the type of this structure. */
+ @NativeType("VkStructureType")
+ public int sType() { return nsType(address()); }
+ /** {@code NULL} or a pointer to a structure extending this structure. */
+ @NativeType("void const *")
+ public long pNext() { return npNext(address()); }
+ /** reserved for future use. */
+ @NativeType("VkAndroidSurfaceCreateFlagsKHR")
+ public int flags() { return nflags(address()); }
+ /** a pointer to the {@code ANativeWindow} to associate the surface with. */
+ @NativeType("ANativeWindow *")
+ public long window() { return nwindow(address()); }
+
+ /** Sets the specified value to the {@link #sType} field. */
+ public VkAndroidSurfaceCreateInfoKHR sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link KHRAndroidSurface#VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR} value to the {@link #sType} field. */
+ public VkAndroidSurfaceCreateInfoKHR sType$Default() { return sType(KHRAndroidSurface.VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR); }
+ /** Sets the specified value to the {@link #pNext} field. */
+ public VkAndroidSurfaceCreateInfoKHR pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
+ /** Sets the specified value to the {@link #flags} field. */
+ public VkAndroidSurfaceCreateInfoKHR flags(@NativeType("VkAndroidSurfaceCreateFlagsKHR") int value) { nflags(address(), value); return this; }
+ /** Sets the specified value to the {@link #window} field. */
+ public VkAndroidSurfaceCreateInfoKHR window(@NativeType("ANativeWindow *") long value) { nwindow(address(), value); return this; }
+
+ /** Initializes this struct with the specified values. */
+ public VkAndroidSurfaceCreateInfoKHR set(
+ int sType,
+ long pNext,
+ int flags,
+ long window
+ ) {
+ sType(sType);
+ pNext(pNext);
+ flags(flags);
+ window(window);
+
+ return this;
+ }
+
+ /**
+ * Copies the specified struct data to this struct.
+ *
+ * @param src the source struct
+ *
+ * @return this struct
+ */
+ public VkAndroidSurfaceCreateInfoKHR set(VkAndroidSurfaceCreateInfoKHR src) {
+ memCopy(src.address(), address(), SIZEOF);
+ return this;
+ }
+
+ // -----------------------------------
+
+ /** Returns a new {@code VkAndroidSurfaceCreateInfoKHR} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkAndroidSurfaceCreateInfoKHR malloc() {
+ return wrap(VkAndroidSurfaceCreateInfoKHR.class, nmemAllocChecked(SIZEOF));
+ }
+
+ /** Returns a new {@code VkAndroidSurfaceCreateInfoKHR} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkAndroidSurfaceCreateInfoKHR calloc() {
+ return wrap(VkAndroidSurfaceCreateInfoKHR.class, nmemCallocChecked(1, SIZEOF));
+ }
+
+ /** Returns a new {@code VkAndroidSurfaceCreateInfoKHR} instance allocated with {@link BufferUtils}. */
+ public static VkAndroidSurfaceCreateInfoKHR create() {
+ ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
+ return wrap(VkAndroidSurfaceCreateInfoKHR.class, memAddress(container), container);
+ }
+
+ /** Returns a new {@code VkAndroidSurfaceCreateInfoKHR} instance for the specified memory address. */
+ public static VkAndroidSurfaceCreateInfoKHR create(long address) {
+ return wrap(VkAndroidSurfaceCreateInfoKHR.class, address);
+ }
+
+ /** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkAndroidSurfaceCreateInfoKHR createSafe(long address) {
+ return address == NULL ? null : wrap(VkAndroidSurfaceCreateInfoKHR.class, address);
+ }
+
+ /**
+ * Returns a new {@link VkAndroidSurfaceCreateInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidSurfaceCreateInfoKHR.Buffer malloc(int capacity) {
+ return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkAndroidSurfaceCreateInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidSurfaceCreateInfoKHR.Buffer calloc(int capacity) {
+ return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkAndroidSurfaceCreateInfoKHR.Buffer} instance allocated with {@link BufferUtils}.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidSurfaceCreateInfoKHR.Buffer create(int capacity) {
+ ByteBuffer container = __create(capacity, SIZEOF);
+ return wrap(Buffer.class, memAddress(container), capacity, container);
+ }
+
+ /**
+ * Create a {@link VkAndroidSurfaceCreateInfoKHR.Buffer} instance at the specified memory.
+ *
+ * @param address the memory address
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidSurfaceCreateInfoKHR.Buffer create(long address, int capacity) {
+ return wrap(Buffer.class, address, capacity);
+ }
+
+ /** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkAndroidSurfaceCreateInfoKHR.Buffer createSafe(long address, int capacity) {
+ return address == NULL ? null : wrap(Buffer.class, address, capacity);
+ }
+
+ /**
+ * Returns a new {@code VkAndroidSurfaceCreateInfoKHR} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkAndroidSurfaceCreateInfoKHR malloc(MemoryStack stack) {
+ return wrap(VkAndroidSurfaceCreateInfoKHR.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@code VkAndroidSurfaceCreateInfoKHR} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkAndroidSurfaceCreateInfoKHR calloc(MemoryStack stack) {
+ return wrap(VkAndroidSurfaceCreateInfoKHR.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@link VkAndroidSurfaceCreateInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidSurfaceCreateInfoKHR.Buffer malloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkAndroidSurfaceCreateInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkAndroidSurfaceCreateInfoKHR.Buffer calloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
+ }
+
+ // -----------------------------------
+
+ /** Unsafe version of {@link #sType}. */
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkAndroidSurfaceCreateInfoKHR.STYPE); }
+ /** Unsafe version of {@link #pNext}. */
+ public static long npNext(long struct) { return memGetAddress(struct + VkAndroidSurfaceCreateInfoKHR.PNEXT); }
+ /** Unsafe version of {@link #flags}. */
+ public static int nflags(long struct) { return UNSAFE.getInt(null, struct + VkAndroidSurfaceCreateInfoKHR.FLAGS); }
+ /** Unsafe version of {@link #window}. */
+ public static long nwindow(long struct) { return memGetAddress(struct + VkAndroidSurfaceCreateInfoKHR.WINDOW); }
+
+ /** Unsafe version of {@link #sType(int) sType}. */
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkAndroidSurfaceCreateInfoKHR.STYPE, value); }
+ /** Unsafe version of {@link #pNext(long) pNext}. */
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkAndroidSurfaceCreateInfoKHR.PNEXT, value); }
+ /** Unsafe version of {@link #flags(int) flags}. */
+ public static void nflags(long struct, int value) { UNSAFE.putInt(null, struct + VkAndroidSurfaceCreateInfoKHR.FLAGS, value); }
+ /** Unsafe version of {@link #window(long) window}. */
+ public static void nwindow(long struct, long value) { memPutAddress(struct + VkAndroidSurfaceCreateInfoKHR.WINDOW, value); }
+
+ // -----------------------------------
+
+ /** An array of {@link VkAndroidSurfaceCreateInfoKHR} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
+
+ private static final VkAndroidSurfaceCreateInfoKHR ELEMENT_FACTORY = VkAndroidSurfaceCreateInfoKHR.create(-1L);
+
+ /**
+ * Creates a new {@code VkAndroidSurfaceCreateInfoKHR.Buffer} instance backed by the specified container.
+ *
+ * Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
+ * will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
+ * by {@link VkAndroidSurfaceCreateInfoKHR#SIZEOF}, and its mark will be undefined.
+ *
+ * The created buffer instance holds a strong reference to the container object.
+ */
+ public Buffer(ByteBuffer container) {
+ super(container, container.remaining() / SIZEOF);
+ }
+
+ public Buffer(long address, int cap) {
+ super(address, null, -1, 0, cap, cap);
+ }
+
+ Buffer(long address, @Nullable ByteBuffer container, int mark, int pos, int lim, int cap) {
+ super(address, container, mark, pos, lim, cap);
+ }
+
+ @Override
+ protected Buffer self() {
+ return this;
+ }
+
+ @Override
+ protected VkAndroidSurfaceCreateInfoKHR getElementFactory() {
+ return ELEMENT_FACTORY;
+ }
+
+ /** @return the value of the {@link VkAndroidSurfaceCreateInfoKHR#sType} field. */
+ @NativeType("VkStructureType")
+ public int sType() { return VkAndroidSurfaceCreateInfoKHR.nsType(address()); }
+ /** @return the value of the {@link VkAndroidSurfaceCreateInfoKHR#pNext} field. */
+ @NativeType("void const *")
+ public long pNext() { return VkAndroidSurfaceCreateInfoKHR.npNext(address()); }
+ /** @return the value of the {@link VkAndroidSurfaceCreateInfoKHR#flags} field. */
+ @NativeType("VkAndroidSurfaceCreateFlagsKHR")
+ public int flags() { return VkAndroidSurfaceCreateInfoKHR.nflags(address()); }
+ /** @return the value of the {@link VkAndroidSurfaceCreateInfoKHR#window} field. */
+ @NativeType("ANativeWindow *")
+ public long window() { return VkAndroidSurfaceCreateInfoKHR.nwindow(address()); }
+
+ /** Sets the specified value to the {@link VkAndroidSurfaceCreateInfoKHR#sType} field. */
+ public VkAndroidSurfaceCreateInfoKHR.Buffer sType(@NativeType("VkStructureType") int value) { VkAndroidSurfaceCreateInfoKHR.nsType(address(), value); return this; }
+ /** Sets the {@link KHRAndroidSurface#VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR} value to the {@link VkAndroidSurfaceCreateInfoKHR#sType} field. */
+ public VkAndroidSurfaceCreateInfoKHR.Buffer sType$Default() { return sType(KHRAndroidSurface.VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR); }
+ /** Sets the specified value to the {@link VkAndroidSurfaceCreateInfoKHR#pNext} field. */
+ public VkAndroidSurfaceCreateInfoKHR.Buffer pNext(@NativeType("void const *") long value) { VkAndroidSurfaceCreateInfoKHR.npNext(address(), value); return this; }
+ /** Sets the specified value to the {@link VkAndroidSurfaceCreateInfoKHR#flags} field. */
+ public VkAndroidSurfaceCreateInfoKHR.Buffer flags(@NativeType("VkAndroidSurfaceCreateFlagsKHR") int value) { VkAndroidSurfaceCreateInfoKHR.nflags(address(), value); return this; }
+ /** Sets the specified value to the {@link VkAndroidSurfaceCreateInfoKHR#window} field. */
+ public VkAndroidSurfaceCreateInfoKHR.Buffer window(@NativeType("ANativeWindow *") long value) { VkAndroidSurfaceCreateInfoKHR.nwindow(address(), value); return this; }
+
+ }
+
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkBindBufferMemoryInfo.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkBindBufferMemoryInfo.java
index 9258d91999..8809be46d0 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkBindBufferMemoryInfo.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkBindBufferMemoryInfo.java
@@ -33,7 +33,8 @@
* If {@code buffer} was created with the {@link VK11#VK_BUFFER_CREATE_PROTECTED_BIT BUFFER_CREATE_PROTECTED_BIT} bit not set, the buffer must not be bound to a memory object allocated with a memory type that reports {@link VK11#VK_MEMORY_PROPERTY_PROTECTED_BIT MEMORY_PROPERTY_PROTECTED_BIT}
* If {@code buffer} was created with {@link VkDedicatedAllocationBufferCreateInfoNV}{@code ::dedicatedAllocation} equal to {@link VK10#VK_TRUE TRUE}, {@code memory} must have been allocated with {@link VkDedicatedAllocationMemoryAllocateInfoNV}{@code ::buffer} equal to a buffer handle created with identical creation parameters to {@code buffer} and {@code memoryOffset} must be zero
* If the value of {@link VkExportMemoryAllocateInfo}{@code ::handleTypes} used to allocate {@code memory} is not 0, it must include at least one of the handles set in {@link VkExternalMemoryBufferCreateInfo}{@code ::handleTypes} when {@code buffer} was created
- * If {@code memory} was allocated by a memory import operation, the external handle type of the imported memory must also have been set in {@link VkExternalMemoryBufferCreateInfo}{@code ::handleTypes} when {@code buffer} was created
+ * If {@code memory} was allocated by a memory import operation, that is not {@link VkImportAndroidHardwareBufferInfoANDROID} with a non-{@code NULL} {@code buffer} value, the external handle type of the imported memory must also have been set in {@link VkExternalMemoryBufferCreateInfo}{@code ::handleTypes} when {@code buffer} was created
+ * If {@code memory} was allocated with the {@link VkImportAndroidHardwareBufferInfoANDROID} memory import operation with a non-{@code NULL} {@code buffer} value, {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID} must also have been set in {@link VkExternalMemoryBufferCreateInfo}{@code ::handleTypes} when {@code buffer} was created
* If the {@link VkPhysicalDeviceBufferDeviceAddressFeatures}{@code ::bufferDeviceAddress} feature is enabled and {@code buffer} was created with the {@link VK12#VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT} bit set, {@code memory} must have been allocated with the {@link VK12#VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT} bit set
* If the {@link VkPhysicalDeviceDescriptorBufferFeaturesEXT} {@code ::descriptorBufferCaptureReplay} feature is enabled and {@code buffer} was created with the {@link EXTDescriptorBuffer#VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT} bit set, {@code memory} must have been allocated with the {@link VK12#VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT} bit set
* If the {@code pNext} chain includes a {@link VkBindBufferMemoryDeviceGroupInfo} structure, all instances of {@code memory} specified by {@link VkBindBufferMemoryDeviceGroupInfo}{@code ::pDeviceIndices} must have been allocated
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkBindImageMemoryInfo.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkBindImageMemoryInfo.java
index 7e6c84ab46..17d7c861c6 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkBindImageMemoryInfo.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkBindImageMemoryInfo.java
@@ -31,7 +31,8 @@
* If image was created with the {@link VK11#VK_IMAGE_CREATE_PROTECTED_BIT IMAGE_CREATE_PROTECTED_BIT} bit not set, the image must not be bound to a memory object created with a memory type that reports {@link VK11#VK_MEMORY_PROPERTY_PROTECTED_BIT MEMORY_PROPERTY_PROTECTED_BIT}
* If {@code image} was created with {@link VkDedicatedAllocationImageCreateInfoNV}{@code ::dedicatedAllocation} equal to {@link VK10#VK_TRUE TRUE}, {@code memory} must have been created with {@link VkDedicatedAllocationMemoryAllocateInfoNV}{@code ::image} equal to an image handle created with identical creation parameters to {@code image} and {@code memoryOffset} must be zero
* If the value of {@link VkExportMemoryAllocateInfo}{@code ::handleTypes} used to allocate {@code memory} is not 0, it must include at least one of the handles set in {@link VkExternalMemoryImageCreateInfo}{@code ::handleTypes} when {@code image} was created
- * If {@code memory} was created by a memory import operation, the external handle type of the imported memory must also have been set in {@link VkExternalMemoryImageCreateInfo}{@code ::handleTypes} when {@code image} was created
+ * If {@code memory} was created by a memory import operation, that is not {@link VkImportAndroidHardwareBufferInfoANDROID} with a non-{@code NULL} {@code buffer} value, the external handle type of the imported memory must also have been set in {@link VkExternalMemoryImageCreateInfo}{@code ::handleTypes} when {@code image} was created
+ * If {@code memory} was created with the {@link VkImportAndroidHardwareBufferInfoANDROID} memory import operation with a non-{@code NULL} {@code buffer} value, {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID} must also have been set in {@link VkExternalMemoryImageCreateInfo}{@code ::handleTypes} when {@code image} was created
* If the {@link VkPhysicalDeviceDescriptorBufferFeaturesEXT} {@code ::descriptorBufferCaptureReplay} feature is enabled and {@code image} was created with the {@link EXTDescriptorBuffer#VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT} bit set, {@code memory} must have been allocated with the {@link VK12#VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT} bit set
* If the {@code pNext} chain does not include a {@link VkBindImagePlaneMemoryInfo} structure, {@code memory} must have been allocated using one of the memory types allowed in the {@code memoryTypeBits} member of the {@link VkMemoryRequirements} structure returned from a call to {@link VK11#vkGetImageMemoryRequirements2 GetImageMemoryRequirements2} with {@code image}
* If the {@code pNext} chain does not include a {@link VkBindImagePlaneMemoryInfo} structure, {@code memoryOffset} must be an integer multiple of the {@code alignment} member of the {@link VkMemoryRequirements} structure returned from a call to {@link VK11#vkGetImageMemoryRequirements2 GetImageMemoryRequirements2} with {@code image}
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkBindVideoSessionMemoryInfoKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkBindVideoSessionMemoryInfoKHR.java
index 294f90dd04..41ef2ea18f 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkBindVideoSessionMemoryInfoKHR.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkBindVideoSessionMemoryInfoKHR.java
@@ -18,6 +18,13 @@
/**
* Structure specifying memory bindings for a video session object.
*
+ * Valid Usage
+ *
+ *
+ * - {@code memoryOffset} must be less than the size of {@code memory}
+ * - {@code memorySize} must be less than or equal to the size of {@code memory} minus {@code memoryOffset}
+ *
+ *
* Valid Usage (Implicit)
*
*
@@ -99,7 +106,7 @@ public VkBindVideoSessionMemoryInfoKHR(ByteBuffer container) {
/** {@code NULL} or a pointer to a structure extending this structure. */
@NativeType("void const *")
public long pNext() { return npNext(address()); }
- /** the index of the memory binding returned in {@link VkVideoSessionMemoryRequirementsKHR}{@code ::memoryBindIndex} from {@link KHRVideoQueue#vkGetVideoSessionMemoryRequirementsKHR GetVideoSessionMemoryRequirementsKHR}. */
+ /** the memory binding index to bind memory to. */
@NativeType("uint32_t")
public int memoryBindIndex() { return nmemoryBindIndex(address()); }
/** the allocated device memory to be bound to the video session’s memory binding with index {@code memoryBindIndex}. */
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkBufferCreateInfo.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkBufferCreateInfo.java
index 99bdfabc0d..9d5341bedb 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkBufferCreateInfo.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkBufferCreateInfo.java
@@ -36,8 +36,8 @@
* - If {@link VkBufferDeviceAddressCreateInfoEXT}{@code ::deviceAddress} is not zero, {@code flags} must include {@link VK12#VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT}
* - If {@link VkBufferOpaqueCaptureAddressCreateInfo}{@code ::opaqueCaptureAddress} is not zero, {@code flags} must include {@link VK12#VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT}
* - If {@code flags} includes {@link VK12#VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT}, the {@code bufferDeviceAddressCaptureReplay} or {@code bufferDeviceAddressCaptureReplayEXT} feature must be enabled
- * - If {@code usage} includes {@link KHRVideoDecodeQueue#VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR}, {@link KHRVideoDecodeQueue#VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR}, then the {@code pNext} chain must include a valid {@link VkVideoProfileListInfoKHR} structure with {@code profileCount} greater than 0 and {@code pProfiles} including at least one {@link VkVideoProfileInfoKHR}{@code ::videoCodecOperation} specifying a decode operation
- * - If {@code usage} includes {@link KHRVideoEncodeQueue#VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR}, {@link KHRVideoEncodeQueue#VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR}, then the {@code pNext} chain must include a valid {@link VkVideoProfileListInfoKHR} structure with {@code profileCount} greater than 0 and {@code pProfiles} including at least one {@link VkVideoProfileInfoKHR}{@code ::videoCodecOperation} specifying an encode operation
+ * - If {@code usage} includes {@link KHRVideoDecodeQueue#VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR} or {@link KHRVideoDecodeQueue#VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR}, then the {@code pNext} chain must include a {@link VkVideoProfileListInfoKHR} structure with {@code profileCount} greater than 0 and {@code pProfiles} including at least one {@link VkVideoProfileInfoKHR} structure with a {@code videoCodecOperation} member specifying a decode operation
+ * - If {@code usage} includes {@link KHRVideoEncodeQueue#VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR} or {@link KHRVideoEncodeQueue#VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR}, then the {@code pNext} chain must include a {@link VkVideoProfileListInfoKHR} structure with {@code profileCount} greater than 0 and {@code pProfiles} including at least one {@link VkVideoProfileInfoKHR} structure with a {@code videoCodecOperation} member specifying an encode operation
* - {@code size} must be less than or equal to {@link VkPhysicalDeviceMaintenance4Properties}{@code ::maxBufferSize}
* - If {@code usage} includes {@link EXTDescriptorBuffer#VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT}, creating this {@code VkBuffer} must not cause the total required space for all currently valid buffers using this flag on the device to exceed VkPhysicalDeviceDescriptorBufferPropertiesEXT{@code ::samplerDescriptorBufferAddressSpaceSize} or VkPhysicalDeviceDescriptorBufferPropertiesEXT{@code ::descriptorBufferAddressSpaceSize}
* - If {@code usage} includes {@link EXTDescriptorBuffer#VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT}, creating this {@code VkBuffer} must not cause the total required space for all currently valid buffers using this flag on the device to exceed VkPhysicalDeviceDescriptorBufferPropertiesEXT{@code ::resourceDescriptorBufferAddressSpaceSize} or VkPhysicalDeviceDescriptorBufferPropertiesEXT{@code ::descriptorBufferAddressSpaceSize}
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkBufferMemoryBarrier2.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkBufferMemoryBarrier2.java
index 86edc20875..5d998a7f17 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkBufferMemoryBarrier2.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkBufferMemoryBarrier2.java
@@ -59,8 +59,8 @@
* - If {@code srcAccessMask} includes {@link VK13#VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT}, {@code srcStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT} {@link VK13#VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT PIPELINE_STAGE_2_ALL_GRAPHICS_BIT}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
* - If {@code srcAccessMask} includes {@link VK13#VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT}, {@code srcStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT PIPELINE_STAGE_2_ALL_GRAPHICS_BIT}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
* - If {@code srcAccessMask} includes {@link VK13#VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT}, {@code srcStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT PIPELINE_STAGE_2_ALL_GRAPHICS_BIT}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
- * - If {@code srcAccessMask} includes {@link VK13#VK_ACCESS_2_TRANSFER_READ_BIT ACCESS_2_TRANSFER_READ_BIT}, {@code srcStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_COPY_BIT PIPELINE_STAGE_2_COPY_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_BLIT_BIT PIPELINE_STAGE_2_BLIT_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_RESOLVE_BIT PIPELINE_STAGE_2_RESOLVE_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT PIPELINE_STAGE_2_ALL_TRANSFER_BIT}, {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
- * - If {@code srcAccessMask} includes {@link VK13#VK_ACCESS_2_TRANSFER_WRITE_BIT ACCESS_2_TRANSFER_WRITE_BIT}, {@code srcStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_COPY_BIT PIPELINE_STAGE_2_COPY_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_BLIT_BIT PIPELINE_STAGE_2_BLIT_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_RESOLVE_BIT PIPELINE_STAGE_2_RESOLVE_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_CLEAR_BIT PIPELINE_STAGE_2_CLEAR_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT PIPELINE_STAGE_2_ALL_TRANSFER_BIT}, {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
+ * - If {@code srcAccessMask} includes {@link VK13#VK_ACCESS_2_TRANSFER_READ_BIT ACCESS_2_TRANSFER_READ_BIT}, {@code srcStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_COPY_BIT PIPELINE_STAGE_2_COPY_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_BLIT_BIT PIPELINE_STAGE_2_BLIT_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_RESOLVE_BIT PIPELINE_STAGE_2_RESOLVE_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT PIPELINE_STAGE_2_ALL_TRANSFER_BIT}, {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR}, {@link KHRRayTracingMaintenance1#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
+ * - If {@code srcAccessMask} includes {@link VK13#VK_ACCESS_2_TRANSFER_WRITE_BIT ACCESS_2_TRANSFER_WRITE_BIT}, {@code srcStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_COPY_BIT PIPELINE_STAGE_2_COPY_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_BLIT_BIT PIPELINE_STAGE_2_BLIT_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_RESOLVE_BIT PIPELINE_STAGE_2_RESOLVE_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_CLEAR_BIT PIPELINE_STAGE_2_CLEAR_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT PIPELINE_STAGE_2_ALL_TRANSFER_BIT}, {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR}, {@link KHRRayTracingMaintenance1#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
* - If {@code srcAccessMask} includes {@link VK13#VK_ACCESS_2_HOST_READ_BIT ACCESS_2_HOST_READ_BIT}, {@code srcStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_HOST_BIT PIPELINE_STAGE_2_HOST_BIT}
* - If {@code srcAccessMask} includes {@link VK13#VK_ACCESS_2_HOST_WRITE_BIT ACCESS_2_HOST_WRITE_BIT}, {@code srcStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_HOST_BIT PIPELINE_STAGE_2_HOST_BIT}
* - If {@code srcAccessMask} includes {@link KHRSynchronization2#VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT}, {@code srcStageMask} must include {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT PIPELINE_STAGE_2_ALL_GRAPHICS_BIT}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
@@ -113,8 +113,8 @@
* - If {@code dstAccessMask} includes {@link VK13#VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT}, {@code dstStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT} {@link VK13#VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT PIPELINE_STAGE_2_ALL_GRAPHICS_BIT}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
* - If {@code dstAccessMask} includes {@link VK13#VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT}, {@code dstStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT PIPELINE_STAGE_2_ALL_GRAPHICS_BIT}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
* - If {@code dstAccessMask} includes {@link VK13#VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT}, {@code dstStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT PIPELINE_STAGE_2_ALL_GRAPHICS_BIT}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
- * - If {@code dstAccessMask} includes {@link VK13#VK_ACCESS_2_TRANSFER_READ_BIT ACCESS_2_TRANSFER_READ_BIT}, {@code dstStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_COPY_BIT PIPELINE_STAGE_2_COPY_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_BLIT_BIT PIPELINE_STAGE_2_BLIT_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_RESOLVE_BIT PIPELINE_STAGE_2_RESOLVE_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT PIPELINE_STAGE_2_ALL_TRANSFER_BIT}, {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
- * - If {@code dstAccessMask} includes {@link VK13#VK_ACCESS_2_TRANSFER_WRITE_BIT ACCESS_2_TRANSFER_WRITE_BIT}, {@code dstStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_COPY_BIT PIPELINE_STAGE_2_COPY_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_BLIT_BIT PIPELINE_STAGE_2_BLIT_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_RESOLVE_BIT PIPELINE_STAGE_2_RESOLVE_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_CLEAR_BIT PIPELINE_STAGE_2_CLEAR_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT PIPELINE_STAGE_2_ALL_TRANSFER_BIT}, {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
+ * - If {@code dstAccessMask} includes {@link VK13#VK_ACCESS_2_TRANSFER_READ_BIT ACCESS_2_TRANSFER_READ_BIT}, {@code dstStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_COPY_BIT PIPELINE_STAGE_2_COPY_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_BLIT_BIT PIPELINE_STAGE_2_BLIT_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_RESOLVE_BIT PIPELINE_STAGE_2_RESOLVE_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT PIPELINE_STAGE_2_ALL_TRANSFER_BIT}, {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR}, {@link KHRRayTracingMaintenance1#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
+ * - If {@code dstAccessMask} includes {@link VK13#VK_ACCESS_2_TRANSFER_WRITE_BIT ACCESS_2_TRANSFER_WRITE_BIT}, {@code dstStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_COPY_BIT PIPELINE_STAGE_2_COPY_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_BLIT_BIT PIPELINE_STAGE_2_BLIT_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_RESOLVE_BIT PIPELINE_STAGE_2_RESOLVE_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_CLEAR_BIT PIPELINE_STAGE_2_CLEAR_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT PIPELINE_STAGE_2_ALL_TRANSFER_BIT}, {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR}, {@link KHRRayTracingMaintenance1#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
* - If {@code dstAccessMask} includes {@link VK13#VK_ACCESS_2_HOST_READ_BIT ACCESS_2_HOST_READ_BIT}, {@code dstStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_HOST_BIT PIPELINE_STAGE_2_HOST_BIT}
* - If {@code dstAccessMask} includes {@link VK13#VK_ACCESS_2_HOST_WRITE_BIT ACCESS_2_HOST_WRITE_BIT}, {@code dstStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_HOST_BIT PIPELINE_STAGE_2_HOST_BIT}
* - If {@code dstAccessMask} includes {@link KHRSynchronization2#VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT}, {@code dstStageMask} must include {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT PIPELINE_STAGE_2_ALL_GRAPHICS_BIT}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkComponentMapping.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkComponentMapping.java
index 82bf952ff4..bde1abe624 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkComponentMapping.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkComponentMapping.java
@@ -29,7 +29,7 @@
*
* See Also
*
- * {@link VkImageViewCreateInfo}, {@link VkSamplerBorderColorComponentMappingCreateInfoEXT}, {@link VkSamplerYcbcrConversionCreateInfo}, {@link VkVideoFormatPropertiesKHR}
+ * {@link VkAndroidHardwareBufferFormatProperties2ANDROID}, {@link VkAndroidHardwareBufferFormatPropertiesANDROID}, {@link VkImageViewCreateInfo}, {@link VkSamplerBorderColorComponentMappingCreateInfoEXT}, {@link VkSamplerYcbcrConversionCreateInfo}, {@link VkVideoFormatPropertiesKHR}
*
* Layout
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkCopyAccelerationStructureInfoKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkCopyAccelerationStructureInfoKHR.java
index 680a58f9bd..ce962e97d7 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkCopyAccelerationStructureInfoKHR.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkCopyAccelerationStructureInfoKHR.java
@@ -26,6 +26,8 @@
* - If {@code mode} is {@link KHRAccelerationStructure#VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR}, {@code src} must have been constructed with {@link KHRAccelerationStructure#VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR} in the build
* - The {@code buffer} used to create {@code src} must be bound to device memory
* - The {@code buffer} used to create {@code dst} must be bound to device memory
+ * - The range of memory backing {@code dst} that is accessed by this command must not overlap the memory backing {@code src} that is accessed by this command
+ * - {@code dst} must be bound completely and contiguously to a single {@code VkDeviceMemory} object via {@link NVRayTracing#vkBindAccelerationStructureMemoryNV BindAccelerationStructureMemoryNV}
*
*
* Valid Usage (Implicit)
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkCopyBufferToImageInfo2.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkCopyBufferToImageInfo2.java
index b05b9cc3de..b4421ff051 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkCopyBufferToImageInfo2.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkCopyBufferToImageInfo2.java
@@ -48,14 +48,11 @@
*
*
*
- * - If {@code dstImage} does not have either a depth/stencil or a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the format’s texel block size
- * - If {@code dstImage} has a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the element size of the compatible format for the format and the {@code aspectMask} of the {@code imageSubresource} as defined in Compatible formats of planes of multi-planar formats
* - If {@code dstImage} is of type {@link VK10#VK_IMAGE_TYPE_1D IMAGE_TYPE_1D}, then for each element of {@code pRegions}, {@code imageOffset.y} must be 0 and {@code imageExtent.height} must be 1
* - For each element of {@code pRegions}, {@code imageOffset.z} and
(imageExtent.depth + imageOffset.z)
must both be greater than or equal to 0 and less than or equal to the depth of the specified {@code imageSubresource} of {@code dstImage}
* - If {@code dstImage} is of type {@link VK10#VK_IMAGE_TYPE_1D IMAGE_TYPE_1D} or {@link VK10#VK_IMAGE_TYPE_2D IMAGE_TYPE_2D}, then for each element of {@code pRegions}, {@code imageOffset.z} must be 0 and {@code imageExtent.depth} must be 1
* - For each element of {@code pRegions}, {@code bufferRowLength} must be a multiple of the texel block extent width of the {@code VkFormat} of {@code dstImage}
* - For each element of {@code pRegions}, {@code bufferImageHeight} must be a multiple of the texel block extent height of the {@code VkFormat} of {@code dstImage}
- * - For each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the texel block size of the {@code VkFormat} of {@code dstImage}
* - For each element of {@code pRegions}, {@code imageOffset.x} must be a multiple of the texel block extent width of the {@code VkFormat} of {@code dstImage}
* - For each element of {@code pRegions}, {@code imageOffset.y} must be a multiple of the texel block extent height of the {@code VkFormat} of {@code dstImage}
* - For each element of {@code pRegions}, {@code imageOffset.z} must be a multiple of the texel block extent depth of the {@code VkFormat} of {@code dstImage}
@@ -67,6 +64,12 @@
* - If {@code dstImage} has a {@code VkFormat} with three planes then for each element of {@code pRegions}, {@code imageSubresource.aspectMask} must be {@link VK11#VK_IMAGE_ASPECT_PLANE_0_BIT IMAGE_ASPECT_PLANE_0_BIT}, {@link VK11#VK_IMAGE_ASPECT_PLANE_1_BIT IMAGE_ASPECT_PLANE_1_BIT}, or {@link VK11#VK_IMAGE_ASPECT_PLANE_2_BIT IMAGE_ASPECT_PLANE_2_BIT}
* - If {@code dstImage} is of type {@link VK10#VK_IMAGE_TYPE_3D IMAGE_TYPE_3D}, for each element of {@code pRegions}, {@code imageSubresource.baseArrayLayer} must be 0 and {@code imageSubresource.layerCount} must be 1
* - For each element of {@code pRegions}, {@code bufferRowLength} divided by the texel block extent width and then multiplied by the texel block size of {@code dstImage} must be less than or equal to
231-1
+ *
+ *
+ *
+ * - If {@code dstImage} does not have either a depth/stencil or a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the format’s texel block size
+ * - If {@code dstImage} has a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the element size of the compatible format for the format and the {@code aspectMask} of the {@code imageSubresource} as defined in Compatible formats of planes of multi-planar formats
+ * - For each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the texel block size of the {@code VkFormat} of {@code dstImage}
* - If {@code dstImage} has a depth/stencil format, the {@code bufferOffset} member of any element of {@code pRegions} must be a multiple of 4
*
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkCopyImageInfo2.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkCopyImageInfo2.java
index 94b904a746..a987a256e0 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkCopyImageInfo2.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkCopyImageInfo2.java
@@ -85,7 +85,6 @@
* If the {@code aspect} member of any element of {@code pRegions} includes any flag other than {@link VK10#VK_IMAGE_ASPECT_STENCIL_BIT IMAGE_ASPECT_STENCIL_BIT} or {@code dstImage} was not created with separate stencil usage, {@link VK10#VK_IMAGE_USAGE_TRANSFER_DST_BIT IMAGE_USAGE_TRANSFER_DST_BIT} must have been included in the {@link VkImageCreateInfo}{@code ::usage} used to create {@code dstImage}
* If the {@code aspect} member of any element of {@code pRegions} includes {@link VK10#VK_IMAGE_ASPECT_STENCIL_BIT IMAGE_ASPECT_STENCIL_BIT}, and {@code srcImage} was created with separate stencil usage, {@link VK10#VK_IMAGE_USAGE_TRANSFER_SRC_BIT IMAGE_USAGE_TRANSFER_SRC_BIT} must have been included in the {@link VkImageStencilUsageCreateInfo}{@code ::stencilUsage} used to create {@code srcImage}
* If the {@code aspect} member of any element of {@code pRegions} includes {@link VK10#VK_IMAGE_ASPECT_STENCIL_BIT IMAGE_ASPECT_STENCIL_BIT}, and {@code dstImage} was created with separate stencil usage, {@link VK10#VK_IMAGE_USAGE_TRANSFER_DST_BIT IMAGE_USAGE_TRANSFER_DST_BIT} must have been included in the {@link VkImageStencilUsageCreateInfo}{@code ::stencilUsage} used to create {@code dstImage}
- * {@code srcImage} and {@code dstImage} must have the same sample count
*
*
* Valid Usage (Implicit)
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkCopyImageToBufferInfo2.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkCopyImageToBufferInfo2.java
index 4709aa0fb4..050a55c05a 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkCopyImageToBufferInfo2.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkCopyImageToBufferInfo2.java
@@ -48,14 +48,11 @@
*
*
*
- * - If {@code srcImage} does not have either a depth/stencil or a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the format’s texel block size
- * - If {@code srcImage} has a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the element size of the compatible format for the format and the {@code aspectMask} of the {@code imageSubresource} as defined in Compatible formats of planes of multi-planar formats
* - If {@code srcImage} is of type {@link VK10#VK_IMAGE_TYPE_1D IMAGE_TYPE_1D}, then for each element of {@code pRegions}, {@code imageOffset.y} must be 0 and {@code imageExtent.height} must be 1
* - For each element of {@code pRegions}, {@code imageOffset.z} and
(imageExtent.depth + imageOffset.z)
must both be greater than or equal to 0 and less than or equal to the depth of the specified {@code imageSubresource} of {@code srcImage}
* - If {@code srcImage} is of type {@link VK10#VK_IMAGE_TYPE_1D IMAGE_TYPE_1D} or {@link VK10#VK_IMAGE_TYPE_2D IMAGE_TYPE_2D}, then for each element of {@code pRegions}, {@code imageOffset.z} must be 0 and {@code imageExtent.depth} must be 1
* - For each element of {@code pRegions}, {@code bufferRowLength} must be a multiple of the texel block extent width of the {@code VkFormat} of {@code srcImage}
* - For each element of {@code pRegions}, {@code bufferImageHeight} must be a multiple of the texel block extent height of the {@code VkFormat} of {@code srcImage}
- * - For each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the texel block size of the {@code VkFormat} of {@code srcImage}
* - For each element of {@code pRegions}, {@code imageOffset.x} must be a multiple of the texel block extent width of the {@code VkFormat} of {@code srcImage}
* - For each element of {@code pRegions}, {@code imageOffset.y} must be a multiple of the texel block extent height of the {@code VkFormat} of {@code srcImage}
* - For each element of {@code pRegions}, {@code imageOffset.z} must be a multiple of the texel block extent depth of the {@code VkFormat} of {@code srcImage}
@@ -67,6 +64,12 @@
* - If {@code srcImage} has a {@code VkFormat} with three planes then for each element of {@code pRegions}, {@code imageSubresource.aspectMask} must be {@link VK11#VK_IMAGE_ASPECT_PLANE_0_BIT IMAGE_ASPECT_PLANE_0_BIT}, {@link VK11#VK_IMAGE_ASPECT_PLANE_1_BIT IMAGE_ASPECT_PLANE_1_BIT}, or {@link VK11#VK_IMAGE_ASPECT_PLANE_2_BIT IMAGE_ASPECT_PLANE_2_BIT}
* - If {@code srcImage} is of type {@link VK10#VK_IMAGE_TYPE_3D IMAGE_TYPE_3D}, for each element of {@code pRegions}, {@code imageSubresource.baseArrayLayer} must be 0 and {@code imageSubresource.layerCount} must be 1
* - For each element of {@code pRegions}, {@code bufferRowLength} divided by the texel block extent width and then multiplied by the texel block size of {@code srcImage} must be less than or equal to
231-1
+ *
+ *
+ *
+ * - If {@code srcImage} does not have either a depth/stencil or a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the format’s texel block size
+ * - If {@code srcImage} has a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the element size of the compatible format for the format and the {@code aspectMask} of the {@code imageSubresource} as defined in Compatible formats of planes of multi-planar formats
+ * - For each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the texel block size of the {@code VkFormat} of {@code srcImage}
* - If {@code srcImage} has a depth/stencil format, the {@code bufferOffset} member of any element of {@code pRegions} must be a multiple of 4
*
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkDescriptorImageInfo.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkDescriptorImageInfo.java
index 4f649145e6..0bbeb34dda 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkDescriptorImageInfo.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkDescriptorImageInfo.java
@@ -26,6 +26,8 @@
*
*
* - {@code imageView} must not be a 2D array image view created from a 3D image
+ * - If {@code imageView} is a 2D view created from a 3D image, then {@code descriptorType} must be {@link VK10#VK_DESCRIPTOR_TYPE_STORAGE_IMAGE DESCRIPTOR_TYPE_STORAGE_IMAGE}, {@link VK10#VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE DESCRIPTOR_TYPE_SAMPLED_IMAGE}, or {@link VK10#VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER}
+ * - If {@code imageView} is a 2D view created from a 3D image, then the image must have been created with {@link EXTImage2dViewOf3d#VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT} set
* - If the {@code image2DViewOf3D} feature is not enabled and {@code descriptorType} is {@link VK10#VK_DESCRIPTOR_TYPE_STORAGE_IMAGE DESCRIPTOR_TYPE_STORAGE_IMAGE} then {@code imageView} must not be a 2D view created from a 3D image
* - If the {@code sampler2DViewOf3D} feature is not enabled and {@code descriptorType} is {@link VK10#VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE DESCRIPTOR_TYPE_SAMPLED_IMAGE} or {@link VK10#VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER} then {@code imageView} must not be a 2D view created from a 3D image
* - If {@code imageView} is created from a depth/stencil image, the {@code aspectMask} used to create the {@code imageView} must include either {@link VK10#VK_IMAGE_ASPECT_DEPTH_BIT IMAGE_ASPECT_DEPTH_BIT} or {@link VK10#VK_IMAGE_ASPECT_STENCIL_BIT IMAGE_ASPECT_STENCIL_BIT} but not both
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkDeviceCreateInfo.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkDeviceCreateInfo.java
index e0f77c65e3..886a35f110 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkDeviceCreateInfo.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkDeviceCreateInfo.java
@@ -56,7 +56,7 @@
*
*
+ * struct VkDirectFBSurfaceCreateInfoEXT {
+ * VkStructureType {@link #sType};
+ * void const * {@link #pNext};
+ * VkDirectFBSurfaceCreateFlagsEXT {@link #flags};
+ * IDirectFB * {@link #dfb};
+ * IDirectFBSurface * {@link #surface};
+ * }
+ */
+public class VkDirectFBSurfaceCreateInfoEXT extends Struct implements NativeResource {
+
+ /** The struct size in bytes. */
+ public static final int SIZEOF;
+
+ /** The struct alignment in bytes. */
+ public static final int ALIGNOF;
+
+ /** The struct member offsets. */
+ public static final int
+ STYPE,
+ PNEXT,
+ FLAGS,
+ DFB,
+ SURFACE;
+
+ static {
+ Layout layout = __struct(
+ __member(4),
+ __member(POINTER_SIZE),
+ __member(4),
+ __member(POINTER_SIZE),
+ __member(POINTER_SIZE)
+ );
+
+ SIZEOF = layout.getSize();
+ ALIGNOF = layout.getAlignment();
+
+ STYPE = layout.offsetof(0);
+ PNEXT = layout.offsetof(1);
+ FLAGS = layout.offsetof(2);
+ DFB = layout.offsetof(3);
+ SURFACE = layout.offsetof(4);
+ }
+
+ /**
+ * Creates a {@code VkDirectFBSurfaceCreateInfoEXT} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * visible to the struct instance and vice versa.
+ *
+ * The created instance holds a strong reference to the container object.
+ */
+ public VkDirectFBSurfaceCreateInfoEXT(ByteBuffer container) {
+ super(memAddress(container), __checkContainer(container, SIZEOF));
+ }
+
+ @Override
+ public int sizeof() { return SIZEOF; }
+
+ /** the type of this structure. */
+ @NativeType("VkStructureType")
+ public int sType() { return nsType(address()); }
+ /** {@code NULL} or a pointer to a structure extending this structure. */
+ @NativeType("void const *")
+ public long pNext() { return npNext(address()); }
+ /** reserved for future use. */
+ @NativeType("VkDirectFBSurfaceCreateFlagsEXT")
+ public int flags() { return nflags(address()); }
+ /** a pointer to the {@code IDirectFB} main interface of DirectFB. */
+ @NativeType("IDirectFB *")
+ public long dfb() { return ndfb(address()); }
+ /** a pointer to a {@code IDirectFBSurface} surface interface. */
+ @NativeType("IDirectFBSurface *")
+ public long surface() { return nsurface(address()); }
+
+ /** Sets the specified value to the {@link #sType} field. */
+ public VkDirectFBSurfaceCreateInfoEXT sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link EXTDirectfbSurface#VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT} value to the {@link #sType} field. */
+ public VkDirectFBSurfaceCreateInfoEXT sType$Default() { return sType(EXTDirectfbSurface.VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT); }
+ /** Sets the specified value to the {@link #pNext} field. */
+ public VkDirectFBSurfaceCreateInfoEXT pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
+ /** Sets the specified value to the {@link #flags} field. */
+ public VkDirectFBSurfaceCreateInfoEXT flags(@NativeType("VkDirectFBSurfaceCreateFlagsEXT") int value) { nflags(address(), value); return this; }
+ /** Sets the specified value to the {@link #dfb} field. */
+ public VkDirectFBSurfaceCreateInfoEXT dfb(@NativeType("IDirectFB *") long value) { ndfb(address(), value); return this; }
+ /** Sets the specified value to the {@link #surface} field. */
+ public VkDirectFBSurfaceCreateInfoEXT surface(@NativeType("IDirectFBSurface *") long value) { nsurface(address(), value); return this; }
+
+ /** Initializes this struct with the specified values. */
+ public VkDirectFBSurfaceCreateInfoEXT set(
+ int sType,
+ long pNext,
+ int flags,
+ long dfb,
+ long surface
+ ) {
+ sType(sType);
+ pNext(pNext);
+ flags(flags);
+ dfb(dfb);
+ surface(surface);
+
+ return this;
+ }
+
+ /**
+ * Copies the specified struct data to this struct.
+ *
+ * @param src the source struct
+ *
+ * @return this struct
+ */
+ public VkDirectFBSurfaceCreateInfoEXT set(VkDirectFBSurfaceCreateInfoEXT src) {
+ memCopy(src.address(), address(), SIZEOF);
+ return this;
+ }
+
+ // -----------------------------------
+
+ /** Returns a new {@code VkDirectFBSurfaceCreateInfoEXT} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkDirectFBSurfaceCreateInfoEXT malloc() {
+ return wrap(VkDirectFBSurfaceCreateInfoEXT.class, nmemAllocChecked(SIZEOF));
+ }
+
+ /** Returns a new {@code VkDirectFBSurfaceCreateInfoEXT} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkDirectFBSurfaceCreateInfoEXT calloc() {
+ return wrap(VkDirectFBSurfaceCreateInfoEXT.class, nmemCallocChecked(1, SIZEOF));
+ }
+
+ /** Returns a new {@code VkDirectFBSurfaceCreateInfoEXT} instance allocated with {@link BufferUtils}. */
+ public static VkDirectFBSurfaceCreateInfoEXT create() {
+ ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
+ return wrap(VkDirectFBSurfaceCreateInfoEXT.class, memAddress(container), container);
+ }
+
+ /** Returns a new {@code VkDirectFBSurfaceCreateInfoEXT} instance for the specified memory address. */
+ public static VkDirectFBSurfaceCreateInfoEXT create(long address) {
+ return wrap(VkDirectFBSurfaceCreateInfoEXT.class, address);
+ }
+
+ /** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkDirectFBSurfaceCreateInfoEXT createSafe(long address) {
+ return address == NULL ? null : wrap(VkDirectFBSurfaceCreateInfoEXT.class, address);
+ }
+
+ /**
+ * Returns a new {@link VkDirectFBSurfaceCreateInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkDirectFBSurfaceCreateInfoEXT.Buffer malloc(int capacity) {
+ return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkDirectFBSurfaceCreateInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkDirectFBSurfaceCreateInfoEXT.Buffer calloc(int capacity) {
+ return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkDirectFBSurfaceCreateInfoEXT.Buffer} instance allocated with {@link BufferUtils}.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkDirectFBSurfaceCreateInfoEXT.Buffer create(int capacity) {
+ ByteBuffer container = __create(capacity, SIZEOF);
+ return wrap(Buffer.class, memAddress(container), capacity, container);
+ }
+
+ /**
+ * Create a {@link VkDirectFBSurfaceCreateInfoEXT.Buffer} instance at the specified memory.
+ *
+ * @param address the memory address
+ * @param capacity the buffer capacity
+ */
+ public static VkDirectFBSurfaceCreateInfoEXT.Buffer create(long address, int capacity) {
+ return wrap(Buffer.class, address, capacity);
+ }
+
+ /** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkDirectFBSurfaceCreateInfoEXT.Buffer createSafe(long address, int capacity) {
+ return address == NULL ? null : wrap(Buffer.class, address, capacity);
+ }
+
+ /**
+ * Returns a new {@code VkDirectFBSurfaceCreateInfoEXT} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkDirectFBSurfaceCreateInfoEXT malloc(MemoryStack stack) {
+ return wrap(VkDirectFBSurfaceCreateInfoEXT.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@code VkDirectFBSurfaceCreateInfoEXT} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkDirectFBSurfaceCreateInfoEXT calloc(MemoryStack stack) {
+ return wrap(VkDirectFBSurfaceCreateInfoEXT.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@link VkDirectFBSurfaceCreateInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkDirectFBSurfaceCreateInfoEXT.Buffer malloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkDirectFBSurfaceCreateInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkDirectFBSurfaceCreateInfoEXT.Buffer calloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
+ }
+
+ // -----------------------------------
+
+ /** Unsafe version of {@link #sType}. */
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkDirectFBSurfaceCreateInfoEXT.STYPE); }
+ /** Unsafe version of {@link #pNext}. */
+ public static long npNext(long struct) { return memGetAddress(struct + VkDirectFBSurfaceCreateInfoEXT.PNEXT); }
+ /** Unsafe version of {@link #flags}. */
+ public static int nflags(long struct) { return UNSAFE.getInt(null, struct + VkDirectFBSurfaceCreateInfoEXT.FLAGS); }
+ /** Unsafe version of {@link #dfb}. */
+ public static long ndfb(long struct) { return memGetAddress(struct + VkDirectFBSurfaceCreateInfoEXT.DFB); }
+ /** Unsafe version of {@link #surface}. */
+ public static long nsurface(long struct) { return memGetAddress(struct + VkDirectFBSurfaceCreateInfoEXT.SURFACE); }
+
+ /** Unsafe version of {@link #sType(int) sType}. */
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkDirectFBSurfaceCreateInfoEXT.STYPE, value); }
+ /** Unsafe version of {@link #pNext(long) pNext}. */
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkDirectFBSurfaceCreateInfoEXT.PNEXT, value); }
+ /** Unsafe version of {@link #flags(int) flags}. */
+ public static void nflags(long struct, int value) { UNSAFE.putInt(null, struct + VkDirectFBSurfaceCreateInfoEXT.FLAGS, value); }
+ /** Unsafe version of {@link #dfb(long) dfb}. */
+ public static void ndfb(long struct, long value) { memPutAddress(struct + VkDirectFBSurfaceCreateInfoEXT.DFB, value); }
+ /** Unsafe version of {@link #surface(long) surface}. */
+ public static void nsurface(long struct, long value) { memPutAddress(struct + VkDirectFBSurfaceCreateInfoEXT.SURFACE, value); }
+
+ // -----------------------------------
+
+ /** An array of {@link VkDirectFBSurfaceCreateInfoEXT} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
+
+ private static final VkDirectFBSurfaceCreateInfoEXT ELEMENT_FACTORY = VkDirectFBSurfaceCreateInfoEXT.create(-1L);
+
+ /**
+ * Creates a new {@code VkDirectFBSurfaceCreateInfoEXT.Buffer} instance backed by the specified container.
+ *
+ * Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
+ * will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
+ * by {@link VkDirectFBSurfaceCreateInfoEXT#SIZEOF}, and its mark will be undefined.
+ *
+ * The created buffer instance holds a strong reference to the container object.
+ */
+ public Buffer(ByteBuffer container) {
+ super(container, container.remaining() / SIZEOF);
+ }
+
+ public Buffer(long address, int cap) {
+ super(address, null, -1, 0, cap, cap);
+ }
+
+ Buffer(long address, @Nullable ByteBuffer container, int mark, int pos, int lim, int cap) {
+ super(address, container, mark, pos, lim, cap);
+ }
+
+ @Override
+ protected Buffer self() {
+ return this;
+ }
+
+ @Override
+ protected VkDirectFBSurfaceCreateInfoEXT getElementFactory() {
+ return ELEMENT_FACTORY;
+ }
+
+ /** @return the value of the {@link VkDirectFBSurfaceCreateInfoEXT#sType} field. */
+ @NativeType("VkStructureType")
+ public int sType() { return VkDirectFBSurfaceCreateInfoEXT.nsType(address()); }
+ /** @return the value of the {@link VkDirectFBSurfaceCreateInfoEXT#pNext} field. */
+ @NativeType("void const *")
+ public long pNext() { return VkDirectFBSurfaceCreateInfoEXT.npNext(address()); }
+ /** @return the value of the {@link VkDirectFBSurfaceCreateInfoEXT#flags} field. */
+ @NativeType("VkDirectFBSurfaceCreateFlagsEXT")
+ public int flags() { return VkDirectFBSurfaceCreateInfoEXT.nflags(address()); }
+ /** @return the value of the {@link VkDirectFBSurfaceCreateInfoEXT#dfb} field. */
+ @NativeType("IDirectFB *")
+ public long dfb() { return VkDirectFBSurfaceCreateInfoEXT.ndfb(address()); }
+ /** @return the value of the {@link VkDirectFBSurfaceCreateInfoEXT#surface} field. */
+ @NativeType("IDirectFBSurface *")
+ public long surface() { return VkDirectFBSurfaceCreateInfoEXT.nsurface(address()); }
+
+ /** Sets the specified value to the {@link VkDirectFBSurfaceCreateInfoEXT#sType} field. */
+ public VkDirectFBSurfaceCreateInfoEXT.Buffer sType(@NativeType("VkStructureType") int value) { VkDirectFBSurfaceCreateInfoEXT.nsType(address(), value); return this; }
+ /** Sets the {@link EXTDirectfbSurface#VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT} value to the {@link VkDirectFBSurfaceCreateInfoEXT#sType} field. */
+ public VkDirectFBSurfaceCreateInfoEXT.Buffer sType$Default() { return sType(EXTDirectfbSurface.VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT); }
+ /** Sets the specified value to the {@link VkDirectFBSurfaceCreateInfoEXT#pNext} field. */
+ public VkDirectFBSurfaceCreateInfoEXT.Buffer pNext(@NativeType("void const *") long value) { VkDirectFBSurfaceCreateInfoEXT.npNext(address(), value); return this; }
+ /** Sets the specified value to the {@link VkDirectFBSurfaceCreateInfoEXT#flags} field. */
+ public VkDirectFBSurfaceCreateInfoEXT.Buffer flags(@NativeType("VkDirectFBSurfaceCreateFlagsEXT") int value) { VkDirectFBSurfaceCreateInfoEXT.nflags(address(), value); return this; }
+ /** Sets the specified value to the {@link VkDirectFBSurfaceCreateInfoEXT#dfb} field. */
+ public VkDirectFBSurfaceCreateInfoEXT.Buffer dfb(@NativeType("IDirectFB *") long value) { VkDirectFBSurfaceCreateInfoEXT.ndfb(address(), value); return this; }
+ /** Sets the specified value to the {@link VkDirectFBSurfaceCreateInfoEXT#surface} field. */
+ public VkDirectFBSurfaceCreateInfoEXT.Buffer surface(@NativeType("IDirectFBSurface *") long value) { VkDirectFBSurfaceCreateInfoEXT.nsurface(address(), value); return this; }
+
+ }
+
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkDrawIndexedIndirectCommand.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkDrawIndexedIndirectCommand.java
index 26d22e1f79..ca742ab25c 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkDrawIndexedIndirectCommand.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkDrawIndexedIndirectCommand.java
@@ -26,7 +26,6 @@
*
*
* - For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description
- * (indexSize × (firstIndex + indexCount) + offset)
must be less than or equal to the size of the bound index buffer, with {@code indexSize} being based on the type specified by {@code indexType}, where the index buffer, {@code indexType}, and {@code offset} are specified via {@code vkCmdBindIndexBuffer}
* - If the {@code drawIndirectFirstInstance} feature is not enabled, {@code firstInstance} must be 0
*
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkExternalFormatANDROID.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkExternalFormatANDROID.java
new file mode 100644
index 0000000000..d62dc6cec7
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkExternalFormatANDROID.java
@@ -0,0 +1,318 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package org.lwjgl.vulkan;
+
+import javax.annotation.*;
+
+import java.nio.*;
+
+import org.lwjgl.*;
+import org.lwjgl.system.*;
+
+import static org.lwjgl.system.MemoryUtil.*;
+import static org.lwjgl.system.MemoryStack.*;
+
+/**
+ * Structure containing an Android hardware buffer external format.
+ *
+ * Description
+ *
+ * If {@code externalFormat} is zero, the effect is as if the {@link VkExternalFormatANDROID} structure was not present. Otherwise, the {@code image} will have the specified external format.
+ *
+ * Valid Usage
+ *
+ *
+ * - {@code externalFormat} must be 0 or a value returned in the {@code externalFormat} member of {@link VkAndroidHardwareBufferFormatPropertiesANDROID} by an earlier call to {@link ANDROIDExternalMemoryAndroidHardwareBuffer#vkGetAndroidHardwareBufferPropertiesANDROID GetAndroidHardwareBufferPropertiesANDROID}
+ *
+ *
+ * Valid Usage (Implicit)
+ *
+ *
+ * - {@code sType} must be {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID}
+ *
+ *
+ * Layout
+ *
+ *
+ * struct VkExternalFormatANDROID {
+ * VkStructureType {@link #sType};
+ * void * {@link #pNext};
+ * uint64_t {@link #externalFormat};
+ * }
+ */
+public class VkExternalFormatANDROID extends Struct implements NativeResource {
+
+ /** The struct size in bytes. */
+ public static final int SIZEOF;
+
+ /** The struct alignment in bytes. */
+ public static final int ALIGNOF;
+
+ /** The struct member offsets. */
+ public static final int
+ STYPE,
+ PNEXT,
+ EXTERNALFORMAT;
+
+ static {
+ Layout layout = __struct(
+ __member(4),
+ __member(POINTER_SIZE),
+ __member(8)
+ );
+
+ SIZEOF = layout.getSize();
+ ALIGNOF = layout.getAlignment();
+
+ STYPE = layout.offsetof(0);
+ PNEXT = layout.offsetof(1);
+ EXTERNALFORMAT = layout.offsetof(2);
+ }
+
+ /**
+ * Creates a {@code VkExternalFormatANDROID} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * visible to the struct instance and vice versa.
+ *
+ * The created instance holds a strong reference to the container object.
+ */
+ public VkExternalFormatANDROID(ByteBuffer container) {
+ super(memAddress(container), __checkContainer(container, SIZEOF));
+ }
+
+ @Override
+ public int sizeof() { return SIZEOF; }
+
+ /** the type of this structure. */
+ @NativeType("VkStructureType")
+ public int sType() { return nsType(address()); }
+ /** {@code NULL} or a pointer to a structure extending this structure. */
+ @NativeType("void *")
+ public long pNext() { return npNext(address()); }
+ /** an implementation-defined identifier for the external format */
+ @NativeType("uint64_t")
+ public long externalFormat() { return nexternalFormat(address()); }
+
+ /** Sets the specified value to the {@link #sType} field. */
+ public VkExternalFormatANDROID sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID} value to the {@link #sType} field. */
+ public VkExternalFormatANDROID sType$Default() { return sType(ANDROIDExternalMemoryAndroidHardwareBuffer.VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID); }
+ /** Sets the specified value to the {@link #pNext} field. */
+ public VkExternalFormatANDROID pNext(@NativeType("void *") long value) { npNext(address(), value); return this; }
+ /** Sets the specified value to the {@link #externalFormat} field. */
+ public VkExternalFormatANDROID externalFormat(@NativeType("uint64_t") long value) { nexternalFormat(address(), value); return this; }
+
+ /** Initializes this struct with the specified values. */
+ public VkExternalFormatANDROID set(
+ int sType,
+ long pNext,
+ long externalFormat
+ ) {
+ sType(sType);
+ pNext(pNext);
+ externalFormat(externalFormat);
+
+ return this;
+ }
+
+ /**
+ * Copies the specified struct data to this struct.
+ *
+ * @param src the source struct
+ *
+ * @return this struct
+ */
+ public VkExternalFormatANDROID set(VkExternalFormatANDROID src) {
+ memCopy(src.address(), address(), SIZEOF);
+ return this;
+ }
+
+ // -----------------------------------
+
+ /** Returns a new {@code VkExternalFormatANDROID} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkExternalFormatANDROID malloc() {
+ return wrap(VkExternalFormatANDROID.class, nmemAllocChecked(SIZEOF));
+ }
+
+ /** Returns a new {@code VkExternalFormatANDROID} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkExternalFormatANDROID calloc() {
+ return wrap(VkExternalFormatANDROID.class, nmemCallocChecked(1, SIZEOF));
+ }
+
+ /** Returns a new {@code VkExternalFormatANDROID} instance allocated with {@link BufferUtils}. */
+ public static VkExternalFormatANDROID create() {
+ ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
+ return wrap(VkExternalFormatANDROID.class, memAddress(container), container);
+ }
+
+ /** Returns a new {@code VkExternalFormatANDROID} instance for the specified memory address. */
+ public static VkExternalFormatANDROID create(long address) {
+ return wrap(VkExternalFormatANDROID.class, address);
+ }
+
+ /** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkExternalFormatANDROID createSafe(long address) {
+ return address == NULL ? null : wrap(VkExternalFormatANDROID.class, address);
+ }
+
+ /**
+ * Returns a new {@link VkExternalFormatANDROID.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkExternalFormatANDROID.Buffer malloc(int capacity) {
+ return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkExternalFormatANDROID.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkExternalFormatANDROID.Buffer calloc(int capacity) {
+ return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkExternalFormatANDROID.Buffer} instance allocated with {@link BufferUtils}.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkExternalFormatANDROID.Buffer create(int capacity) {
+ ByteBuffer container = __create(capacity, SIZEOF);
+ return wrap(Buffer.class, memAddress(container), capacity, container);
+ }
+
+ /**
+ * Create a {@link VkExternalFormatANDROID.Buffer} instance at the specified memory.
+ *
+ * @param address the memory address
+ * @param capacity the buffer capacity
+ */
+ public static VkExternalFormatANDROID.Buffer create(long address, int capacity) {
+ return wrap(Buffer.class, address, capacity);
+ }
+
+ /** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkExternalFormatANDROID.Buffer createSafe(long address, int capacity) {
+ return address == NULL ? null : wrap(Buffer.class, address, capacity);
+ }
+
+ /**
+ * Returns a new {@code VkExternalFormatANDROID} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkExternalFormatANDROID malloc(MemoryStack stack) {
+ return wrap(VkExternalFormatANDROID.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@code VkExternalFormatANDROID} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkExternalFormatANDROID calloc(MemoryStack stack) {
+ return wrap(VkExternalFormatANDROID.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@link VkExternalFormatANDROID.Buffer} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkExternalFormatANDROID.Buffer malloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkExternalFormatANDROID.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkExternalFormatANDROID.Buffer calloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
+ }
+
+ // -----------------------------------
+
+ /** Unsafe version of {@link #sType}. */
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkExternalFormatANDROID.STYPE); }
+ /** Unsafe version of {@link #pNext}. */
+ public static long npNext(long struct) { return memGetAddress(struct + VkExternalFormatANDROID.PNEXT); }
+ /** Unsafe version of {@link #externalFormat}. */
+ public static long nexternalFormat(long struct) { return UNSAFE.getLong(null, struct + VkExternalFormatANDROID.EXTERNALFORMAT); }
+
+ /** Unsafe version of {@link #sType(int) sType}. */
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkExternalFormatANDROID.STYPE, value); }
+ /** Unsafe version of {@link #pNext(long) pNext}. */
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkExternalFormatANDROID.PNEXT, value); }
+ /** Unsafe version of {@link #externalFormat(long) externalFormat}. */
+ public static void nexternalFormat(long struct, long value) { UNSAFE.putLong(null, struct + VkExternalFormatANDROID.EXTERNALFORMAT, value); }
+
+ // -----------------------------------
+
+ /** An array of {@link VkExternalFormatANDROID} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
+
+ private static final VkExternalFormatANDROID ELEMENT_FACTORY = VkExternalFormatANDROID.create(-1L);
+
+ /**
+ * Creates a new {@code VkExternalFormatANDROID.Buffer} instance backed by the specified container.
+ *
+ * Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
+ * will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
+ * by {@link VkExternalFormatANDROID#SIZEOF}, and its mark will be undefined.
+ *
+ * The created buffer instance holds a strong reference to the container object.
+ */
+ public Buffer(ByteBuffer container) {
+ super(container, container.remaining() / SIZEOF);
+ }
+
+ public Buffer(long address, int cap) {
+ super(address, null, -1, 0, cap, cap);
+ }
+
+ Buffer(long address, @Nullable ByteBuffer container, int mark, int pos, int lim, int cap) {
+ super(address, container, mark, pos, lim, cap);
+ }
+
+ @Override
+ protected Buffer self() {
+ return this;
+ }
+
+ @Override
+ protected VkExternalFormatANDROID getElementFactory() {
+ return ELEMENT_FACTORY;
+ }
+
+ /** @return the value of the {@link VkExternalFormatANDROID#sType} field. */
+ @NativeType("VkStructureType")
+ public int sType() { return VkExternalFormatANDROID.nsType(address()); }
+ /** @return the value of the {@link VkExternalFormatANDROID#pNext} field. */
+ @NativeType("void *")
+ public long pNext() { return VkExternalFormatANDROID.npNext(address()); }
+ /** @return the value of the {@link VkExternalFormatANDROID#externalFormat} field. */
+ @NativeType("uint64_t")
+ public long externalFormat() { return VkExternalFormatANDROID.nexternalFormat(address()); }
+
+ /** Sets the specified value to the {@link VkExternalFormatANDROID#sType} field. */
+ public VkExternalFormatANDROID.Buffer sType(@NativeType("VkStructureType") int value) { VkExternalFormatANDROID.nsType(address(), value); return this; }
+ /** Sets the {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID} value to the {@link VkExternalFormatANDROID#sType} field. */
+ public VkExternalFormatANDROID.Buffer sType$Default() { return sType(ANDROIDExternalMemoryAndroidHardwareBuffer.VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID); }
+ /** Sets the specified value to the {@link VkExternalFormatANDROID#pNext} field. */
+ public VkExternalFormatANDROID.Buffer pNext(@NativeType("void *") long value) { VkExternalFormatANDROID.npNext(address(), value); return this; }
+ /** Sets the specified value to the {@link VkExternalFormatANDROID#externalFormat} field. */
+ public VkExternalFormatANDROID.Buffer externalFormat(@NativeType("uint64_t") long value) { VkExternalFormatANDROID.nexternalFormat(address(), value); return this; }
+
+ }
+
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkGraphicsPipelineCreateInfo.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkGraphicsPipelineCreateInfo.java
index 3bf9d594c9..58ac56fab5 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkGraphicsPipelineCreateInfo.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkGraphicsPipelineCreateInfo.java
@@ -331,8 +331,10 @@
* If {@link VkPipelineLibraryCreateInfoKHR}{@code ::pLibraries} includes at least one library, {@link VkGraphicsPipelineLibraryCreateInfoEXT}{@code ::flags} is non-zero, and any library was created with {@link KHRPipelineExecutableProperties#VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR}, {@code flags} must include {@link KHRPipelineExecutableProperties#VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR}
* If the pipeline is not created with a complete set of state, or {@link VkPipelineLibraryCreateInfoKHR}{@code ::libraryCount} is not 0, {@link VkGraphicsPipelineShaderGroupsCreateInfoNV}{@code ::groupCount} and {@link VkGraphicsPipelineShaderGroupsCreateInfoNV}{@code ::pipelineCount} must be 0
* If the pipeline is created with a complete set of state, {@link VkPipelineLibraryCreateInfoKHR}{@code ::libraryCount} is 0, and the {@code pNext} chain includes an instance of {@link VkGraphicsPipelineShaderGroupsCreateInfoNV}, {@link VkGraphicsPipelineShaderGroupsCreateInfoNV}{@code ::groupCount} must be greater than 0
- * If {@code flags} includes {@link EXTGraphicsPipelineLibrary#VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT}, the pipeline includes a complete set of state specified entirely by libraries, and each library was created with a {@code VkPipelineLayout} created with {@link EXTGraphicsPipelineLibrary#VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT}, then {@code layout} must be a valid {@code VkPipelineLayout} that is compatible with the union of the libraries' pipeline layouts other than the inclusion/exclusion of {@link EXTGraphicsPipelineLibrary#VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT}
- * If {@code flags} does not include {@link EXTGraphicsPipelineLibrary#VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT}, the pipeline includes a complete set of state specified entirely by libraries, and each library was created with a {@code VkPipelineLayout} created with {@link EXTGraphicsPipelineLibrary#VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT}, then {@code layout} must be a valid {@code VkPipelineLayout} that is compatible with the union of the libraries' pipeline layouts
+ * If the pipeline includes a complete set of state, {@code VkPipelineLayout} must be a valid pipeline layout
+ * If the pipeline includes a complete set of state specified entirely by libraries, and each library was created with a {@code VkPipelineLayout} created without {@link EXTGraphicsPipelineLibrary#VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT}, then {@code layout} must be compatible with the layouts in those libraries
+ * If {@code flags} includes {@link EXTGraphicsPipelineLibrary#VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT}, the pipeline includes a complete set of state specified entirely by libraries, and each library was created with a {@code VkPipelineLayout} created with {@link EXTGraphicsPipelineLibrary#VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT}, then {@code layout} must be compatible with the union of the libraries' pipeline layouts other than the inclusion/exclusion of {@link EXTGraphicsPipelineLibrary#VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT}
+ * If {@code flags} does not include {@link EXTGraphicsPipelineLibrary#VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT}, the pipeline includes a complete set of state specified entirely by libraries, and each library was created with a {@code VkPipelineLayout} created with {@link EXTGraphicsPipelineLibrary#VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT}, then {@code layout} must be compatible with the union of the libraries' pipeline layouts
* If {@code conservativePointAndLineRasterization} is not supported; the pipeline is being created with vertex input state and pre-rasterization shader state; the pipeline does not include a geometry shader; and the value of {@link VkPipelineInputAssemblyStateCreateInfo}{@code ::topology} is {@link VK10#VK_PRIMITIVE_TOPOLOGY_POINT_LIST PRIMITIVE_TOPOLOGY_POINT_LIST}, {@link VK10#VK_PRIMITIVE_TOPOLOGY_LINE_LIST PRIMITIVE_TOPOLOGY_LINE_LIST}, or {@link VK10#VK_PRIMITIVE_TOPOLOGY_LINE_STRIP PRIMITIVE_TOPOLOGY_LINE_STRIP}, then {@link VkPipelineRasterizationConservativeStateCreateInfoEXT}{@code ::conservativeRasterizationMode} must be {@link EXTConservativeRasterization#VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT}
* If {@code conservativePointAndLineRasterization} is not supported, the pipeline is being created with pre-rasterization shader state, and the pipeline includes a geometry shader with either the {@code OutputPoints} or {@code OutputLineStrip} execution modes, {@link VkPipelineRasterizationConservativeStateCreateInfoEXT}{@code ::conservativeRasterizationMode} must be {@link EXTConservativeRasterization#VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT}
* If {@code conservativePointAndLineRasterization} is not supported, the pipeline is being created with pre-rasterization shader state, and the pipeline includes a mesh shader with either the {@code OutputPoints} or {@code OutputLinesNV} execution modes, {@link VkPipelineRasterizationConservativeStateCreateInfoEXT}{@code ::conservativeRasterizationMode} must be {@link EXTConservativeRasterization#VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT}
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageCreateInfo.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageCreateInfo.java
index ad057e34da..6f4fa02d68 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageCreateInfo.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageCreateInfo.java
@@ -80,11 +80,15 @@
*
*
* - If {@code tiling} is {@link VK10#VK_IMAGE_TILING_LINEAR IMAGE_TILING_LINEAR}, then {@code imageCreateFormatFeatures} is the value of {@link VkFormatProperties}{@code ::linearTilingFeatures} found by calling {@link VK10#vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties} with parameter {@code format} equal to {@link VkImageCreateInfo}{@code ::format}.
- * - If {@code tiling} is {@link VK10#VK_IMAGE_TILING_OPTIMAL IMAGE_TILING_OPTIMAL}, then {@code imageCreateFormatFeatures} is the value of {@link VkFormatProperties}{@code ::optimalTilingFeatures} found by calling {@link VK10#vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties} with parameter {@code format} equal to {@link VkImageCreateInfo}{@code ::format}.
+ * - If {@code tiling} is {@link VK10#VK_IMAGE_TILING_OPTIMAL IMAGE_TILING_OPTIMAL}, and if the {@code pNext} chain includes no {@link VkExternalFormatANDROID} structure with non-zero {@code externalFormat}, then {@code imageCreateFormatFeatures} is the value of {@link VkFormatProperties}{@code ::optimalTilingFeatures} found by calling {@link VK10#vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties} with parameter {@code format} equal to {@link VkImageCreateInfo}{@code ::format}.
+ * - If {@code tiling} is {@link VK10#VK_IMAGE_TILING_OPTIMAL IMAGE_TILING_OPTIMAL}, and if the {@code pNext} chain includes a {@link VkExternalFormatANDROID} structure with non-zero {@code externalFormat}, then {@code imageCreateFormatFeatures} is the value of {@link VkAndroidHardwareBufferFormatPropertiesANDROID}{@code ::formatFeatures} obtained by {@link ANDROIDExternalMemoryAndroidHardwareBuffer#vkGetAndroidHardwareBufferPropertiesANDROID GetAndroidHardwareBufferPropertiesANDROID} with a matching {@code externalFormat} value.
* - If {@code tiling} is {@link EXTImageDrmFormatModifier#VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT}, then the value of {@code imageCreateFormatFeatures} is found by calling {@link VK11#vkGetPhysicalDeviceFormatProperties2 GetPhysicalDeviceFormatProperties2} with {@link VkImageFormatProperties}{@code ::format} equal to {@link VkImageCreateInfo}{@code ::format} and with {@link VkDrmFormatModifierPropertiesListEXT} chained into {@link VkFormatProperties2}; by collecting all members of the returned array {@link VkDrmFormatModifierPropertiesListEXT}{@code ::pDrmFormatModifierProperties} whose {@code drmFormatModifier} belongs to {@code imageCreateDrmFormatModifiers}; and by taking the bitwise intersection, over the collected array members, of {@code drmFormatModifierTilingFeatures}. (The resultant {@code imageCreateFormatFeatures} may be empty).
*
*
- * Let {@code VkImageFormatProperties2 imageCreateImageFormatPropertiesList[]} be the list of structures obtained by calling {@link VK11#vkGetPhysicalDeviceImageFormatProperties2 GetPhysicalDeviceImageFormatProperties2}, possibly multiple times, as follows:
+ * Let {@code VkImageFormatProperties2 imageCreateImageFormatPropertiesList[]} be defined as follows.
+ *
+ *
+ * - If {@link VkImageCreateInfo}{@code ::pNext} contains no {@link VkExternalFormatANDROID} structure with non-zero {@code externalFormat}, then {@code imageCreateImageFormatPropertiesList} is the list of structures obtained by calling {@link VK11#vkGetPhysicalDeviceImageFormatProperties2 GetPhysicalDeviceImageFormatProperties2}, possibly multiple times, as follows:
*
*
* - The parameters {@link VkPhysicalDeviceImageFormatInfo2}{@code ::format}, {@code imageType}, {@code tiling}, {@code usage}, and {@code flags} must be equal to those in {@link VkImageCreateInfo}.
@@ -105,6 +109,17 @@
* - If any call to {@link VK11#vkGetPhysicalDeviceImageFormatProperties2 GetPhysicalDeviceImageFormatProperties2} returns an error, then {@code imageCreateImageFormatPropertiesList} is defined to be the empty list.
*
*
+ * - If {@link VkImageCreateInfo}{@code ::pNext} contains a {@link VkExternalFormatANDROID} structure with non-zero {@code externalFormat}, then {@code imageCreateImageFormatPropertiesList} contains a single element where:
+ *
+ *
+ * - {@link VkImageFormatProperties}{@code ::maxMipLevels} is
⌊log2(max(extent.width, extent.height, extent.depth))⌋ + 1
.
+ * - {@link VkImageFormatProperties}{@code ::maxArrayLayers} is {@link VkPhysicalDeviceLimits}{@code ::maxImageArrayLayers}.
+ * - Each component of {@link VkImageFormatProperties}{@code ::maxExtent} is {@link VkPhysicalDeviceLimits}{@code ::maxImageDimension2D}.
+ * - {@link VkImageFormatProperties}{@code ::sampleCounts} contains exactly {@link VK10#VK_SAMPLE_COUNT_1_BIT SAMPLE_COUNT_1_BIT}.
+ *
+ *
+ *
+ *
* Let {@code uint32_t imageCreateMaxMipLevels} be the minimum value of {@link VkImageFormatProperties}{@code ::maxMipLevels} in {@code imageCreateImageFormatPropertiesList}. The value is undefined if {@code imageCreateImageFormatPropertiesList} is empty.
* Let {@code uint32_t imageCreateMaxArrayLayers} be the minimum value of {@link VkImageFormatProperties}{@code ::maxArrayLayers} in {@code imageCreateImageFormatPropertiesList}. The value is undefined if {@code imageCreateImageFormatPropertiesList} is empty.
* Let {@code VkExtent3D imageCreateMaxExtent} be the component-wise minimum over all {@link VkImageFormatProperties}{@code ::maxExtent} values in {@code imageCreateImageFormatPropertiesList}. The value is undefined if {@code imageCreateImageFormatPropertiesList} is empty.
@@ -141,7 +156,8 @@
* If {@code sharingMode} is {@link VK10#VK_SHARING_MODE_CONCURRENT SHARING_MODE_CONCURRENT}, {@code pQueueFamilyIndices} must be a valid pointer to an array of {@code queueFamilyIndexCount} {@code uint32_t} values
* If {@code sharingMode} is {@link VK10#VK_SHARING_MODE_CONCURRENT SHARING_MODE_CONCURRENT}, {@code queueFamilyIndexCount} must be greater than 1
* If {@code sharingMode} is {@link VK10#VK_SHARING_MODE_CONCURRENT SHARING_MODE_CONCURRENT}, each element of {@code pQueueFamilyIndices} must be unique and must be less than {@code pQueueFamilyPropertyCount} returned by either {@link VK10#vkGetPhysicalDeviceQueueFamilyProperties GetPhysicalDeviceQueueFamilyProperties} or {@link VK11#vkGetPhysicalDeviceQueueFamilyProperties2 GetPhysicalDeviceQueueFamilyProperties2} for the {@code physicalDevice} that was used to create {@code device}
- * {@code format} must not be {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
+ * If the {@code pNext} chain includes a {@link VkExternalFormatANDROID} structure, and its {@code externalFormat} member is non-zero the {@code format} must be {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
+ * If the {@code pNext} chain does not include a {@link VkExternalFormatANDROID} structure, or does and its {@code externalFormat} member is 0, the {@code format} must not be {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
* {@code extent.width} must be greater than 0
* {@code extent.height} must be greater than 0
* {@code extent.depth} must be greater than 0
@@ -205,6 +221,11 @@
* If the {@code pNext} chain includes a {@link VkImageDrmFormatModifierListCreateInfoEXT} or {@link VkImageDrmFormatModifierExplicitCreateInfoEXT} structure, then {@code tiling} must be {@link EXTImageDrmFormatModifier#VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT}
* If {@code tiling} is {@link EXTImageDrmFormatModifier#VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT} and {@code flags} contains {@link VK10#VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT IMAGE_CREATE_MUTABLE_FORMAT_BIT}, then the {@code pNext} chain must include a {@link VkImageFormatListCreateInfo} structure with non-zero {@code viewFormatCount}
* If {@code flags} contains {@link EXTSampleLocations#VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT} {@code format} must be a depth or depth/stencil format
+ * If the {@code pNext} chain includes a {@link VkExternalMemoryImageCreateInfo} structure whose {@code handleTypes} member includes {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID}, {@code imageType} must be {@link VK10#VK_IMAGE_TYPE_2D IMAGE_TYPE_2D}
+ * If the {@code pNext} chain includes a {@link VkExternalMemoryImageCreateInfo} structure whose {@code handleTypes} member includes {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID}, {@code mipLevels} must either be 1 or equal to the number of levels in the complete mipmap chain based on extent.width
, extent.height
, and extent.depth
+ * If the {@code pNext} chain includes a {@link VkExternalFormatANDROID} structure whose {@code externalFormat} member is not 0, {@code flags} must not include {@link VK10#VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT IMAGE_CREATE_MUTABLE_FORMAT_BIT}
+ * If the {@code pNext} chain includes a {@link VkExternalFormatANDROID} structure whose {@code externalFormat} member is not 0, {@code usage} must not include any usages except {@link VK10#VK_IMAGE_USAGE_SAMPLED_BIT IMAGE_USAGE_SAMPLED_BIT}
+ * If the {@code pNext} chain includes a {@link VkExternalFormatANDROID} structure whose {@code externalFormat} member is not 0, {@code tiling} must be {@link VK10#VK_IMAGE_TILING_OPTIMAL IMAGE_TILING_OPTIMAL}
* If {@code format} is a depth-stencil format, {@code usage} includes {@link VK10#VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT}, and the {@code pNext} chain includes a {@link VkImageStencilUsageCreateInfo} structure, then its {@link VkImageStencilUsageCreateInfo}{@code ::stencilUsage} member must also include {@link VK10#VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT}
* If {@code format} is a depth-stencil format, {@code usage} does not include {@link VK10#VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT}, and the {@code pNext} chain includes a {@link VkImageStencilUsageCreateInfo} structure, then its {@link VkImageStencilUsageCreateInfo}{@code ::stencilUsage} member must also not include {@link VK10#VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT}
* If {@code format} is a depth-stencil format, {@code usage} includes {@link VK10#VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT}, and the {@code pNext} chain includes a {@link VkImageStencilUsageCreateInfo} structure, then its {@link VkImageStencilUsageCreateInfo}{@code ::stencilUsage} member must also include {@link VK10#VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT}
@@ -228,9 +249,9 @@
* If the {@link KHRPortabilitySubset VK_KHR_portability_subset} extension is enabled, and {@link VkPhysicalDevicePortabilitySubsetFeaturesKHR}{@code ::multisampleArrayImage} is {@link VK10#VK_FALSE FALSE}, and {@code samples} is not {@link VK10#VK_SAMPLE_COUNT_1_BIT SAMPLE_COUNT_1_BIT}, then {@code arrayLayers} must be 1
* If a {@link VkImageFormatListCreateInfo} structure was included in the {@code pNext} chain and {@link VkImageFormatListCreateInfo}{@code ::viewFormatCount} is not zero, then each format in {@link VkImageFormatListCreateInfo}{@code ::pViewFormats} must either be compatible with the {@code format} as described in the compatibility table or, if {@code flags} contains {@link VK11#VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT}, be an uncompressed format that is size-compatible with {@code format}
* If {@code flags} does not contain {@link VK10#VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT IMAGE_CREATE_MUTABLE_FORMAT_BIT} and the {@code pNext} chain includes a {@link VkImageFormatListCreateInfo} structure, then {@link VkImageFormatListCreateInfo}{@code ::viewFormatCount} must be 0 or 1
- * If {@code usage} includes {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR}, {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR}, then the {@code pNext} chain must include a valid {@link VkVideoProfileListInfoKHR} structure with {@code profileCount} greater than 0 and {@code pProfiles} including at least one {@link VkVideoProfileInfoKHR}{@code ::videoCodecOperation} specifying a decode operation
- * If {@code usage} includes {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR}, {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR}, {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR}, then the {@code pNext} chain must include a valid {@link VkVideoProfileListInfoKHR} structure with {@code profileCount} greater than 0 and {@code pProfiles} including at least one {@link VkVideoProfileInfoKHR}{@code ::videoCodecOperation} specifying an encode operation
- * If the {@code pNext} chain includes a {@link VkVideoProfileListInfoKHR} structure then {@code supportedVideoFormat} must be {@link VK10#VK_TRUE TRUE}
+ * If {@code usage} includes {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR}, {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR}, or {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR}, then the {@code pNext} chain must include a {@link VkVideoProfileListInfoKHR} structure with {@code profileCount} greater than 0 and {@code pProfiles} including at least one {@link VkVideoProfileInfoKHR} structure with a {@code videoCodecOperation} member specifying a decode operation
+ * If {@code usage} includes {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR}, {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR}, or {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR}, then the {@code pNext} chain must include a {@link VkVideoProfileListInfoKHR} structure with {@code profileCount} greater than 0 and {@code pProfiles} including at least one {@link VkVideoProfileInfoKHR} structure with a {@code videoCodecOperation} member specifying an encode operation
+ * If the {@code pNext} chain includes a {@link VkVideoProfileListInfoKHR} structure with {@code profileCount} greater than 0, then {@code supportedVideoFormat} must be {@link VK10#VK_TRUE TRUE}
* If the {@code multisampledRenderToSingleSampled} feature is not enabled, {@code flags} must not contain {@link EXTMultisampledRenderToSingleSampled#VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT}
* If {@code flags} contains {@link EXTMultisampledRenderToSingleSampled#VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT}, {@code samples} must be {@link VK10#VK_SAMPLE_COUNT_1_BIT SAMPLE_COUNT_1_BIT}
* If the {@code pNext} chain includes a {@link VkImageCompressionControlEXT} structure, {@code format} is a multi-planar format, and {@link VkImageCompressionControlEXT}{@code ::flags} includes {@link EXTImageCompressionControl#VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT}, then {@link VkImageCompressionControlEXT}{@code ::compressionControlPlaneCount} must be equal to the number of planes in {@code format}
@@ -248,7 +269,7 @@
*
*
* - {@code sType} must be {@link VK10#VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO STRUCTURE_TYPE_IMAGE_CREATE_INFO}
- * - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of {@link VkDedicatedAllocationImageCreateInfoNV}, {@link VkExportMetalObjectCreateInfoEXT}, {@link VkExternalMemoryImageCreateInfo}, {@link VkExternalMemoryImageCreateInfoNV}, {@link VkImageCompressionControlEXT}, {@link VkImageDrmFormatModifierExplicitCreateInfoEXT}, {@link VkImageDrmFormatModifierListCreateInfoEXT}, {@link VkImageFormatListCreateInfo}, {@link VkImageStencilUsageCreateInfo}, {@link VkImageSwapchainCreateInfoKHR}, {@link VkImportMetalIOSurfaceInfoEXT}, {@link VkImportMetalTextureInfoEXT}, {@link VkOpaqueCaptureDescriptorDataCreateInfoEXT}, {@link VkOpticalFlowImageFormatInfoNV}, or {@link VkVideoProfileListInfoKHR}
+ * - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of {@link VkDedicatedAllocationImageCreateInfoNV}, {@link VkExportMetalObjectCreateInfoEXT}, {@link VkExternalFormatANDROID}, {@link VkExternalMemoryImageCreateInfo}, {@link VkExternalMemoryImageCreateInfoNV}, {@link VkImageCompressionControlEXT}, {@link VkImageDrmFormatModifierExplicitCreateInfoEXT}, {@link VkImageDrmFormatModifierListCreateInfoEXT}, {@link VkImageFormatListCreateInfo}, {@link VkImageStencilUsageCreateInfo}, {@link VkImageSwapchainCreateInfoKHR}, {@link VkImportMetalIOSurfaceInfoEXT}, {@link VkImportMetalTextureInfoEXT}, {@link VkOpaqueCaptureDescriptorDataCreateInfoEXT}, {@link VkOpticalFlowImageFormatInfoNV}, or {@link VkVideoProfileListInfoKHR}
* - The {@code sType} value of each struct in the {@code pNext} chain must be unique, with the exception of structures of type {@link VkExportMetalObjectCreateInfoEXT} or {@link VkImportMetalTextureInfoEXT}
* - {@code flags} must be a valid combination of {@code VkImageCreateFlagBits} values
* - {@code imageType} must be a valid {@code VkImageType} value
@@ -420,6 +441,8 @@ public VkImageCreateInfo(ByteBuffer container) {
public VkImageCreateInfo pNext(VkDedicatedAllocationImageCreateInfoNV value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkExportMetalObjectCreateInfoEXT} value to the {@code pNext} chain. */
public VkImageCreateInfo pNext(VkExportMetalObjectCreateInfoEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkExternalFormatANDROID} value to the {@code pNext} chain. */
+ public VkImageCreateInfo pNext(VkExternalFormatANDROID value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkExternalMemoryImageCreateInfo} value to the {@code pNext} chain. */
public VkImageCreateInfo pNext(VkExternalMemoryImageCreateInfo value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkExternalMemoryImageCreateInfoKHR} value to the {@code pNext} chain. */
@@ -818,6 +841,8 @@ protected VkImageCreateInfo getElementFactory() {
public VkImageCreateInfo.Buffer pNext(VkDedicatedAllocationImageCreateInfoNV value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkExportMetalObjectCreateInfoEXT} value to the {@code pNext} chain. */
public VkImageCreateInfo.Buffer pNext(VkExportMetalObjectCreateInfoEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkExternalFormatANDROID} value to the {@code pNext} chain. */
+ public VkImageCreateInfo.Buffer pNext(VkExternalFormatANDROID value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkExternalMemoryImageCreateInfo} value to the {@code pNext} chain. */
public VkImageCreateInfo.Buffer pNext(VkExternalMemoryImageCreateInfo value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkExternalMemoryImageCreateInfoKHR} value to the {@code pNext} chain. */
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageFormatProperties2.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageFormatProperties2.java
index f3665a8531..87680f392e 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageFormatProperties2.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageFormatProperties2.java
@@ -31,7 +31,7 @@
*
*
* - {@code sType} must be {@link VK11#VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2}
- * - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of {@link VkExternalImageFormatProperties}, {@link VkFilterCubicImageViewImageFormatPropertiesEXT}, {@link VkImageCompressionPropertiesEXT}, {@link VkSamplerYcbcrConversionImageFormatProperties}, or {@link VkTextureLODGatherFormatPropertiesAMD}
+ * - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of {@link VkAndroidHardwareBufferUsageANDROID}, {@link VkExternalImageFormatProperties}, {@link VkFilterCubicImageViewImageFormatPropertiesEXT}, {@link VkImageCompressionPropertiesEXT}, {@link VkSamplerYcbcrConversionImageFormatProperties}, or {@link VkTextureLODGatherFormatPropertiesAMD}
* - The {@code sType} value of each struct in the {@code pNext} chain must be unique
*
*
@@ -105,6 +105,8 @@ public VkImageFormatProperties2(ByteBuffer container) {
public VkImageFormatProperties2 sType$Default() { return sType(VK11.VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2); }
/** Sets the specified value to the {@link #pNext} field. */
public VkImageFormatProperties2 pNext(@NativeType("void *") long value) { npNext(address(), value); return this; }
+ /** Prepends the specified {@link VkAndroidHardwareBufferUsageANDROID} value to the {@code pNext} chain. */
+ public VkImageFormatProperties2 pNext(VkAndroidHardwareBufferUsageANDROID value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkExternalImageFormatProperties} value to the {@code pNext} chain. */
public VkImageFormatProperties2 pNext(VkExternalImageFormatProperties value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkExternalImageFormatPropertiesKHR} value to the {@code pNext} chain. */
@@ -340,6 +342,8 @@ protected VkImageFormatProperties2 getElementFactory() {
public VkImageFormatProperties2.Buffer sType$Default() { return sType(VK11.VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2); }
/** Sets the specified value to the {@link VkImageFormatProperties2#pNext} field. */
public VkImageFormatProperties2.Buffer pNext(@NativeType("void *") long value) { VkImageFormatProperties2.npNext(address(), value); return this; }
+ /** Prepends the specified {@link VkAndroidHardwareBufferUsageANDROID} value to the {@code pNext} chain. */
+ public VkImageFormatProperties2.Buffer pNext(VkAndroidHardwareBufferUsageANDROID value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkExternalImageFormatProperties} value to the {@code pNext} chain. */
public VkImageFormatProperties2.Buffer pNext(VkExternalImageFormatProperties value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkExternalImageFormatPropertiesKHR} value to the {@code pNext} chain. */
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageMemoryBarrier.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageMemoryBarrier.java
index abd1bd1b4e..2bde56a0f2 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageMemoryBarrier.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageMemoryBarrier.java
@@ -40,11 +40,6 @@
* Valid Usage
*
*
- * - {@code subresourceRange.baseMipLevel} must be less than the {@code mipLevels} specified in {@link VkImageCreateInfo} when {@code image} was created
- * - If {@code subresourceRange.levelCount} is not {@link VK10#VK_REMAINING_MIP_LEVELS REMAINING_MIP_LEVELS},
subresourceRange.baseMipLevel + subresourceRange.levelCount
must be less than or equal to the {@code mipLevels} specified in {@link VkImageCreateInfo} when {@code image} was created
- * - {@code subresourceRange.baseArrayLayer} must be less than the {@code arrayLayers} specified in {@link VkImageCreateInfo} when {@code image} was created
- * - If {@code subresourceRange.layerCount} is not {@link VK10#VK_REMAINING_ARRAY_LAYERS REMAINING_ARRAY_LAYERS},
subresourceRange.baseArrayLayer + subresourceRange.layerCount
must be less than or equal to the {@code arrayLayers} specified in {@link VkImageCreateInfo} when {@code image} was created
- * - If {@code image} is non-sparse then it must be bound completely and contiguously to a single {@code VkDeviceMemory} object
* - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link VK10#VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL} then {@code image} must have been created with {@link VK10#VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT IMAGE_USAGE_COLOR_ATTACHMENT_BIT}
* - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link VK10#VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL} then {@code image} must have been created with {@link VK10#VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT}
* - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link VK10#VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL} then {@code image} must have been created with {@link VK10#VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT}
@@ -59,20 +54,35 @@
* - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link VK12#VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL} then {@code image} must have been created with {@link VK10#VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT} set
* - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link VK12#VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL} then {@code image} must have been created with at least one of {@link VK10#VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT}, {@link VK10#VK_IMAGE_USAGE_SAMPLED_BIT IMAGE_USAGE_SAMPLED_BIT}, or {@link VK10#VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT IMAGE_USAGE_INPUT_ATTACHMENT_BIT}
* - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link VK12#VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL} then {@code image} must have been created with {@link VK10#VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT} set
- * - If the {@code synchronization2} feature is not enabled, {@code layout} must not be {@link KHRSynchronization2#VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR} or {@link KHRSynchronization2#VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR}
+ * - If the {@code synchronization2} feature is not enabled, {@code oldLayout} must not be {@link KHRSynchronization2#VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR} or {@link KHRSynchronization2#VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR}
+ * - If the {@code synchronization2} feature is not enabled, {@code newLayout} must not be {@link KHRSynchronization2#VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR} or {@link KHRSynchronization2#VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR}
* - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link VK13#VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL IMAGE_LAYOUT_ATTACHMENT_OPTIMAL}, {@code image} must have been created with {@link VK10#VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT IMAGE_USAGE_COLOR_ATTACHMENT_BIT} or {@link VK10#VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT}
* - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link VK13#VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL IMAGE_LAYOUT_READ_ONLY_OPTIMAL}, {@code image} must have been created with at least one of {@link VK10#VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT}, {@link VK10#VK_IMAGE_USAGE_SAMPLED_BIT IMAGE_USAGE_SAMPLED_BIT}, or {@link VK10#VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT IMAGE_USAGE_INPUT_ATTACHMENT_BIT}
* - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link KHRFragmentShadingRate#VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR} then {@code image} must have been created with {@link KHRFragmentShadingRate#VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR} set
- * - If {@code image} has a single-plane color format or is not disjoint, then the {@code aspectMask} member of {@code subresourceRange} must be {@link VK10#VK_IMAGE_ASPECT_COLOR_BIT IMAGE_ASPECT_COLOR_BIT}
- * - If {@code image} has a multi-planar format and the image is disjoint, then the {@code aspectMask} member of {@code subresourceRange} must include either at least one of {@link VK11#VK_IMAGE_ASPECT_PLANE_0_BIT IMAGE_ASPECT_PLANE_0_BIT}, {@link VK11#VK_IMAGE_ASPECT_PLANE_1_BIT IMAGE_ASPECT_PLANE_1_BIT}, and {@link VK11#VK_IMAGE_ASPECT_PLANE_2_BIT IMAGE_ASPECT_PLANE_2_BIT}; or must include {@link VK10#VK_IMAGE_ASPECT_COLOR_BIT IMAGE_ASPECT_COLOR_BIT}
- * - If {@code image} has a multi-planar format with only two planes, then the {@code aspectMask} member of {@code subresourceRange} must not include {@link VK11#VK_IMAGE_ASPECT_PLANE_2_BIT IMAGE_ASPECT_PLANE_2_BIT}
- * - If {@code image} has a depth/stencil format with both depth and stencil and the {@code separateDepthStencilLayouts} feature is enabled, then the {@code aspectMask} member of {@code subresourceRange} must include either or both {@link VK10#VK_IMAGE_ASPECT_DEPTH_BIT IMAGE_ASPECT_DEPTH_BIT} and {@link VK10#VK_IMAGE_ASPECT_STENCIL_BIT IMAGE_ASPECT_STENCIL_BIT}
- * - If {@code image} has a depth/stencil format with both depth and stencil and the {@code separateDepthStencilLayouts} feature is not enabled, then the {@code aspectMask} member of {@code subresourceRange} must include both {@link VK10#VK_IMAGE_ASPECT_DEPTH_BIT IMAGE_ASPECT_DEPTH_BIT} and {@link VK10#VK_IMAGE_ASPECT_STENCIL_BIT IMAGE_ASPECT_STENCIL_BIT}
* - If {@code srcQueueFamilyIndex} is not equal to {@code dstQueueFamilyIndex}, at least one must not be a special queue family reserved for external memory ownership transfers, as described in Queue Family Ownership Transfer
* - If {@code image} was created with a sharing mode of {@link VK10#VK_SHARING_MODE_CONCURRENT SHARING_MODE_CONCURRENT}, {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} are not equal, and one of {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} is one of the special queue family values reserved for external memory transfers, the other must be {@link VK10#VK_QUEUE_FAMILY_IGNORED QUEUE_FAMILY_IGNORED}
* - If {@code image} was created with a sharing mode of {@link VK10#VK_SHARING_MODE_EXCLUSIVE SHARING_MODE_EXCLUSIVE}, and {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} are not equal, {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} must both be valid queue families, or one of the special queue family values reserved for external memory transfers, as described in Queue Family Ownership Transfer
+ * - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link KHRVideoDecodeQueue#VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR} then {@code image} must have been created with {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR}
+ * - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link KHRVideoDecodeQueue#VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR} then {@code image} must have been created with {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR}
+ * - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link KHRVideoDecodeQueue#VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR} then {@code image} must have been created with {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR}
+ * - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link KHRVideoEncodeQueue#VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR} then {@code image} must have been created with {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR}
+ * - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link KHRVideoEncodeQueue#VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR} then {@code image} must have been created with {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR}
+ * - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link KHRVideoEncodeQueue#VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR} then {@code image} must have been created with {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR}
* - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link EXTAttachmentFeedbackLoopLayout#VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT} then {@code image} must have been created with either the {@link VK10#VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT IMAGE_USAGE_COLOR_ATTACHMENT_BIT} or {@link VK10#VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT} usage bits, and the {@link VK10#VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT IMAGE_USAGE_INPUT_ATTACHMENT_BIT} or {@link VK10#VK_IMAGE_USAGE_SAMPLED_BIT IMAGE_USAGE_SAMPLED_BIT} usage bits, and the {@link EXTAttachmentFeedbackLoopLayout#VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT} usage bit
* - If the {@code attachmentFeedbackLoopLayout} feature is not enabled, {@code newLayout} must not be {@link EXTAttachmentFeedbackLoopLayout#VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT}
+ *
+ *
+ *
+ * - {@code subresourceRange.baseMipLevel} must be less than the {@code mipLevels} specified in {@link VkImageCreateInfo} when {@code image} was created
+ * - If {@code subresourceRange.levelCount} is not {@link VK10#VK_REMAINING_MIP_LEVELS REMAINING_MIP_LEVELS},
subresourceRange.baseMipLevel + subresourceRange.levelCount
must be less than or equal to the {@code mipLevels} specified in {@link VkImageCreateInfo} when {@code image} was created
+ * - {@code subresourceRange.baseArrayLayer} must be less than the {@code arrayLayers} specified in {@link VkImageCreateInfo} when {@code image} was created
+ * - If {@code subresourceRange.layerCount} is not {@link VK10#VK_REMAINING_ARRAY_LAYERS REMAINING_ARRAY_LAYERS},
subresourceRange.baseArrayLayer + subresourceRange.layerCount
must be less than or equal to the {@code arrayLayers} specified in {@link VkImageCreateInfo} when {@code image} was created
+ * - If {@code image} is non-sparse then it must be bound completely and contiguously to a single {@code VkDeviceMemory} object
+ * - If {@code image} has a single-plane color format or is not disjoint, then the {@code aspectMask} member of {@code subresourceRange} must be {@link VK10#VK_IMAGE_ASPECT_COLOR_BIT IMAGE_ASPECT_COLOR_BIT}
+ * - If {@code image} has a multi-planar format and the image is disjoint, then the {@code aspectMask} member of {@code subresourceRange} must include either at least one of {@link VK11#VK_IMAGE_ASPECT_PLANE_0_BIT IMAGE_ASPECT_PLANE_0_BIT}, {@link VK11#VK_IMAGE_ASPECT_PLANE_1_BIT IMAGE_ASPECT_PLANE_1_BIT}, and {@link VK11#VK_IMAGE_ASPECT_PLANE_2_BIT IMAGE_ASPECT_PLANE_2_BIT}; or must include {@link VK10#VK_IMAGE_ASPECT_COLOR_BIT IMAGE_ASPECT_COLOR_BIT}
+ * - If {@code image} has a multi-planar format with only two planes, then the {@code aspectMask} member of {@code subresourceRange} must not include {@link VK11#VK_IMAGE_ASPECT_PLANE_2_BIT IMAGE_ASPECT_PLANE_2_BIT}
+ * - If {@code image} has a depth/stencil format with both depth and stencil and the {@code separateDepthStencilLayouts} feature is enabled, then the {@code aspectMask} member of {@code subresourceRange} must include either or both {@link VK10#VK_IMAGE_ASPECT_DEPTH_BIT IMAGE_ASPECT_DEPTH_BIT} and {@link VK10#VK_IMAGE_ASPECT_STENCIL_BIT IMAGE_ASPECT_STENCIL_BIT}
+ * - If {@code image} has a depth/stencil format with both depth and stencil and the {@code separateDepthStencilLayouts} feature is not enabled, then the {@code aspectMask} member of {@code subresourceRange} must include both {@link VK10#VK_IMAGE_ASPECT_DEPTH_BIT IMAGE_ASPECT_DEPTH_BIT} and {@link VK10#VK_IMAGE_ASPECT_STENCIL_BIT IMAGE_ASPECT_STENCIL_BIT}
* - If the {@code synchronization2} feature is not enabled, and {@code image} was created with a sharing mode of {@link VK10#VK_SHARING_MODE_CONCURRENT SHARING_MODE_CONCURRENT}, at least one of {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} must be {@link VK10#VK_QUEUE_FAMILY_IGNORED QUEUE_FAMILY_IGNORED}
*
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageMemoryBarrier2.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageMemoryBarrier2.java
index 1bc0398e44..af832a1fb7 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageMemoryBarrier2.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageMemoryBarrier2.java
@@ -68,8 +68,8 @@
* - If {@code srcAccessMask} includes {@link VK13#VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT}, {@code srcStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT} {@link VK13#VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT PIPELINE_STAGE_2_ALL_GRAPHICS_BIT}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
* - If {@code srcAccessMask} includes {@link VK13#VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT}, {@code srcStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT PIPELINE_STAGE_2_ALL_GRAPHICS_BIT}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
* - If {@code srcAccessMask} includes {@link VK13#VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT}, {@code srcStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT PIPELINE_STAGE_2_ALL_GRAPHICS_BIT}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
- * - If {@code srcAccessMask} includes {@link VK13#VK_ACCESS_2_TRANSFER_READ_BIT ACCESS_2_TRANSFER_READ_BIT}, {@code srcStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_COPY_BIT PIPELINE_STAGE_2_COPY_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_BLIT_BIT PIPELINE_STAGE_2_BLIT_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_RESOLVE_BIT PIPELINE_STAGE_2_RESOLVE_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT PIPELINE_STAGE_2_ALL_TRANSFER_BIT}, {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
- * - If {@code srcAccessMask} includes {@link VK13#VK_ACCESS_2_TRANSFER_WRITE_BIT ACCESS_2_TRANSFER_WRITE_BIT}, {@code srcStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_COPY_BIT PIPELINE_STAGE_2_COPY_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_BLIT_BIT PIPELINE_STAGE_2_BLIT_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_RESOLVE_BIT PIPELINE_STAGE_2_RESOLVE_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_CLEAR_BIT PIPELINE_STAGE_2_CLEAR_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT PIPELINE_STAGE_2_ALL_TRANSFER_BIT}, {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
+ * - If {@code srcAccessMask} includes {@link VK13#VK_ACCESS_2_TRANSFER_READ_BIT ACCESS_2_TRANSFER_READ_BIT}, {@code srcStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_COPY_BIT PIPELINE_STAGE_2_COPY_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_BLIT_BIT PIPELINE_STAGE_2_BLIT_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_RESOLVE_BIT PIPELINE_STAGE_2_RESOLVE_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT PIPELINE_STAGE_2_ALL_TRANSFER_BIT}, {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR}, {@link KHRRayTracingMaintenance1#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
+ * - If {@code srcAccessMask} includes {@link VK13#VK_ACCESS_2_TRANSFER_WRITE_BIT ACCESS_2_TRANSFER_WRITE_BIT}, {@code srcStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_COPY_BIT PIPELINE_STAGE_2_COPY_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_BLIT_BIT PIPELINE_STAGE_2_BLIT_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_RESOLVE_BIT PIPELINE_STAGE_2_RESOLVE_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_CLEAR_BIT PIPELINE_STAGE_2_CLEAR_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT PIPELINE_STAGE_2_ALL_TRANSFER_BIT}, {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR}, {@link KHRRayTracingMaintenance1#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
* - If {@code srcAccessMask} includes {@link VK13#VK_ACCESS_2_HOST_READ_BIT ACCESS_2_HOST_READ_BIT}, {@code srcStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_HOST_BIT PIPELINE_STAGE_2_HOST_BIT}
* - If {@code srcAccessMask} includes {@link VK13#VK_ACCESS_2_HOST_WRITE_BIT ACCESS_2_HOST_WRITE_BIT}, {@code srcStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_HOST_BIT PIPELINE_STAGE_2_HOST_BIT}
* - If {@code srcAccessMask} includes {@link KHRSynchronization2#VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT}, {@code srcStageMask} must include {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT PIPELINE_STAGE_2_ALL_GRAPHICS_BIT}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
@@ -122,8 +122,8 @@
* - If {@code dstAccessMask} includes {@link VK13#VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT}, {@code dstStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT} {@link VK13#VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT PIPELINE_STAGE_2_ALL_GRAPHICS_BIT}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
* - If {@code dstAccessMask} includes {@link VK13#VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT}, {@code dstStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT PIPELINE_STAGE_2_ALL_GRAPHICS_BIT}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
* - If {@code dstAccessMask} includes {@link VK13#VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT}, {@code dstStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT PIPELINE_STAGE_2_ALL_GRAPHICS_BIT}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
- * - If {@code dstAccessMask} includes {@link VK13#VK_ACCESS_2_TRANSFER_READ_BIT ACCESS_2_TRANSFER_READ_BIT}, {@code dstStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_COPY_BIT PIPELINE_STAGE_2_COPY_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_BLIT_BIT PIPELINE_STAGE_2_BLIT_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_RESOLVE_BIT PIPELINE_STAGE_2_RESOLVE_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT PIPELINE_STAGE_2_ALL_TRANSFER_BIT}, {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
- * - If {@code dstAccessMask} includes {@link VK13#VK_ACCESS_2_TRANSFER_WRITE_BIT ACCESS_2_TRANSFER_WRITE_BIT}, {@code dstStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_COPY_BIT PIPELINE_STAGE_2_COPY_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_BLIT_BIT PIPELINE_STAGE_2_BLIT_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_RESOLVE_BIT PIPELINE_STAGE_2_RESOLVE_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_CLEAR_BIT PIPELINE_STAGE_2_CLEAR_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT PIPELINE_STAGE_2_ALL_TRANSFER_BIT}, {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
+ * - If {@code dstAccessMask} includes {@link VK13#VK_ACCESS_2_TRANSFER_READ_BIT ACCESS_2_TRANSFER_READ_BIT}, {@code dstStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_COPY_BIT PIPELINE_STAGE_2_COPY_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_BLIT_BIT PIPELINE_STAGE_2_BLIT_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_RESOLVE_BIT PIPELINE_STAGE_2_RESOLVE_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT PIPELINE_STAGE_2_ALL_TRANSFER_BIT}, {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR}, {@link KHRRayTracingMaintenance1#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
+ * - If {@code dstAccessMask} includes {@link VK13#VK_ACCESS_2_TRANSFER_WRITE_BIT ACCESS_2_TRANSFER_WRITE_BIT}, {@code dstStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_COPY_BIT PIPELINE_STAGE_2_COPY_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_BLIT_BIT PIPELINE_STAGE_2_BLIT_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_RESOLVE_BIT PIPELINE_STAGE_2_RESOLVE_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_CLEAR_BIT PIPELINE_STAGE_2_CLEAR_BIT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT PIPELINE_STAGE_2_ALL_TRANSFER_BIT}, {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR}, {@link KHRRayTracingMaintenance1#VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
* - If {@code dstAccessMask} includes {@link VK13#VK_ACCESS_2_HOST_READ_BIT ACCESS_2_HOST_READ_BIT}, {@code dstStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_HOST_BIT PIPELINE_STAGE_2_HOST_BIT}
* - If {@code dstAccessMask} includes {@link VK13#VK_ACCESS_2_HOST_WRITE_BIT ACCESS_2_HOST_WRITE_BIT}, {@code dstStageMask} must include {@link VK13#VK_PIPELINE_STAGE_2_HOST_BIT PIPELINE_STAGE_2_HOST_BIT}
* - If {@code dstAccessMask} includes {@link KHRSynchronization2#VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT}, {@code dstStageMask} must include {@link KHRSynchronization2#VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT}, {@link VK13#VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT PIPELINE_STAGE_2_ALL_GRAPHICS_BIT}, or {@link VK13#VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT PIPELINE_STAGE_2_ALL_COMMANDS_BIT}
@@ -152,11 +152,6 @@
*
*
*
- * - {@code subresourceRange.baseMipLevel} must be less than the {@code mipLevels} specified in {@link VkImageCreateInfo} when {@code image} was created
- * - If {@code subresourceRange.levelCount} is not {@link VK10#VK_REMAINING_MIP_LEVELS REMAINING_MIP_LEVELS},
subresourceRange.baseMipLevel + subresourceRange.levelCount
must be less than or equal to the {@code mipLevels} specified in {@link VkImageCreateInfo} when {@code image} was created
- * - {@code subresourceRange.baseArrayLayer} must be less than the {@code arrayLayers} specified in {@link VkImageCreateInfo} when {@code image} was created
- * - If {@code subresourceRange.layerCount} is not {@link VK10#VK_REMAINING_ARRAY_LAYERS REMAINING_ARRAY_LAYERS},
subresourceRange.baseArrayLayer + subresourceRange.layerCount
must be less than or equal to the {@code arrayLayers} specified in {@link VkImageCreateInfo} when {@code image} was created
- * - If {@code image} is non-sparse then it must be bound completely and contiguously to a single {@code VkDeviceMemory} object
* - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link VK10#VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL} then {@code image} must have been created with {@link VK10#VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT IMAGE_USAGE_COLOR_ATTACHMENT_BIT}
* - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link VK10#VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL} then {@code image} must have been created with {@link VK10#VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT}
* - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link VK10#VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL} then {@code image} must have been created with {@link VK10#VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT}
@@ -171,20 +166,35 @@
* - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link VK12#VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL} then {@code image} must have been created with {@link VK10#VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT} set
* - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link VK12#VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL} then {@code image} must have been created with at least one of {@link VK10#VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT}, {@link VK10#VK_IMAGE_USAGE_SAMPLED_BIT IMAGE_USAGE_SAMPLED_BIT}, or {@link VK10#VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT IMAGE_USAGE_INPUT_ATTACHMENT_BIT}
* - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link VK12#VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL} then {@code image} must have been created with {@link VK10#VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT} set
- * - If the {@code synchronization2} feature is not enabled, {@code layout} must not be {@link KHRSynchronization2#VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR} or {@link KHRSynchronization2#VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR}
+ * - If the {@code synchronization2} feature is not enabled, {@code oldLayout} must not be {@link KHRSynchronization2#VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR} or {@link KHRSynchronization2#VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR}
+ * - If the {@code synchronization2} feature is not enabled, {@code newLayout} must not be {@link KHRSynchronization2#VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR} or {@link KHRSynchronization2#VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR}
* - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link VK13#VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL IMAGE_LAYOUT_ATTACHMENT_OPTIMAL}, {@code image} must have been created with {@link VK10#VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT IMAGE_USAGE_COLOR_ATTACHMENT_BIT} or {@link VK10#VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT}
* - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link VK13#VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL IMAGE_LAYOUT_READ_ONLY_OPTIMAL}, {@code image} must have been created with at least one of {@link VK10#VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT}, {@link VK10#VK_IMAGE_USAGE_SAMPLED_BIT IMAGE_USAGE_SAMPLED_BIT}, or {@link VK10#VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT IMAGE_USAGE_INPUT_ATTACHMENT_BIT}
* - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link KHRFragmentShadingRate#VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR} then {@code image} must have been created with {@link KHRFragmentShadingRate#VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR} set
- * - If {@code image} has a single-plane color format or is not disjoint, then the {@code aspectMask} member of {@code subresourceRange} must be {@link VK10#VK_IMAGE_ASPECT_COLOR_BIT IMAGE_ASPECT_COLOR_BIT}
- * - If {@code image} has a multi-planar format and the image is disjoint, then the {@code aspectMask} member of {@code subresourceRange} must include either at least one of {@link VK11#VK_IMAGE_ASPECT_PLANE_0_BIT IMAGE_ASPECT_PLANE_0_BIT}, {@link VK11#VK_IMAGE_ASPECT_PLANE_1_BIT IMAGE_ASPECT_PLANE_1_BIT}, and {@link VK11#VK_IMAGE_ASPECT_PLANE_2_BIT IMAGE_ASPECT_PLANE_2_BIT}; or must include {@link VK10#VK_IMAGE_ASPECT_COLOR_BIT IMAGE_ASPECT_COLOR_BIT}
- * - If {@code image} has a multi-planar format with only two planes, then the {@code aspectMask} member of {@code subresourceRange} must not include {@link VK11#VK_IMAGE_ASPECT_PLANE_2_BIT IMAGE_ASPECT_PLANE_2_BIT}
- * - If {@code image} has a depth/stencil format with both depth and stencil and the {@code separateDepthStencilLayouts} feature is enabled, then the {@code aspectMask} member of {@code subresourceRange} must include either or both {@link VK10#VK_IMAGE_ASPECT_DEPTH_BIT IMAGE_ASPECT_DEPTH_BIT} and {@link VK10#VK_IMAGE_ASPECT_STENCIL_BIT IMAGE_ASPECT_STENCIL_BIT}
- * - If {@code image} has a depth/stencil format with both depth and stencil and the {@code separateDepthStencilLayouts} feature is not enabled, then the {@code aspectMask} member of {@code subresourceRange} must include both {@link VK10#VK_IMAGE_ASPECT_DEPTH_BIT IMAGE_ASPECT_DEPTH_BIT} and {@link VK10#VK_IMAGE_ASPECT_STENCIL_BIT IMAGE_ASPECT_STENCIL_BIT}
* - If {@code srcQueueFamilyIndex} is not equal to {@code dstQueueFamilyIndex}, at least one must not be a special queue family reserved for external memory ownership transfers, as described in Queue Family Ownership Transfer
* - If {@code image} was created with a sharing mode of {@link VK10#VK_SHARING_MODE_CONCURRENT SHARING_MODE_CONCURRENT}, {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} are not equal, and one of {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} is one of the special queue family values reserved for external memory transfers, the other must be {@link VK10#VK_QUEUE_FAMILY_IGNORED QUEUE_FAMILY_IGNORED}
* - If {@code image} was created with a sharing mode of {@link VK10#VK_SHARING_MODE_EXCLUSIVE SHARING_MODE_EXCLUSIVE}, and {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} are not equal, {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} must both be valid queue families, or one of the special queue family values reserved for external memory transfers, as described in Queue Family Ownership Transfer
+ * - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link KHRVideoDecodeQueue#VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR} then {@code image} must have been created with {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR}
+ * - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link KHRVideoDecodeQueue#VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR} then {@code image} must have been created with {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR}
+ * - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link KHRVideoDecodeQueue#VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR} then {@code image} must have been created with {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR}
+ * - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link KHRVideoEncodeQueue#VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR} then {@code image} must have been created with {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR}
+ * - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link KHRVideoEncodeQueue#VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR} then {@code image} must have been created with {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR}
+ * - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link KHRVideoEncodeQueue#VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR} then {@code image} must have been created with {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR}
* - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is {@link EXTAttachmentFeedbackLoopLayout#VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT} then {@code image} must have been created with either the {@link VK10#VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT IMAGE_USAGE_COLOR_ATTACHMENT_BIT} or {@link VK10#VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT} usage bits, and the {@link VK10#VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT IMAGE_USAGE_INPUT_ATTACHMENT_BIT} or {@link VK10#VK_IMAGE_USAGE_SAMPLED_BIT IMAGE_USAGE_SAMPLED_BIT} usage bits, and the {@link EXTAttachmentFeedbackLoopLayout#VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT} usage bit
* - If the {@code attachmentFeedbackLoopLayout} feature is not enabled, {@code newLayout} must not be {@link EXTAttachmentFeedbackLoopLayout#VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT}
+ *
+ *
+ *
+ * - {@code subresourceRange.baseMipLevel} must be less than the {@code mipLevels} specified in {@link VkImageCreateInfo} when {@code image} was created
+ * - If {@code subresourceRange.levelCount} is not {@link VK10#VK_REMAINING_MIP_LEVELS REMAINING_MIP_LEVELS},
subresourceRange.baseMipLevel + subresourceRange.levelCount
must be less than or equal to the {@code mipLevels} specified in {@link VkImageCreateInfo} when {@code image} was created
+ * - {@code subresourceRange.baseArrayLayer} must be less than the {@code arrayLayers} specified in {@link VkImageCreateInfo} when {@code image} was created
+ * - If {@code subresourceRange.layerCount} is not {@link VK10#VK_REMAINING_ARRAY_LAYERS REMAINING_ARRAY_LAYERS},
subresourceRange.baseArrayLayer + subresourceRange.layerCount
must be less than or equal to the {@code arrayLayers} specified in {@link VkImageCreateInfo} when {@code image} was created
+ * - If {@code image} is non-sparse then it must be bound completely and contiguously to a single {@code VkDeviceMemory} object
+ * - If {@code image} has a single-plane color format or is not disjoint, then the {@code aspectMask} member of {@code subresourceRange} must be {@link VK10#VK_IMAGE_ASPECT_COLOR_BIT IMAGE_ASPECT_COLOR_BIT}
+ * - If {@code image} has a multi-planar format and the image is disjoint, then the {@code aspectMask} member of {@code subresourceRange} must include either at least one of {@link VK11#VK_IMAGE_ASPECT_PLANE_0_BIT IMAGE_ASPECT_PLANE_0_BIT}, {@link VK11#VK_IMAGE_ASPECT_PLANE_1_BIT IMAGE_ASPECT_PLANE_1_BIT}, and {@link VK11#VK_IMAGE_ASPECT_PLANE_2_BIT IMAGE_ASPECT_PLANE_2_BIT}; or must include {@link VK10#VK_IMAGE_ASPECT_COLOR_BIT IMAGE_ASPECT_COLOR_BIT}
+ * - If {@code image} has a multi-planar format with only two planes, then the {@code aspectMask} member of {@code subresourceRange} must not include {@link VK11#VK_IMAGE_ASPECT_PLANE_2_BIT IMAGE_ASPECT_PLANE_2_BIT}
+ * - If {@code image} has a depth/stencil format with both depth and stencil and the {@code separateDepthStencilLayouts} feature is enabled, then the {@code aspectMask} member of {@code subresourceRange} must include either or both {@link VK10#VK_IMAGE_ASPECT_DEPTH_BIT IMAGE_ASPECT_DEPTH_BIT} and {@link VK10#VK_IMAGE_ASPECT_STENCIL_BIT IMAGE_ASPECT_STENCIL_BIT}
+ * - If {@code image} has a depth/stencil format with both depth and stencil and the {@code separateDepthStencilLayouts} feature is not enabled, then the {@code aspectMask} member of {@code subresourceRange} must include both {@link VK10#VK_IMAGE_ASPECT_DEPTH_BIT IMAGE_ASPECT_DEPTH_BIT} and {@link VK10#VK_IMAGE_ASPECT_STENCIL_BIT IMAGE_ASPECT_STENCIL_BIT}
* - If either {@code srcStageMask} or {@code dstStageMask} includes {@link VK13#VK_PIPELINE_STAGE_2_HOST_BIT PIPELINE_STAGE_2_HOST_BIT}, {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} must be equal
* - If {@code srcStageMask} includes {@link VK13#VK_PIPELINE_STAGE_2_HOST_BIT PIPELINE_STAGE_2_HOST_BIT}, and {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, {@code oldLayout} must be one of {@link VK10#VK_IMAGE_LAYOUT_PREINITIALIZED IMAGE_LAYOUT_PREINITIALIZED}, {@link VK10#VK_IMAGE_LAYOUT_UNDEFINED IMAGE_LAYOUT_UNDEFINED}, or {@link VK10#VK_IMAGE_LAYOUT_GENERAL IMAGE_LAYOUT_GENERAL}
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageMemoryRequirementsInfo2.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageMemoryRequirementsInfo2.java
index 58e73198cc..e94988aa5b 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageMemoryRequirementsInfo2.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageMemoryRequirementsInfo2.java
@@ -25,6 +25,7 @@
* If {@code image} was created with {@link VK11#VK_IMAGE_CREATE_DISJOINT_BIT IMAGE_CREATE_DISJOINT_BIT} and with {@link EXTImageDrmFormatModifier#VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT}, then there must be a {@link VkImagePlaneMemoryRequirementsInfo} included in the {@code pNext} chain of the {@link VkImageMemoryRequirementsInfo2} structure
* If {@code image} was not created with the {@link VK11#VK_IMAGE_CREATE_DISJOINT_BIT IMAGE_CREATE_DISJOINT_BIT} flag, there must not be a {@link VkImagePlaneMemoryRequirementsInfo} included in the {@code pNext} chain of the {@link VkImageMemoryRequirementsInfo2} structure
* If {@code image} was created with a single-plane format and with any {@code tiling} other than {@link EXTImageDrmFormatModifier#VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT}, then there must not be a {@link VkImagePlaneMemoryRequirementsInfo} included in the {@code pNext} chain of the {@link VkImageMemoryRequirementsInfo2} structure
+ * If {@code image} was created with the {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID} external memory handle type, then {@code image} must be bound to memory
*
*
* Valid Usage (Implicit)
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageViewCreateInfo.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageViewCreateInfo.java
index b1b2a25b4f..0f1d93c472 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageViewCreateInfo.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImageViewCreateInfo.java
@@ -41,9 +41,9 @@
*
* If the image view is to be used with a sampler which supports sampler Y′CBCR conversion, an identically defined object of type {@code VkSamplerYcbcrConversion} to that used to create the sampler must be passed to {@link VK10#vkCreateImageView CreateImageView} in a {@link VkSamplerYcbcrConversionInfo} included in the {@code pNext} chain of {@link VkImageViewCreateInfo}. Conversely, if a {@code VkSamplerYcbcrConversion} object is passed to {@link VK10#vkCreateImageView CreateImageView}, an identically defined {@code VkSamplerYcbcrConversion} object must be used when sampling the image.
*
- * If the image has a multi-planar {@code format} and {@code subresourceRange.aspectMask} is {@link VK10#VK_IMAGE_ASPECT_COLOR_BIT IMAGE_ASPECT_COLOR_BIT}, and it was created with {@code usage} value containing flags other than {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR}, {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR} , {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR}, {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR}, then the {@code format} must be identical to the image {@code format}, and the sampler to be used with the image view must enable sampler Y′CBCR conversion.
+ * If the image has a multi-planar {@code format}, {@code subresourceRange.aspectMask} is {@link VK10#VK_IMAGE_ASPECT_COLOR_BIT IMAGE_ASPECT_COLOR_BIT}, and {@code usage} includes {@link VK10#VK_IMAGE_USAGE_SAMPLED_BIT IMAGE_USAGE_SAMPLED_BIT}, then the {@code format} must be identical to the image {@code format} and the sampler to be used with the image view must enable sampler Y′CBCR conversion.
*
- * If the image has a multi-planar {@code format} and the {@code image} has been created with a {@code usage} value containing any of the {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR}, {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR}, and {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR} flags, then all of the video decode operations would ignore the {@link VkSamplerYcbcrConversionInfo} structure and/or sampler Y′CBCR conversion object, associated with the image view. If the image has a multi-planar {@code format} and the {@code image} has been created with a {@code usage} value containing any of the {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR}, {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR}, and {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR} flags, then all of the video encode operations would ignore the {@link VkSamplerYcbcrConversionInfo} structure and/or sampler Y′CBCR conversion object, associated with the image view.
+ * When such an image is used in a video coding operation, the sampler Y′CBCR conversion has no effect.
*
* If {@code image} was created with the {@link VK10#VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT IMAGE_CREATE_MUTABLE_FORMAT_BIT} and the image has a multi-planar {@code format}, and if {@code subresourceRange.aspectMask} is {@link VK11#VK_IMAGE_ASPECT_PLANE_0_BIT IMAGE_ASPECT_PLANE_0_BIT}, {@link VK11#VK_IMAGE_ASPECT_PLANE_1_BIT IMAGE_ASPECT_PLANE_1_BIT}, or {@link VK11#VK_IMAGE_ASPECT_PLANE_2_BIT IMAGE_ASPECT_PLANE_2_BIT}, {@code format} must be compatible with the corresponding plane of the image, and the sampler to be used with the image view must not enable sampler Y′CBCR conversion. The {@code width} and {@code height} of the single-plane image view must be derived from the multi-planar image’s dimensions in the manner listed for plane compatibility for the plane.
*
@@ -95,6 +95,7 @@
* If {@code image} was created with the {@link VK11#VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT} flag and {@code format} is a non-compressed format, the {@code levelCount} and {@code layerCount} members of {@code subresourceRange} must both be 1
* If a {@link VkImageFormatListCreateInfo} structure was included in the {@code pNext} chain of the {@link VkImageCreateInfo} structure used when creating {@code image} and {@link VkImageFormatListCreateInfo}{@code ::viewFormatCount} is not zero then {@code format} must be one of the formats in {@link VkImageFormatListCreateInfo}{@code ::pViewFormats}
* If {@code image} was created with the {@link VK10#VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT IMAGE_CREATE_MUTABLE_FORMAT_BIT} flag, if the {@code format} of the {@code image} is a multi-planar format, and if {@code subresourceRange.aspectMask} is one of {@link VK11#VK_IMAGE_ASPECT_PLANE_0_BIT IMAGE_ASPECT_PLANE_0_BIT}, {@link VK11#VK_IMAGE_ASPECT_PLANE_1_BIT IMAGE_ASPECT_PLANE_1_BIT}, or {@link VK11#VK_IMAGE_ASPECT_PLANE_2_BIT IMAGE_ASPECT_PLANE_2_BIT}, then {@code format} must be compatible with the {@code VkFormat} for the plane of the {@code image} {@code format} indicated by {@code subresourceRange.aspectMask}, as defined in Compatible formats of planes of multi-planar formats
+ * If {@code subresourceRange.aspectMask} contains any of {@link VK11#VK_IMAGE_ASPECT_PLANE_0_BIT IMAGE_ASPECT_PLANE_0_BIT}, {@link VK11#VK_IMAGE_ASPECT_PLANE_1_BIT IMAGE_ASPECT_PLANE_1_BIT}, or {@link VK11#VK_IMAGE_ASPECT_PLANE_2_BIT IMAGE_ASPECT_PLANE_2_BIT}, then it must only have a single bit set
* If {@code image} was not created with the {@link VK10#VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT IMAGE_CREATE_MUTABLE_FORMAT_BIT} flag, or if the {@code format} of the {@code image} is a multi-planar format and if {@code subresourceRange.aspectMask} is {@link VK10#VK_IMAGE_ASPECT_COLOR_BIT IMAGE_ASPECT_COLOR_BIT}, {@code format} must be identical to the {@code format} used to create {@code image}
* If the image view requires a sampler Y′CBCR conversion and {@code usage} contains {@link VK10#VK_IMAGE_USAGE_SAMPLED_BIT IMAGE_USAGE_SAMPLED_BIT}, then the {@code pNext} chain must include a {@link VkSamplerYcbcrConversionInfo} structure with a conversion value other than {@link VK10#VK_NULL_HANDLE NULL_HANDLE}
* If {@code format} has a {@code _422} or {@code _420} suffix then {@code image} must have been created with a width that is a multiple of 2
@@ -103,6 +104,9 @@
* If the {@code pNext} chain includes a {@link VkSamplerYcbcrConversionInfo} structure with a {@code conversion} value other than {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, {@code format} must be the same used in {@link VkSamplerYcbcrConversionCreateInfo}{@code ::format}
* If {@code image} is non-sparse then it must be bound completely and contiguously to a single {@code VkDeviceMemory} object
* {@code viewType} must be compatible with the type of {@code image} as shown in the view type compatibility table
+ * If {@code image} has an external format, {@code format} must be {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
+ * If {@code image} has an external format, the {@code pNext} chain must include a {@link VkSamplerYcbcrConversionInfo} structure with a {@code conversion} object created with the same external format as {@code image}
+ * If {@code image} has an external format, all members of {@code components} must be the identity swizzle
* If {@code image} was created with {@code usage} containing {@link KHRFragmentShadingRate#VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR}, {@code viewType} must be {@link VK10#VK_IMAGE_VIEW_TYPE_2D IMAGE_VIEW_TYPE_2D} or {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY}
* If the {@code shadingRateImage} feature is enabled, and If {@code image} was created with {@code usage} containing {@link NVShadingRateImage#VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV}, {@code format} must be {@link VK10#VK_FORMAT_R8_UINT FORMAT_R8_UINT}
* If the {@code attachmentFragmentShadingRate} feature is enabled, and the {@code usage} for the image view includes {@link KHRFragmentShadingRate#VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR}, then the image view’s format features must contain {@link KHRFragmentShadingRate#VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR}
@@ -124,8 +128,8 @@
* If {@code viewType} is {@link VK10#VK_IMAGE_VIEW_TYPE_CUBE_ARRAY IMAGE_VIEW_TYPE_CUBE_ARRAY} and {@code subresourceRange.layerCount} is {@link VK10#VK_REMAINING_ARRAY_LAYERS REMAINING_ARRAY_LAYERS}, the remaining number of layers must be a multiple of 6
* If the {@link KHRPortabilitySubset VK_KHR_portability_subset} extension is enabled, and {@link VkPhysicalDevicePortabilitySubsetFeaturesKHR}{@code ::imageViewFormatSwizzle} is {@link VK10#VK_FALSE FALSE}, all elements of {@code components} must have the identity swizzle
* If the {@link KHRPortabilitySubset VK_KHR_portability_subset} extension is enabled, and {@link VkPhysicalDevicePortabilitySubsetFeaturesKHR}{@code ::imageViewFormatReinterpretation} is {@link VK10#VK_FALSE FALSE}, the {@code VkFormat} in {@code format} must not contain a different number of components, or a different number of bits in each component, than the format of the {@code VkImage} in {@code image}
- * If {@code image} was created with {@code usage} containing {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR}, {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR}, {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR}, then the {@code viewType} must be {@link VK10#VK_IMAGE_VIEW_TYPE_2D IMAGE_VIEW_TYPE_2D} or {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} and all members of {@code components} must have the identity swizzle
- * If {@code image} was created with {@code usage} containing {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR}, {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR}, {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR}, then the {@code viewType} must be {@link VK10#VK_IMAGE_VIEW_TYPE_2D IMAGE_VIEW_TYPE_2D} or {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY} and all members of {@code components} must have the identity swizzle
+ * If {@code image} was created with {@code usage} containing {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR}, {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR}, or {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR}, then the {@code viewType} must be {@link VK10#VK_IMAGE_VIEW_TYPE_2D IMAGE_VIEW_TYPE_2D} or {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY}
+ * If {@code image} was created with {@code usage} containing {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR}, {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR}, or {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR}, then the {@code viewType} must be {@link VK10#VK_IMAGE_VIEW_TYPE_2D IMAGE_VIEW_TYPE_2D} or {@link VK10#VK_IMAGE_VIEW_TYPE_2D_ARRAY IMAGE_VIEW_TYPE_2D_ARRAY}
* If {@code flags} includes {@link EXTDescriptorBuffer#VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT}, the {@code descriptorBufferCaptureReplay} feature must be enabled
* If the {@code pNext} chain includes a {@link VkOpaqueCaptureDescriptorDataCreateInfoEXT} structure, {@code flags} must contain {@link EXTDescriptorBuffer#VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT}
* If the {@code pNext} chain includes a {@link VkExportMetalObjectCreateInfoEXT} structure, its {@code exportObjectType} member must be {@link EXTMetalObjects#VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT}
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImportAndroidHardwareBufferInfoANDROID.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImportAndroidHardwareBufferInfoANDROID.java
new file mode 100644
index 0000000000..b61df05d4c
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkImportAndroidHardwareBufferInfoANDROID.java
@@ -0,0 +1,330 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package org.lwjgl.vulkan;
+
+import javax.annotation.*;
+
+import java.nio.*;
+
+import org.lwjgl.*;
+import org.lwjgl.system.*;
+
+import static org.lwjgl.system.Checks.*;
+import static org.lwjgl.system.MemoryUtil.*;
+import static org.lwjgl.system.MemoryStack.*;
+
+/**
+ * Import memory from an Android hardware buffer.
+ *
+ * Description
+ *
+ * If the {@link VK10#vkAllocateMemory AllocateMemory} command succeeds, the implementation must acquire a reference to the imported hardware buffer, which it must release when the device memory object is freed. If the command fails, the implementation must not retain a reference.
+ *
+ * Valid Usage
+ *
+ *
+ * - If {@code buffer} is not {@code NULL}, Android hardware buffers must be supported for import, as reported by {@link VkExternalImageFormatProperties} or {@link VkExternalBufferProperties}
+ * - If {@code buffer} is not {@code NULL}, it must be a valid Android hardware buffer object with {@code AHardwareBuffer_Desc}{@code ::usage} compatible with Vulkan as described in Android Hardware Buffers
+ *
+ *
+ * Valid Usage (Implicit)
+ *
+ *
+ * - {@code sType} must be {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID}
+ * - {@code buffer} must be a valid pointer to an {@code AHardwareBuffer} value
+ *
+ *
+ * Layout
+ *
+ *
+ * struct VkImportAndroidHardwareBufferInfoANDROID {
+ * VkStructureType {@link #sType};
+ * void const * {@link #pNext};
+ * AHardwareBuffer * {@link #buffer};
+ * }
+ */
+public class VkImportAndroidHardwareBufferInfoANDROID extends Struct implements NativeResource {
+
+ /** The struct size in bytes. */
+ public static final int SIZEOF;
+
+ /** The struct alignment in bytes. */
+ public static final int ALIGNOF;
+
+ /** The struct member offsets. */
+ public static final int
+ STYPE,
+ PNEXT,
+ BUFFER;
+
+ static {
+ Layout layout = __struct(
+ __member(4),
+ __member(POINTER_SIZE),
+ __member(POINTER_SIZE)
+ );
+
+ SIZEOF = layout.getSize();
+ ALIGNOF = layout.getAlignment();
+
+ STYPE = layout.offsetof(0);
+ PNEXT = layout.offsetof(1);
+ BUFFER = layout.offsetof(2);
+ }
+
+ /**
+ * Creates a {@code VkImportAndroidHardwareBufferInfoANDROID} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * visible to the struct instance and vice versa.
+ *
+ * The created instance holds a strong reference to the container object.
+ */
+ public VkImportAndroidHardwareBufferInfoANDROID(ByteBuffer container) {
+ super(memAddress(container), __checkContainer(container, SIZEOF));
+ }
+
+ @Override
+ public int sizeof() { return SIZEOF; }
+
+ /** the type of this structure. */
+ @NativeType("VkStructureType")
+ public int sType() { return nsType(address()); }
+ /** {@code NULL} or a pointer to a structure extending this structure. */
+ @NativeType("void const *")
+ public long pNext() { return npNext(address()); }
+ /** the Android hardware buffer to import. */
+ @NativeType("AHardwareBuffer *")
+ public long buffer() { return nbuffer(address()); }
+
+ /** Sets the specified value to the {@link #sType} field. */
+ public VkImportAndroidHardwareBufferInfoANDROID sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID} value to the {@link #sType} field. */
+ public VkImportAndroidHardwareBufferInfoANDROID sType$Default() { return sType(ANDROIDExternalMemoryAndroidHardwareBuffer.VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID); }
+ /** Sets the specified value to the {@link #pNext} field. */
+ public VkImportAndroidHardwareBufferInfoANDROID pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
+ /** Sets the specified value to the {@link #buffer} field. */
+ public VkImportAndroidHardwareBufferInfoANDROID buffer(@NativeType("AHardwareBuffer *") long value) { nbuffer(address(), value); return this; }
+
+ /** Initializes this struct with the specified values. */
+ public VkImportAndroidHardwareBufferInfoANDROID set(
+ int sType,
+ long pNext,
+ long buffer
+ ) {
+ sType(sType);
+ pNext(pNext);
+ buffer(buffer);
+
+ return this;
+ }
+
+ /**
+ * Copies the specified struct data to this struct.
+ *
+ * @param src the source struct
+ *
+ * @return this struct
+ */
+ public VkImportAndroidHardwareBufferInfoANDROID set(VkImportAndroidHardwareBufferInfoANDROID src) {
+ memCopy(src.address(), address(), SIZEOF);
+ return this;
+ }
+
+ // -----------------------------------
+
+ /** Returns a new {@code VkImportAndroidHardwareBufferInfoANDROID} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkImportAndroidHardwareBufferInfoANDROID malloc() {
+ return wrap(VkImportAndroidHardwareBufferInfoANDROID.class, nmemAllocChecked(SIZEOF));
+ }
+
+ /** Returns a new {@code VkImportAndroidHardwareBufferInfoANDROID} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkImportAndroidHardwareBufferInfoANDROID calloc() {
+ return wrap(VkImportAndroidHardwareBufferInfoANDROID.class, nmemCallocChecked(1, SIZEOF));
+ }
+
+ /** Returns a new {@code VkImportAndroidHardwareBufferInfoANDROID} instance allocated with {@link BufferUtils}. */
+ public static VkImportAndroidHardwareBufferInfoANDROID create() {
+ ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
+ return wrap(VkImportAndroidHardwareBufferInfoANDROID.class, memAddress(container), container);
+ }
+
+ /** Returns a new {@code VkImportAndroidHardwareBufferInfoANDROID} instance for the specified memory address. */
+ public static VkImportAndroidHardwareBufferInfoANDROID create(long address) {
+ return wrap(VkImportAndroidHardwareBufferInfoANDROID.class, address);
+ }
+
+ /** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkImportAndroidHardwareBufferInfoANDROID createSafe(long address) {
+ return address == NULL ? null : wrap(VkImportAndroidHardwareBufferInfoANDROID.class, address);
+ }
+
+ /**
+ * Returns a new {@link VkImportAndroidHardwareBufferInfoANDROID.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkImportAndroidHardwareBufferInfoANDROID.Buffer malloc(int capacity) {
+ return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkImportAndroidHardwareBufferInfoANDROID.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkImportAndroidHardwareBufferInfoANDROID.Buffer calloc(int capacity) {
+ return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkImportAndroidHardwareBufferInfoANDROID.Buffer} instance allocated with {@link BufferUtils}.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkImportAndroidHardwareBufferInfoANDROID.Buffer create(int capacity) {
+ ByteBuffer container = __create(capacity, SIZEOF);
+ return wrap(Buffer.class, memAddress(container), capacity, container);
+ }
+
+ /**
+ * Create a {@link VkImportAndroidHardwareBufferInfoANDROID.Buffer} instance at the specified memory.
+ *
+ * @param address the memory address
+ * @param capacity the buffer capacity
+ */
+ public static VkImportAndroidHardwareBufferInfoANDROID.Buffer create(long address, int capacity) {
+ return wrap(Buffer.class, address, capacity);
+ }
+
+ /** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkImportAndroidHardwareBufferInfoANDROID.Buffer createSafe(long address, int capacity) {
+ return address == NULL ? null : wrap(Buffer.class, address, capacity);
+ }
+
+ /**
+ * Returns a new {@code VkImportAndroidHardwareBufferInfoANDROID} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkImportAndroidHardwareBufferInfoANDROID malloc(MemoryStack stack) {
+ return wrap(VkImportAndroidHardwareBufferInfoANDROID.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@code VkImportAndroidHardwareBufferInfoANDROID} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkImportAndroidHardwareBufferInfoANDROID calloc(MemoryStack stack) {
+ return wrap(VkImportAndroidHardwareBufferInfoANDROID.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@link VkImportAndroidHardwareBufferInfoANDROID.Buffer} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkImportAndroidHardwareBufferInfoANDROID.Buffer malloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkImportAndroidHardwareBufferInfoANDROID.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkImportAndroidHardwareBufferInfoANDROID.Buffer calloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
+ }
+
+ // -----------------------------------
+
+ /** Unsafe version of {@link #sType}. */
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkImportAndroidHardwareBufferInfoANDROID.STYPE); }
+ /** Unsafe version of {@link #pNext}. */
+ public static long npNext(long struct) { return memGetAddress(struct + VkImportAndroidHardwareBufferInfoANDROID.PNEXT); }
+ /** Unsafe version of {@link #buffer}. */
+ public static long nbuffer(long struct) { return memGetAddress(struct + VkImportAndroidHardwareBufferInfoANDROID.BUFFER); }
+
+ /** Unsafe version of {@link #sType(int) sType}. */
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkImportAndroidHardwareBufferInfoANDROID.STYPE, value); }
+ /** Unsafe version of {@link #pNext(long) pNext}. */
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkImportAndroidHardwareBufferInfoANDROID.PNEXT, value); }
+ /** Unsafe version of {@link #buffer(long) buffer}. */
+ public static void nbuffer(long struct, long value) { memPutAddress(struct + VkImportAndroidHardwareBufferInfoANDROID.BUFFER, check(value)); }
+
+ /**
+ * Validates pointer members that should not be {@code NULL}.
+ *
+ * @param struct the struct to validate
+ */
+ public static void validate(long struct) {
+ check(memGetAddress(struct + VkImportAndroidHardwareBufferInfoANDROID.BUFFER));
+ }
+
+ // -----------------------------------
+
+ /** An array of {@link VkImportAndroidHardwareBufferInfoANDROID} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
+
+ private static final VkImportAndroidHardwareBufferInfoANDROID ELEMENT_FACTORY = VkImportAndroidHardwareBufferInfoANDROID.create(-1L);
+
+ /**
+ * Creates a new {@code VkImportAndroidHardwareBufferInfoANDROID.Buffer} instance backed by the specified container.
+ *
+ * Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
+ * will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
+ * by {@link VkImportAndroidHardwareBufferInfoANDROID#SIZEOF}, and its mark will be undefined.
+ *
+ * The created buffer instance holds a strong reference to the container object.
+ */
+ public Buffer(ByteBuffer container) {
+ super(container, container.remaining() / SIZEOF);
+ }
+
+ public Buffer(long address, int cap) {
+ super(address, null, -1, 0, cap, cap);
+ }
+
+ Buffer(long address, @Nullable ByteBuffer container, int mark, int pos, int lim, int cap) {
+ super(address, container, mark, pos, lim, cap);
+ }
+
+ @Override
+ protected Buffer self() {
+ return this;
+ }
+
+ @Override
+ protected VkImportAndroidHardwareBufferInfoANDROID getElementFactory() {
+ return ELEMENT_FACTORY;
+ }
+
+ /** @return the value of the {@link VkImportAndroidHardwareBufferInfoANDROID#sType} field. */
+ @NativeType("VkStructureType")
+ public int sType() { return VkImportAndroidHardwareBufferInfoANDROID.nsType(address()); }
+ /** @return the value of the {@link VkImportAndroidHardwareBufferInfoANDROID#pNext} field. */
+ @NativeType("void const *")
+ public long pNext() { return VkImportAndroidHardwareBufferInfoANDROID.npNext(address()); }
+ /** @return the value of the {@link VkImportAndroidHardwareBufferInfoANDROID#buffer} field. */
+ @NativeType("AHardwareBuffer *")
+ public long buffer() { return VkImportAndroidHardwareBufferInfoANDROID.nbuffer(address()); }
+
+ /** Sets the specified value to the {@link VkImportAndroidHardwareBufferInfoANDROID#sType} field. */
+ public VkImportAndroidHardwareBufferInfoANDROID.Buffer sType(@NativeType("VkStructureType") int value) { VkImportAndroidHardwareBufferInfoANDROID.nsType(address(), value); return this; }
+ /** Sets the {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID} value to the {@link VkImportAndroidHardwareBufferInfoANDROID#sType} field. */
+ public VkImportAndroidHardwareBufferInfoANDROID.Buffer sType$Default() { return sType(ANDROIDExternalMemoryAndroidHardwareBuffer.VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID); }
+ /** Sets the specified value to the {@link VkImportAndroidHardwareBufferInfoANDROID#pNext} field. */
+ public VkImportAndroidHardwareBufferInfoANDROID.Buffer pNext(@NativeType("void const *") long value) { VkImportAndroidHardwareBufferInfoANDROID.npNext(address(), value); return this; }
+ /** Sets the specified value to the {@link VkImportAndroidHardwareBufferInfoANDROID#buffer} field. */
+ public VkImportAndroidHardwareBufferInfoANDROID.Buffer buffer(@NativeType("AHardwareBuffer *") long value) { VkImportAndroidHardwareBufferInfoANDROID.nbuffer(address(), value); return this; }
+
+ }
+
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkMemoryAllocateInfo.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkMemoryAllocateInfo.java
index 55c5369f9c..fb411be647 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkMemoryAllocateInfo.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkMemoryAllocateInfo.java
@@ -26,6 +26,7 @@
* {@link VkImportMemoryWin32HandleInfoKHR} with a non-zero {@code handleType} value
* {@link VkImportMemoryFdInfoKHR} with a non-zero {@code handleType} value
* {@link VkImportMemoryHostPointerInfoEXT} with a non-zero {@code handleType} value
+ * {@link VkImportAndroidHardwareBufferInfoANDROID} with a non-{@code NULL} {@code buffer} value
*
*
* If the parameters define an import operation and the external handle type is {@link VK11#VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT}, {@link VK11#VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT}, or {@link VK11#VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT}, {@code allocationSize} is ignored. The implementation must query the size of these allocations from the OS.
@@ -44,13 +45,12 @@
* {@link VkPhysicalDeviceMemoryBudgetPropertiesEXT}{@code ::heapUsage}
*
*
- * When performing a memory import operation, it is the responsibility of the application to ensure the external handles and their associated payloads meet all valid usage requirements. However, implementations must perform sufficient validation of external handles and payloads to ensure that the operation results in a valid memory object which will not cause program termination, device loss, queue stalls, or corruption of other resources when used as allowed according to its allocation parameters. If the external handle provided does not meet these requirements, the implementation must fail the memory import operation with the error code {@link VK11#VK_ERROR_INVALID_EXTERNAL_HANDLE ERROR_INVALID_EXTERNAL_HANDLE}.
+ * When performing a memory import operation, it is the responsibility of the application to ensure the external handles and their associated payloads meet all valid usage requirements. However, implementations must perform sufficient validation of external handles and payloads to ensure that the operation results in a valid memory object which will not cause program termination, device loss, queue stalls, or corruption of other resources when used as allowed according to its allocation parameters. If the external handle provided does not meet these requirements, the implementation must fail the memory import operation with the error code {@link VK11#VK_ERROR_INVALID_EXTERNAL_HANDLE ERROR_INVALID_EXTERNAL_HANDLE}. If the parameters define an export operation and the external handle type is {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID}, implementations should not strictly follow {@code memoryTypeIndex}. Instead, they should modify the allocation internally to use the required memory type for the application’s given usage. This is because for an export operation, there is currently no way for the client to know the memory type index before allocating.
*
* Valid Usage
*
*
+ * struct VkMemoryGetAndroidHardwareBufferInfoANDROID {
+ * VkStructureType {@link #sType};
+ * void const * {@link #pNext};
+ * VkDeviceMemory {@link #memory};
+ * }
+ */
+public class VkMemoryGetAndroidHardwareBufferInfoANDROID extends Struct implements NativeResource {
+
+ /** The struct size in bytes. */
+ public static final int SIZEOF;
+
+ /** The struct alignment in bytes. */
+ public static final int ALIGNOF;
+
+ /** The struct member offsets. */
+ public static final int
+ STYPE,
+ PNEXT,
+ MEMORY;
+
+ static {
+ Layout layout = __struct(
+ __member(4),
+ __member(POINTER_SIZE),
+ __member(8)
+ );
+
+ SIZEOF = layout.getSize();
+ ALIGNOF = layout.getAlignment();
+
+ STYPE = layout.offsetof(0);
+ PNEXT = layout.offsetof(1);
+ MEMORY = layout.offsetof(2);
+ }
+
+ /**
+ * Creates a {@code VkMemoryGetAndroidHardwareBufferInfoANDROID} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * visible to the struct instance and vice versa.
+ *
+ * The created instance holds a strong reference to the container object.
+ */
+ public VkMemoryGetAndroidHardwareBufferInfoANDROID(ByteBuffer container) {
+ super(memAddress(container), __checkContainer(container, SIZEOF));
+ }
+
+ @Override
+ public int sizeof() { return SIZEOF; }
+
+ /** the type of this structure. */
+ @NativeType("VkStructureType")
+ public int sType() { return nsType(address()); }
+ /** {@code NULL} or a pointer to a structure extending this structure. */
+ @NativeType("void const *")
+ public long pNext() { return npNext(address()); }
+ /** the memory object from which the Android hardware buffer will be exported. */
+ @NativeType("VkDeviceMemory")
+ public long memory() { return nmemory(address()); }
+
+ /** Sets the specified value to the {@link #sType} field. */
+ public VkMemoryGetAndroidHardwareBufferInfoANDROID sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID} value to the {@link #sType} field. */
+ public VkMemoryGetAndroidHardwareBufferInfoANDROID sType$Default() { return sType(ANDROIDExternalMemoryAndroidHardwareBuffer.VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID); }
+ /** Sets the specified value to the {@link #pNext} field. */
+ public VkMemoryGetAndroidHardwareBufferInfoANDROID pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
+ /** Sets the specified value to the {@link #memory} field. */
+ public VkMemoryGetAndroidHardwareBufferInfoANDROID memory(@NativeType("VkDeviceMemory") long value) { nmemory(address(), value); return this; }
+
+ /** Initializes this struct with the specified values. */
+ public VkMemoryGetAndroidHardwareBufferInfoANDROID set(
+ int sType,
+ long pNext,
+ long memory
+ ) {
+ sType(sType);
+ pNext(pNext);
+ memory(memory);
+
+ return this;
+ }
+
+ /**
+ * Copies the specified struct data to this struct.
+ *
+ * @param src the source struct
+ *
+ * @return this struct
+ */
+ public VkMemoryGetAndroidHardwareBufferInfoANDROID set(VkMemoryGetAndroidHardwareBufferInfoANDROID src) {
+ memCopy(src.address(), address(), SIZEOF);
+ return this;
+ }
+
+ // -----------------------------------
+
+ /** Returns a new {@code VkMemoryGetAndroidHardwareBufferInfoANDROID} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkMemoryGetAndroidHardwareBufferInfoANDROID malloc() {
+ return wrap(VkMemoryGetAndroidHardwareBufferInfoANDROID.class, nmemAllocChecked(SIZEOF));
+ }
+
+ /** Returns a new {@code VkMemoryGetAndroidHardwareBufferInfoANDROID} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkMemoryGetAndroidHardwareBufferInfoANDROID calloc() {
+ return wrap(VkMemoryGetAndroidHardwareBufferInfoANDROID.class, nmemCallocChecked(1, SIZEOF));
+ }
+
+ /** Returns a new {@code VkMemoryGetAndroidHardwareBufferInfoANDROID} instance allocated with {@link BufferUtils}. */
+ public static VkMemoryGetAndroidHardwareBufferInfoANDROID create() {
+ ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
+ return wrap(VkMemoryGetAndroidHardwareBufferInfoANDROID.class, memAddress(container), container);
+ }
+
+ /** Returns a new {@code VkMemoryGetAndroidHardwareBufferInfoANDROID} instance for the specified memory address. */
+ public static VkMemoryGetAndroidHardwareBufferInfoANDROID create(long address) {
+ return wrap(VkMemoryGetAndroidHardwareBufferInfoANDROID.class, address);
+ }
+
+ /** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkMemoryGetAndroidHardwareBufferInfoANDROID createSafe(long address) {
+ return address == NULL ? null : wrap(VkMemoryGetAndroidHardwareBufferInfoANDROID.class, address);
+ }
+
+ /**
+ * Returns a new {@link VkMemoryGetAndroidHardwareBufferInfoANDROID.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkMemoryGetAndroidHardwareBufferInfoANDROID.Buffer malloc(int capacity) {
+ return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkMemoryGetAndroidHardwareBufferInfoANDROID.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkMemoryGetAndroidHardwareBufferInfoANDROID.Buffer calloc(int capacity) {
+ return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkMemoryGetAndroidHardwareBufferInfoANDROID.Buffer} instance allocated with {@link BufferUtils}.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkMemoryGetAndroidHardwareBufferInfoANDROID.Buffer create(int capacity) {
+ ByteBuffer container = __create(capacity, SIZEOF);
+ return wrap(Buffer.class, memAddress(container), capacity, container);
+ }
+
+ /**
+ * Create a {@link VkMemoryGetAndroidHardwareBufferInfoANDROID.Buffer} instance at the specified memory.
+ *
+ * @param address the memory address
+ * @param capacity the buffer capacity
+ */
+ public static VkMemoryGetAndroidHardwareBufferInfoANDROID.Buffer create(long address, int capacity) {
+ return wrap(Buffer.class, address, capacity);
+ }
+
+ /** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkMemoryGetAndroidHardwareBufferInfoANDROID.Buffer createSafe(long address, int capacity) {
+ return address == NULL ? null : wrap(Buffer.class, address, capacity);
+ }
+
+ /**
+ * Returns a new {@code VkMemoryGetAndroidHardwareBufferInfoANDROID} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkMemoryGetAndroidHardwareBufferInfoANDROID malloc(MemoryStack stack) {
+ return wrap(VkMemoryGetAndroidHardwareBufferInfoANDROID.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@code VkMemoryGetAndroidHardwareBufferInfoANDROID} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkMemoryGetAndroidHardwareBufferInfoANDROID calloc(MemoryStack stack) {
+ return wrap(VkMemoryGetAndroidHardwareBufferInfoANDROID.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@link VkMemoryGetAndroidHardwareBufferInfoANDROID.Buffer} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkMemoryGetAndroidHardwareBufferInfoANDROID.Buffer malloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkMemoryGetAndroidHardwareBufferInfoANDROID.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkMemoryGetAndroidHardwareBufferInfoANDROID.Buffer calloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
+ }
+
+ // -----------------------------------
+
+ /** Unsafe version of {@link #sType}. */
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkMemoryGetAndroidHardwareBufferInfoANDROID.STYPE); }
+ /** Unsafe version of {@link #pNext}. */
+ public static long npNext(long struct) { return memGetAddress(struct + VkMemoryGetAndroidHardwareBufferInfoANDROID.PNEXT); }
+ /** Unsafe version of {@link #memory}. */
+ public static long nmemory(long struct) { return UNSAFE.getLong(null, struct + VkMemoryGetAndroidHardwareBufferInfoANDROID.MEMORY); }
+
+ /** Unsafe version of {@link #sType(int) sType}. */
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkMemoryGetAndroidHardwareBufferInfoANDROID.STYPE, value); }
+ /** Unsafe version of {@link #pNext(long) pNext}. */
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkMemoryGetAndroidHardwareBufferInfoANDROID.PNEXT, value); }
+ /** Unsafe version of {@link #memory(long) memory}. */
+ public static void nmemory(long struct, long value) { UNSAFE.putLong(null, struct + VkMemoryGetAndroidHardwareBufferInfoANDROID.MEMORY, value); }
+
+ // -----------------------------------
+
+ /** An array of {@link VkMemoryGetAndroidHardwareBufferInfoANDROID} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
+
+ private static final VkMemoryGetAndroidHardwareBufferInfoANDROID ELEMENT_FACTORY = VkMemoryGetAndroidHardwareBufferInfoANDROID.create(-1L);
+
+ /**
+ * Creates a new {@code VkMemoryGetAndroidHardwareBufferInfoANDROID.Buffer} instance backed by the specified container.
+ *
+ * Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
+ * will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
+ * by {@link VkMemoryGetAndroidHardwareBufferInfoANDROID#SIZEOF}, and its mark will be undefined.
+ *
+ * The created buffer instance holds a strong reference to the container object.
+ */
+ public Buffer(ByteBuffer container) {
+ super(container, container.remaining() / SIZEOF);
+ }
+
+ public Buffer(long address, int cap) {
+ super(address, null, -1, 0, cap, cap);
+ }
+
+ Buffer(long address, @Nullable ByteBuffer container, int mark, int pos, int lim, int cap) {
+ super(address, container, mark, pos, lim, cap);
+ }
+
+ @Override
+ protected Buffer self() {
+ return this;
+ }
+
+ @Override
+ protected VkMemoryGetAndroidHardwareBufferInfoANDROID getElementFactory() {
+ return ELEMENT_FACTORY;
+ }
+
+ /** @return the value of the {@link VkMemoryGetAndroidHardwareBufferInfoANDROID#sType} field. */
+ @NativeType("VkStructureType")
+ public int sType() { return VkMemoryGetAndroidHardwareBufferInfoANDROID.nsType(address()); }
+ /** @return the value of the {@link VkMemoryGetAndroidHardwareBufferInfoANDROID#pNext} field. */
+ @NativeType("void const *")
+ public long pNext() { return VkMemoryGetAndroidHardwareBufferInfoANDROID.npNext(address()); }
+ /** @return the value of the {@link VkMemoryGetAndroidHardwareBufferInfoANDROID#memory} field. */
+ @NativeType("VkDeviceMemory")
+ public long memory() { return VkMemoryGetAndroidHardwareBufferInfoANDROID.nmemory(address()); }
+
+ /** Sets the specified value to the {@link VkMemoryGetAndroidHardwareBufferInfoANDROID#sType} field. */
+ public VkMemoryGetAndroidHardwareBufferInfoANDROID.Buffer sType(@NativeType("VkStructureType") int value) { VkMemoryGetAndroidHardwareBufferInfoANDROID.nsType(address(), value); return this; }
+ /** Sets the {@link ANDROIDExternalMemoryAndroidHardwareBuffer#VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID} value to the {@link VkMemoryGetAndroidHardwareBufferInfoANDROID#sType} field. */
+ public VkMemoryGetAndroidHardwareBufferInfoANDROID.Buffer sType$Default() { return sType(ANDROIDExternalMemoryAndroidHardwareBuffer.VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID); }
+ /** Sets the specified value to the {@link VkMemoryGetAndroidHardwareBufferInfoANDROID#pNext} field. */
+ public VkMemoryGetAndroidHardwareBufferInfoANDROID.Buffer pNext(@NativeType("void const *") long value) { VkMemoryGetAndroidHardwareBufferInfoANDROID.npNext(address(), value); return this; }
+ /** Sets the specified value to the {@link VkMemoryGetAndroidHardwareBufferInfoANDROID#memory} field. */
+ public VkMemoryGetAndroidHardwareBufferInfoANDROID.Buffer memory(@NativeType("VkDeviceMemory") long value) { VkMemoryGetAndroidHardwareBufferInfoANDROID.nmemory(address(), value); return this; }
+
+ }
+
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkOffset2D.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkOffset2D.java
index 199a09cf30..9625b23d80 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkOffset2D.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkOffset2D.java
@@ -20,7 +20,7 @@
*
* See Also
*
- * {@link VkDisplayPlaneCapabilitiesKHR}, {@link VkImageViewSampleWeightCreateInfoQCOM}, {@link VkRect2D}, {@link VkRectLayerKHR}, {@link VkSubpassFragmentDensityMapOffsetEndInfoQCOM}, {@link VkTilePropertiesQCOM}, {@link VkVideoDecodeH264CapabilitiesEXT}, {@link VkVideoPictureResourceInfoKHR}
+ * {@link VkDisplayPlaneCapabilitiesKHR}, {@link VkImageViewSampleWeightCreateInfoQCOM}, {@link VkRect2D}, {@link VkRectLayerKHR}, {@link VkSubpassFragmentDensityMapOffsetEndInfoQCOM}, {@link VkTilePropertiesQCOM}, {@link VkVideoDecodeH264CapabilitiesKHR}, {@link VkVideoPictureResourceInfoKHR}
*
* Layout
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.java
new file mode 100644
index 0000000000..490a6dd95c
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.java
@@ -0,0 +1,332 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package org.lwjgl.vulkan;
+
+import javax.annotation.*;
+
+import java.nio.*;
+
+import org.lwjgl.*;
+import org.lwjgl.system.*;
+
+import static org.lwjgl.system.MemoryUtil.*;
+import static org.lwjgl.system.MemoryStack.*;
+
+/**
+ * Structure describing whether cluster culling shader is enabled.
+ *
+ * Description
+ *
+ * If the {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI} structure is included in the {@code pNext} chain of the {@link VkPhysicalDeviceFeatures2} structure passed to {@link VK11#vkGetPhysicalDeviceFeatures2 GetPhysicalDeviceFeatures2}, it is filled in to indicate whether each corresponding feature is supported. {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI} can also be used in the {@code pNext} chain of {@link VkDeviceCreateInfo} to selectively enable these features.
+ *
+ * Valid Usage (Implicit)
+ *
+ *
+ * - {@code sType} must be {@link HUAWEIClusterCullingShader#VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI}
+ *
+ *
+ * Layout
+ *
+ *
+ * struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
+ * VkStructureType {@link #sType};
+ * void * {@link #pNext};
+ * VkBool32 {@link #clustercullingShader};
+ * VkBool32 {@link #multiviewClusterCullingShader};
+ * }
+ */
+public class VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI extends Struct implements NativeResource {
+
+ /** The struct size in bytes. */
+ public static final int SIZEOF;
+
+ /** The struct alignment in bytes. */
+ public static final int ALIGNOF;
+
+ /** The struct member offsets. */
+ public static final int
+ STYPE,
+ PNEXT,
+ CLUSTERCULLINGSHADER,
+ MULTIVIEWCLUSTERCULLINGSHADER;
+
+ static {
+ Layout layout = __struct(
+ __member(4),
+ __member(POINTER_SIZE),
+ __member(4),
+ __member(4)
+ );
+
+ SIZEOF = layout.getSize();
+ ALIGNOF = layout.getAlignment();
+
+ STYPE = layout.offsetof(0);
+ PNEXT = layout.offsetof(1);
+ CLUSTERCULLINGSHADER = layout.offsetof(2);
+ MULTIVIEWCLUSTERCULLINGSHADER = layout.offsetof(3);
+ }
+
+ /**
+ * Creates a {@code VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * visible to the struct instance and vice versa.
+ *
+ * The created instance holds a strong reference to the container object.
+ */
+ public VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI(ByteBuffer container) {
+ super(memAddress(container), __checkContainer(container, SIZEOF));
+ }
+
+ @Override
+ public int sizeof() { return SIZEOF; }
+
+ /** the type of this structure. */
+ @NativeType("VkStructureType")
+ public int sType() { return nsType(address()); }
+ /** {@code NULL} or a pointer to a structure extending this structure. */
+ @NativeType("void *")
+ public long pNext() { return npNext(address()); }
+ /** specifies whether cluster culling shader is supported. */
+ @NativeType("VkBool32")
+ public boolean clustercullingShader() { return nclustercullingShader(address()) != 0; }
+ /** specifies whether multiview is supported. */
+ @NativeType("VkBool32")
+ public boolean multiviewClusterCullingShader() { return nmultiviewClusterCullingShader(address()) != 0; }
+
+ /** Sets the specified value to the {@link #sType} field. */
+ public VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link HUAWEIClusterCullingShader#VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI} value to the {@link #sType} field. */
+ public VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI sType$Default() { return sType(HUAWEIClusterCullingShader.VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI); }
+ /** Sets the specified value to the {@link #pNext} field. */
+ public VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI pNext(@NativeType("void *") long value) { npNext(address(), value); return this; }
+ /** Sets the specified value to the {@link #clustercullingShader} field. */
+ public VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI clustercullingShader(@NativeType("VkBool32") boolean value) { nclustercullingShader(address(), value ? 1 : 0); return this; }
+ /** Sets the specified value to the {@link #multiviewClusterCullingShader} field. */
+ public VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI multiviewClusterCullingShader(@NativeType("VkBool32") boolean value) { nmultiviewClusterCullingShader(address(), value ? 1 : 0); return this; }
+
+ /** Initializes this struct with the specified values. */
+ public VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI set(
+ int sType,
+ long pNext,
+ boolean clustercullingShader,
+ boolean multiviewClusterCullingShader
+ ) {
+ sType(sType);
+ pNext(pNext);
+ clustercullingShader(clustercullingShader);
+ multiviewClusterCullingShader(multiviewClusterCullingShader);
+
+ return this;
+ }
+
+ /**
+ * Copies the specified struct data to this struct.
+ *
+ * @param src the source struct
+ *
+ * @return this struct
+ */
+ public VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI set(VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI src) {
+ memCopy(src.address(), address(), SIZEOF);
+ return this;
+ }
+
+ // -----------------------------------
+
+ /** Returns a new {@code VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI malloc() {
+ return wrap(VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.class, nmemAllocChecked(SIZEOF));
+ }
+
+ /** Returns a new {@code VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI calloc() {
+ return wrap(VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.class, nmemCallocChecked(1, SIZEOF));
+ }
+
+ /** Returns a new {@code VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI} instance allocated with {@link BufferUtils}. */
+ public static VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI create() {
+ ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
+ return wrap(VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.class, memAddress(container), container);
+ }
+
+ /** Returns a new {@code VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI} instance for the specified memory address. */
+ public static VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI create(long address) {
+ return wrap(VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.class, address);
+ }
+
+ /** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI createSafe(long address) {
+ return address == NULL ? null : wrap(VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.class, address);
+ }
+
+ /**
+ * Returns a new {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.Buffer malloc(int capacity) {
+ return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.Buffer calloc(int capacity) {
+ return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.Buffer} instance allocated with {@link BufferUtils}.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.Buffer create(int capacity) {
+ ByteBuffer container = __create(capacity, SIZEOF);
+ return wrap(Buffer.class, memAddress(container), capacity, container);
+ }
+
+ /**
+ * Create a {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.Buffer} instance at the specified memory.
+ *
+ * @param address the memory address
+ * @param capacity the buffer capacity
+ */
+ public static VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.Buffer create(long address, int capacity) {
+ return wrap(Buffer.class, address, capacity);
+ }
+
+ /** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.Buffer createSafe(long address, int capacity) {
+ return address == NULL ? null : wrap(Buffer.class, address, capacity);
+ }
+
+ /**
+ * Returns a new {@code VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI malloc(MemoryStack stack) {
+ return wrap(VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@code VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI calloc(MemoryStack stack) {
+ return wrap(VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.Buffer} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.Buffer malloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.Buffer calloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
+ }
+
+ // -----------------------------------
+
+ /** Unsafe version of {@link #sType}. */
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.STYPE); }
+ /** Unsafe version of {@link #pNext}. */
+ public static long npNext(long struct) { return memGetAddress(struct + VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.PNEXT); }
+ /** Unsafe version of {@link #clustercullingShader}. */
+ public static int nclustercullingShader(long struct) { return UNSAFE.getInt(null, struct + VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.CLUSTERCULLINGSHADER); }
+ /** Unsafe version of {@link #multiviewClusterCullingShader}. */
+ public static int nmultiviewClusterCullingShader(long struct) { return UNSAFE.getInt(null, struct + VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.MULTIVIEWCLUSTERCULLINGSHADER); }
+
+ /** Unsafe version of {@link #sType(int) sType}. */
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.STYPE, value); }
+ /** Unsafe version of {@link #pNext(long) pNext}. */
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.PNEXT, value); }
+ /** Unsafe version of {@link #clustercullingShader(boolean) clustercullingShader}. */
+ public static void nclustercullingShader(long struct, int value) { UNSAFE.putInt(null, struct + VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.CLUSTERCULLINGSHADER, value); }
+ /** Unsafe version of {@link #multiviewClusterCullingShader(boolean) multiviewClusterCullingShader}. */
+ public static void nmultiviewClusterCullingShader(long struct, int value) { UNSAFE.putInt(null, struct + VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.MULTIVIEWCLUSTERCULLINGSHADER, value); }
+
+ // -----------------------------------
+
+ /** An array of {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
+
+ private static final VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI ELEMENT_FACTORY = VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.create(-1L);
+
+ /**
+ * Creates a new {@code VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.Buffer} instance backed by the specified container.
+ *
+ * Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
+ * will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
+ * by {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI#SIZEOF}, and its mark will be undefined.
+ *
+ * The created buffer instance holds a strong reference to the container object.
+ */
+ public Buffer(ByteBuffer container) {
+ super(container, container.remaining() / SIZEOF);
+ }
+
+ public Buffer(long address, int cap) {
+ super(address, null, -1, 0, cap, cap);
+ }
+
+ Buffer(long address, @Nullable ByteBuffer container, int mark, int pos, int lim, int cap) {
+ super(address, container, mark, pos, lim, cap);
+ }
+
+ @Override
+ protected Buffer self() {
+ return this;
+ }
+
+ @Override
+ protected VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI getElementFactory() {
+ return ELEMENT_FACTORY;
+ }
+
+ /** @return the value of the {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI#sType} field. */
+ @NativeType("VkStructureType")
+ public int sType() { return VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.nsType(address()); }
+ /** @return the value of the {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI#pNext} field. */
+ @NativeType("void *")
+ public long pNext() { return VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.npNext(address()); }
+ /** @return the value of the {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI#clustercullingShader} field. */
+ @NativeType("VkBool32")
+ public boolean clustercullingShader() { return VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.nclustercullingShader(address()) != 0; }
+ /** @return the value of the {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI#multiviewClusterCullingShader} field. */
+ @NativeType("VkBool32")
+ public boolean multiviewClusterCullingShader() { return VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.nmultiviewClusterCullingShader(address()) != 0; }
+
+ /** Sets the specified value to the {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI#sType} field. */
+ public VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.Buffer sType(@NativeType("VkStructureType") int value) { VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.nsType(address(), value); return this; }
+ /** Sets the {@link HUAWEIClusterCullingShader#VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI} value to the {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI#sType} field. */
+ public VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.Buffer sType$Default() { return sType(HUAWEIClusterCullingShader.VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI); }
+ /** Sets the specified value to the {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI#pNext} field. */
+ public VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.Buffer pNext(@NativeType("void *") long value) { VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.npNext(address(), value); return this; }
+ /** Sets the specified value to the {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI#clustercullingShader} field. */
+ public VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.Buffer clustercullingShader(@NativeType("VkBool32") boolean value) { VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.nclustercullingShader(address(), value ? 1 : 0); return this; }
+ /** Sets the specified value to the {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI#multiviewClusterCullingShader} field. */
+ public VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.Buffer multiviewClusterCullingShader(@NativeType("VkBool32") boolean value) { VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.nmultiviewClusterCullingShader(address(), value ? 1 : 0); return this; }
+
+ }
+
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.java
new file mode 100644
index 0000000000..af308ee809
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.java
@@ -0,0 +1,349 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package org.lwjgl.vulkan;
+
+import javax.annotation.*;
+
+import java.nio.*;
+
+import org.lwjgl.*;
+import org.lwjgl.system.*;
+
+import static org.lwjgl.system.Checks.*;
+import static org.lwjgl.system.MemoryUtil.*;
+import static org.lwjgl.system.MemoryStack.*;
+
+/**
+ * Structure describing cluster culling shader properties supported by an implementation.
+ *
+ * Description
+ *
+ * If the {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI} structure is included in the {@code pNext} chain of the {@link VkPhysicalDeviceProperties2} structure passed to {@link VK11#vkGetPhysicalDeviceProperties2 GetPhysicalDeviceProperties2}, it is filled in with each corresponding implementation-dependent property.
+ *
+ * Valid Usage (Implicit)
+ *
+ *
+ * - {@code sType} must be {@link HUAWEIClusterCullingShader#VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI}
+ *
+ *
+ * Layout
+ *
+ *
+ * struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
+ * VkStructureType {@link #sType};
+ * void * {@link #pNext};
+ * uint32_t {@link #maxWorkGroupCount}[3];
+ * uint32_t {@link #maxWorkGroupSize}[3];
+ * uint32_t {@link #maxOutputClusterCount};
+ * }
+ */
+public class VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI extends Struct implements NativeResource {
+
+ /** The struct size in bytes. */
+ public static final int SIZEOF;
+
+ /** The struct alignment in bytes. */
+ public static final int ALIGNOF;
+
+ /** The struct member offsets. */
+ public static final int
+ STYPE,
+ PNEXT,
+ MAXWORKGROUPCOUNT,
+ MAXWORKGROUPSIZE,
+ MAXOUTPUTCLUSTERCOUNT;
+
+ static {
+ Layout layout = __struct(
+ __member(4),
+ __member(POINTER_SIZE),
+ __array(4, 3),
+ __array(4, 3),
+ __member(4)
+ );
+
+ SIZEOF = layout.getSize();
+ ALIGNOF = layout.getAlignment();
+
+ STYPE = layout.offsetof(0);
+ PNEXT = layout.offsetof(1);
+ MAXWORKGROUPCOUNT = layout.offsetof(2);
+ MAXWORKGROUPSIZE = layout.offsetof(3);
+ MAXOUTPUTCLUSTERCOUNT = layout.offsetof(4);
+ }
+
+ /**
+ * Creates a {@code VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * visible to the struct instance and vice versa.
+ *
+ * The created instance holds a strong reference to the container object.
+ */
+ public VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI(ByteBuffer container) {
+ super(memAddress(container), __checkContainer(container, SIZEOF));
+ }
+
+ @Override
+ public int sizeof() { return SIZEOF; }
+
+ /** the type of this structure. */
+ @NativeType("VkStructureType")
+ public int sType() { return nsType(address()); }
+ /** {@code NULL} or a pointer to a structure extending this structure. */
+ @NativeType("void *")
+ public long pNext() { return npNext(address()); }
+ /** the maximum number of local workgroups that can be launched by a single command. These three value represent the maximum local workgroup count in the X, Y and Z dimensions, respectively. In the current implementation, the values of Y and Z are both implicitly set as one. groupCountX of DrawCluster command must be less than or equal to maxWorkGroupCount[0]. */
+ @NativeType("uint32_t[3]")
+ public IntBuffer maxWorkGroupCount() { return nmaxWorkGroupCount(address()); }
+ /** the maximum number of local workgroups that can be launched by a single command. These three value represent the maximum local workgroup count in the X, Y and Z dimensions, respectively. In the current implementation, the values of Y and Z are both implicitly set as one. groupCountX of DrawCluster command must be less than or equal to maxWorkGroupCount[0]. */
+ @NativeType("uint32_t")
+ public int maxWorkGroupCount(int index) { return nmaxWorkGroupCount(address(), index); }
+ /** the maximum size of a local workgroup. These three value represent the maximum local workgroup size in the X, Y and Z dimensions, respectively. The x, y and z sizes, as specified by the {@code LocalSize} or {@code LocalSizeId} execution mode or by the object decorated by the WorkgroupSize decoration in shader modules, must be less than or equal to the corresponding limit. In the current implementation, the maximum workgroup size of the X dimension is 32, the others are 1. */
+ @NativeType("uint32_t[3]")
+ public IntBuffer maxWorkGroupSize() { return nmaxWorkGroupSize(address()); }
+ /** the maximum size of a local workgroup. These three value represent the maximum local workgroup size in the X, Y and Z dimensions, respectively. The x, y and z sizes, as specified by the {@code LocalSize} or {@code LocalSizeId} execution mode or by the object decorated by the WorkgroupSize decoration in shader modules, must be less than or equal to the corresponding limit. In the current implementation, the maximum workgroup size of the X dimension is 32, the others are 1. */
+ @NativeType("uint32_t")
+ public int maxWorkGroupSize(int index) { return nmaxWorkGroupSize(address(), index); }
+ /** the maximum number of output cluster a single cluster culling shader workgroup can emit. */
+ @NativeType("uint32_t")
+ public int maxOutputClusterCount() { return nmaxOutputClusterCount(address()); }
+
+ /** Sets the specified value to the {@link #sType} field. */
+ public VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link HUAWEIClusterCullingShader#VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI} value to the {@link #sType} field. */
+ public VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI sType$Default() { return sType(HUAWEIClusterCullingShader.VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI); }
+ /** Sets the specified value to the {@link #pNext} field. */
+ public VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI pNext(@NativeType("void *") long value) { npNext(address(), value); return this; }
+
+ /** Initializes this struct with the specified values. */
+ public VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI set(
+ int sType,
+ long pNext
+ ) {
+ sType(sType);
+ pNext(pNext);
+
+ return this;
+ }
+
+ /**
+ * Copies the specified struct data to this struct.
+ *
+ * @param src the source struct
+ *
+ * @return this struct
+ */
+ public VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI set(VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI src) {
+ memCopy(src.address(), address(), SIZEOF);
+ return this;
+ }
+
+ // -----------------------------------
+
+ /** Returns a new {@code VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI malloc() {
+ return wrap(VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.class, nmemAllocChecked(SIZEOF));
+ }
+
+ /** Returns a new {@code VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI calloc() {
+ return wrap(VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.class, nmemCallocChecked(1, SIZEOF));
+ }
+
+ /** Returns a new {@code VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI} instance allocated with {@link BufferUtils}. */
+ public static VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI create() {
+ ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
+ return wrap(VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.class, memAddress(container), container);
+ }
+
+ /** Returns a new {@code VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI} instance for the specified memory address. */
+ public static VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI create(long address) {
+ return wrap(VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.class, address);
+ }
+
+ /** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI createSafe(long address) {
+ return address == NULL ? null : wrap(VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.class, address);
+ }
+
+ /**
+ * Returns a new {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.Buffer malloc(int capacity) {
+ return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.Buffer calloc(int capacity) {
+ return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.Buffer} instance allocated with {@link BufferUtils}.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.Buffer create(int capacity) {
+ ByteBuffer container = __create(capacity, SIZEOF);
+ return wrap(Buffer.class, memAddress(container), capacity, container);
+ }
+
+ /**
+ * Create a {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.Buffer} instance at the specified memory.
+ *
+ * @param address the memory address
+ * @param capacity the buffer capacity
+ */
+ public static VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.Buffer create(long address, int capacity) {
+ return wrap(Buffer.class, address, capacity);
+ }
+
+ /** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.Buffer createSafe(long address, int capacity) {
+ return address == NULL ? null : wrap(Buffer.class, address, capacity);
+ }
+
+ /**
+ * Returns a new {@code VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI malloc(MemoryStack stack) {
+ return wrap(VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@code VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI calloc(MemoryStack stack) {
+ return wrap(VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.Buffer} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.Buffer malloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.Buffer calloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
+ }
+
+ // -----------------------------------
+
+ /** Unsafe version of {@link #sType}. */
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.STYPE); }
+ /** Unsafe version of {@link #pNext}. */
+ public static long npNext(long struct) { return memGetAddress(struct + VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.PNEXT); }
+ /** Unsafe version of {@link #maxWorkGroupCount}. */
+ public static IntBuffer nmaxWorkGroupCount(long struct) { return memIntBuffer(struct + VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.MAXWORKGROUPCOUNT, 3); }
+ /** Unsafe version of {@link #maxWorkGroupCount(int) maxWorkGroupCount}. */
+ public static int nmaxWorkGroupCount(long struct, int index) {
+ return UNSAFE.getInt(null, struct + VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.MAXWORKGROUPCOUNT + check(index, 3) * 4);
+ }
+ /** Unsafe version of {@link #maxWorkGroupSize}. */
+ public static IntBuffer nmaxWorkGroupSize(long struct) { return memIntBuffer(struct + VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.MAXWORKGROUPSIZE, 3); }
+ /** Unsafe version of {@link #maxWorkGroupSize(int) maxWorkGroupSize}. */
+ public static int nmaxWorkGroupSize(long struct, int index) {
+ return UNSAFE.getInt(null, struct + VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.MAXWORKGROUPSIZE + check(index, 3) * 4);
+ }
+ /** Unsafe version of {@link #maxOutputClusterCount}. */
+ public static int nmaxOutputClusterCount(long struct) { return UNSAFE.getInt(null, struct + VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.MAXOUTPUTCLUSTERCOUNT); }
+
+ /** Unsafe version of {@link #sType(int) sType}. */
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.STYPE, value); }
+ /** Unsafe version of {@link #pNext(long) pNext}. */
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.PNEXT, value); }
+
+ // -----------------------------------
+
+ /** An array of {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
+
+ private static final VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI ELEMENT_FACTORY = VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.create(-1L);
+
+ /**
+ * Creates a new {@code VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.Buffer} instance backed by the specified container.
+ *
+ * Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
+ * will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
+ * by {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI#SIZEOF}, and its mark will be undefined.
+ *
+ * The created buffer instance holds a strong reference to the container object.
+ */
+ public Buffer(ByteBuffer container) {
+ super(container, container.remaining() / SIZEOF);
+ }
+
+ public Buffer(long address, int cap) {
+ super(address, null, -1, 0, cap, cap);
+ }
+
+ Buffer(long address, @Nullable ByteBuffer container, int mark, int pos, int lim, int cap) {
+ super(address, container, mark, pos, lim, cap);
+ }
+
+ @Override
+ protected Buffer self() {
+ return this;
+ }
+
+ @Override
+ protected VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI getElementFactory() {
+ return ELEMENT_FACTORY;
+ }
+
+ /** @return the value of the {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI#sType} field. */
+ @NativeType("VkStructureType")
+ public int sType() { return VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.nsType(address()); }
+ /** @return the value of the {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI#pNext} field. */
+ @NativeType("void *")
+ public long pNext() { return VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.npNext(address()); }
+ /** @return a {@link IntBuffer} view of the {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI#maxWorkGroupCount} field. */
+ @NativeType("uint32_t[3]")
+ public IntBuffer maxWorkGroupCount() { return VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.nmaxWorkGroupCount(address()); }
+ /** @return the value at the specified index of the {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI#maxWorkGroupCount} field. */
+ @NativeType("uint32_t")
+ public int maxWorkGroupCount(int index) { return VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.nmaxWorkGroupCount(address(), index); }
+ /** @return a {@link IntBuffer} view of the {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI#maxWorkGroupSize} field. */
+ @NativeType("uint32_t[3]")
+ public IntBuffer maxWorkGroupSize() { return VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.nmaxWorkGroupSize(address()); }
+ /** @return the value at the specified index of the {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI#maxWorkGroupSize} field. */
+ @NativeType("uint32_t")
+ public int maxWorkGroupSize(int index) { return VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.nmaxWorkGroupSize(address(), index); }
+ /** @return the value of the {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI#maxOutputClusterCount} field. */
+ @NativeType("uint32_t")
+ public int maxOutputClusterCount() { return VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.nmaxOutputClusterCount(address()); }
+
+ /** Sets the specified value to the {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI#sType} field. */
+ public VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.Buffer sType(@NativeType("VkStructureType") int value) { VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.nsType(address(), value); return this; }
+ /** Sets the {@link HUAWEIClusterCullingShader#VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI} value to the {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI#sType} field. */
+ public VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.Buffer sType$Default() { return sType(HUAWEIClusterCullingShader.VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI); }
+ /** Sets the specified value to the {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI#pNext} field. */
+ public VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.Buffer pNext(@NativeType("void *") long value) { VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.npNext(address(), value); return this; }
+
+ }
+
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDeviceFeatures.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDeviceFeatures.java
index 802f6a3e3d..f6770a0227 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDeviceFeatures.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDeviceFeatures.java
@@ -574,10 +574,10 @@ public VkPhysicalDeviceFeatures(ByteBuffer container) {
/** specifies whether multisampled storage images are supported. If this feature is not enabled, images that are created with a {@code usage} that includes {@link VK10#VK_IMAGE_USAGE_STORAGE_BIT IMAGE_USAGE_STORAGE_BIT} must be created with {@code samples} equal to {@link VK10#VK_SAMPLE_COUNT_1_BIT SAMPLE_COUNT_1_BIT}. This also specifies whether shader modules can declare the {@code StorageImageMultisample} and {@code ImageMSArray} capabilities. */
@NativeType("VkBool32")
public boolean shaderStorageImageMultisample() { return nshaderStorageImageMultisample(address()) != 0; }
- /** specifies whether storage images require a format qualifier to be specified when reading. {@code shaderStorageImageReadWithoutFormat} applies only to formats listed in the storage without format list. */
+ /** specifies whether storage images and storage texel buffers require a format qualifier to be specified when reading. {@code shaderStorageImageReadWithoutFormat} applies only to formats listed in the storage without format list. */
@NativeType("VkBool32")
public boolean shaderStorageImageReadWithoutFormat() { return nshaderStorageImageReadWithoutFormat(address()) != 0; }
- /** specifies whether storage images require a format qualifier to be specified when writing. {@code shaderStorageImageWriteWithoutFormat} applies only to formats listed in the storage without format list. */
+ /** specifies whether storage images and storage texel buffers require a format qualifier to be specified when writing. {@code shaderStorageImageWriteWithoutFormat} applies only to formats listed in the storage without format list. */
@NativeType("VkBool32")
public boolean shaderStorageImageWriteWithoutFormat() { return nshaderStorageImageWriteWithoutFormat(address()) != 0; }
/** specifies whether arrays of uniform buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of {@link VK10#VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER DESCRIPTOR_TYPE_UNIFORM_BUFFER} or {@link VK10#VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC} must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare the {@code UniformBufferArrayDynamicIndexing} capability. */
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDeviceFeatures2.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDeviceFeatures2.java
index 14b7f25b84..dfbc5ddca6 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDeviceFeatures2.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDeviceFeatures2.java
@@ -130,6 +130,8 @@ public VkPhysicalDeviceFeatures2(ByteBuffer container) {
public VkPhysicalDeviceFeatures2 pNext(VkPhysicalDeviceBufferDeviceAddressFeaturesEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkPhysicalDeviceBufferDeviceAddressFeaturesKHR} value to the {@code pNext} chain. */
public VkPhysicalDeviceFeatures2 pNext(VkPhysicalDeviceBufferDeviceAddressFeaturesKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI} value to the {@code pNext} chain. */
+ public VkPhysicalDeviceFeatures2 pNext(VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkPhysicalDeviceCoherentMemoryFeaturesAMD} value to the {@code pNext} chain. */
public VkPhysicalDeviceFeatures2 pNext(VkPhysicalDeviceCoherentMemoryFeaturesAMD value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkPhysicalDeviceColorWriteEnableFeaturesEXT} value to the {@code pNext} chain. */
@@ -290,6 +292,8 @@ public VkPhysicalDeviceFeatures2(ByteBuffer container) {
public VkPhysicalDeviceFeatures2 pNext(VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR} value to the {@code pNext} chain. */
public VkPhysicalDeviceFeatures2 pNext(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT} value to the {@code pNext} chain. */
+ public VkPhysicalDeviceFeatures2 pNext(VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkPhysicalDevicePipelinePropertiesFeaturesEXT} value to the {@code pNext} chain. */
public VkPhysicalDeviceFeatures2 pNext(VkPhysicalDevicePipelinePropertiesFeaturesEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkPhysicalDevicePipelineProtectedAccessFeaturesEXT} value to the {@code pNext} chain. */
@@ -725,6 +729,8 @@ protected VkPhysicalDeviceFeatures2 getElementFactory() {
public VkPhysicalDeviceFeatures2.Buffer pNext(VkPhysicalDeviceBufferDeviceAddressFeaturesEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkPhysicalDeviceBufferDeviceAddressFeaturesKHR} value to the {@code pNext} chain. */
public VkPhysicalDeviceFeatures2.Buffer pNext(VkPhysicalDeviceBufferDeviceAddressFeaturesKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI} value to the {@code pNext} chain. */
+ public VkPhysicalDeviceFeatures2.Buffer pNext(VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkPhysicalDeviceCoherentMemoryFeaturesAMD} value to the {@code pNext} chain. */
public VkPhysicalDeviceFeatures2.Buffer pNext(VkPhysicalDeviceCoherentMemoryFeaturesAMD value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkPhysicalDeviceColorWriteEnableFeaturesEXT} value to the {@code pNext} chain. */
@@ -885,6 +891,8 @@ protected VkPhysicalDeviceFeatures2 getElementFactory() {
public VkPhysicalDeviceFeatures2.Buffer pNext(VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR} value to the {@code pNext} chain. */
public VkPhysicalDeviceFeatures2.Buffer pNext(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT} value to the {@code pNext} chain. */
+ public VkPhysicalDeviceFeatures2.Buffer pNext(VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkPhysicalDevicePipelinePropertiesFeaturesEXT} value to the {@code pNext} chain. */
public VkPhysicalDeviceFeatures2.Buffer pNext(VkPhysicalDevicePipelinePropertiesFeaturesEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkPhysicalDevicePipelineProtectedAccessFeaturesEXT} value to the {@code pNext} chain. */
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.java
new file mode 100644
index 0000000000..2863d650d9
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.java
@@ -0,0 +1,312 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package org.lwjgl.vulkan;
+
+import javax.annotation.*;
+
+import java.nio.*;
+
+import org.lwjgl.*;
+import org.lwjgl.system.*;
+
+import static org.lwjgl.system.MemoryUtil.*;
+import static org.lwjgl.system.MemoryStack.*;
+
+/**
+ * Structure describing whether querying shader group handles from a pipeline library is supported by the implementation.
+ *
+ * Description
+ *
+ * If the {@link VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT} structure is included in the {@code pNext} chain of the {@link VkPhysicalDeviceFeatures2} structure passed to {@link VK11#vkGetPhysicalDeviceFeatures2 GetPhysicalDeviceFeatures2}, it is filled in to indicate whether each corresponding feature is supported. {@link VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT} can also be used in the {@code pNext} chain of {@link VkDeviceCreateInfo} to selectively enable these features.
+ *
+ * Valid Usage (Implicit)
+ *
+ *
+ * - {@code sType} must be {@link EXTPipelineLibraryGroupHandles#VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT}
+ *
+ *
+ * Layout
+ *
+ *
+ * struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
+ * VkStructureType sType;
+ * void * pNext;
+ * VkBool32 {@link #pipelineLibraryGroupHandles};
+ * }
+ */
+public class VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT extends Struct implements NativeResource {
+
+ /** The struct size in bytes. */
+ public static final int SIZEOF;
+
+ /** The struct alignment in bytes. */
+ public static final int ALIGNOF;
+
+ /** The struct member offsets. */
+ public static final int
+ STYPE,
+ PNEXT,
+ PIPELINELIBRARYGROUPHANDLES;
+
+ static {
+ Layout layout = __struct(
+ __member(4),
+ __member(POINTER_SIZE),
+ __member(4)
+ );
+
+ SIZEOF = layout.getSize();
+ ALIGNOF = layout.getAlignment();
+
+ STYPE = layout.offsetof(0);
+ PNEXT = layout.offsetof(1);
+ PIPELINELIBRARYGROUPHANDLES = layout.offsetof(2);
+ }
+
+ /**
+ * Creates a {@code VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * visible to the struct instance and vice versa.
+ *
+ * The created instance holds a strong reference to the container object.
+ */
+ public VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT(ByteBuffer container) {
+ super(memAddress(container), __checkContainer(container, SIZEOF));
+ }
+
+ @Override
+ public int sizeof() { return SIZEOF; }
+
+ /** @return the value of the {@code sType} field. */
+ @NativeType("VkStructureType")
+ public int sType() { return nsType(address()); }
+ /** @return the value of the {@code pNext} field. */
+ @NativeType("void *")
+ public long pNext() { return npNext(address()); }
+ /** indicates whether the implementation supports querying group handles directly from a ray tracing pipeline library, and guarantees bitwise identical group handles for such libraries when linked into other pipelines. */
+ @NativeType("VkBool32")
+ public boolean pipelineLibraryGroupHandles() { return npipelineLibraryGroupHandles(address()) != 0; }
+
+ /** Sets the specified value to the {@code sType} field. */
+ public VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link EXTPipelineLibraryGroupHandles#VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT} value to the {@code sType} field. */
+ public VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT sType$Default() { return sType(EXTPipelineLibraryGroupHandles.VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT); }
+ /** Sets the specified value to the {@code pNext} field. */
+ public VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT pNext(@NativeType("void *") long value) { npNext(address(), value); return this; }
+ /** Sets the specified value to the {@link #pipelineLibraryGroupHandles} field. */
+ public VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT pipelineLibraryGroupHandles(@NativeType("VkBool32") boolean value) { npipelineLibraryGroupHandles(address(), value ? 1 : 0); return this; }
+
+ /** Initializes this struct with the specified values. */
+ public VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT set(
+ int sType,
+ long pNext,
+ boolean pipelineLibraryGroupHandles
+ ) {
+ sType(sType);
+ pNext(pNext);
+ pipelineLibraryGroupHandles(pipelineLibraryGroupHandles);
+
+ return this;
+ }
+
+ /**
+ * Copies the specified struct data to this struct.
+ *
+ * @param src the source struct
+ *
+ * @return this struct
+ */
+ public VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT set(VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT src) {
+ memCopy(src.address(), address(), SIZEOF);
+ return this;
+ }
+
+ // -----------------------------------
+
+ /** Returns a new {@code VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT malloc() {
+ return wrap(VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.class, nmemAllocChecked(SIZEOF));
+ }
+
+ /** Returns a new {@code VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT calloc() {
+ return wrap(VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.class, nmemCallocChecked(1, SIZEOF));
+ }
+
+ /** Returns a new {@code VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT} instance allocated with {@link BufferUtils}. */
+ public static VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT create() {
+ ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
+ return wrap(VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.class, memAddress(container), container);
+ }
+
+ /** Returns a new {@code VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT} instance for the specified memory address. */
+ public static VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT create(long address) {
+ return wrap(VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.class, address);
+ }
+
+ /** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT createSafe(long address) {
+ return address == NULL ? null : wrap(VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.class, address);
+ }
+
+ /**
+ * Returns a new {@link VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.Buffer malloc(int capacity) {
+ return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.Buffer calloc(int capacity) {
+ return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.Buffer} instance allocated with {@link BufferUtils}.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.Buffer create(int capacity) {
+ ByteBuffer container = __create(capacity, SIZEOF);
+ return wrap(Buffer.class, memAddress(container), capacity, container);
+ }
+
+ /**
+ * Create a {@link VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.Buffer} instance at the specified memory.
+ *
+ * @param address the memory address
+ * @param capacity the buffer capacity
+ */
+ public static VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.Buffer create(long address, int capacity) {
+ return wrap(Buffer.class, address, capacity);
+ }
+
+ /** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.Buffer createSafe(long address, int capacity) {
+ return address == NULL ? null : wrap(Buffer.class, address, capacity);
+ }
+
+ /**
+ * Returns a new {@code VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT malloc(MemoryStack stack) {
+ return wrap(VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@code VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT calloc(MemoryStack stack) {
+ return wrap(VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@link VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.Buffer} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.Buffer malloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.Buffer calloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
+ }
+
+ // -----------------------------------
+
+ /** Unsafe version of {@link #sType}. */
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.STYPE); }
+ /** Unsafe version of {@link #pNext}. */
+ public static long npNext(long struct) { return memGetAddress(struct + VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.PNEXT); }
+ /** Unsafe version of {@link #pipelineLibraryGroupHandles}. */
+ public static int npipelineLibraryGroupHandles(long struct) { return UNSAFE.getInt(null, struct + VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.PIPELINELIBRARYGROUPHANDLES); }
+
+ /** Unsafe version of {@link #sType(int) sType}. */
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.STYPE, value); }
+ /** Unsafe version of {@link #pNext(long) pNext}. */
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.PNEXT, value); }
+ /** Unsafe version of {@link #pipelineLibraryGroupHandles(boolean) pipelineLibraryGroupHandles}. */
+ public static void npipelineLibraryGroupHandles(long struct, int value) { UNSAFE.putInt(null, struct + VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.PIPELINELIBRARYGROUPHANDLES, value); }
+
+ // -----------------------------------
+
+ /** An array of {@link VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
+
+ private static final VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT ELEMENT_FACTORY = VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.create(-1L);
+
+ /**
+ * Creates a new {@code VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.Buffer} instance backed by the specified container.
+ *
+ * Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
+ * will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
+ * by {@link VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT#SIZEOF}, and its mark will be undefined.
+ *
+ * The created buffer instance holds a strong reference to the container object.
+ */
+ public Buffer(ByteBuffer container) {
+ super(container, container.remaining() / SIZEOF);
+ }
+
+ public Buffer(long address, int cap) {
+ super(address, null, -1, 0, cap, cap);
+ }
+
+ Buffer(long address, @Nullable ByteBuffer container, int mark, int pos, int lim, int cap) {
+ super(address, container, mark, pos, lim, cap);
+ }
+
+ @Override
+ protected Buffer self() {
+ return this;
+ }
+
+ @Override
+ protected VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT getElementFactory() {
+ return ELEMENT_FACTORY;
+ }
+
+ /** @return the value of the {@code sType} field. */
+ @NativeType("VkStructureType")
+ public int sType() { return VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.nsType(address()); }
+ /** @return the value of the {@code pNext} field. */
+ @NativeType("void *")
+ public long pNext() { return VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.npNext(address()); }
+ /** @return the value of the {@link VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT#pipelineLibraryGroupHandles} field. */
+ @NativeType("VkBool32")
+ public boolean pipelineLibraryGroupHandles() { return VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.npipelineLibraryGroupHandles(address()) != 0; }
+
+ /** Sets the specified value to the {@code sType} field. */
+ public VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.Buffer sType(@NativeType("VkStructureType") int value) { VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.nsType(address(), value); return this; }
+ /** Sets the {@link EXTPipelineLibraryGroupHandles#VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT} value to the {@code sType} field. */
+ public VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.Buffer sType$Default() { return sType(EXTPipelineLibraryGroupHandles.VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT); }
+ /** Sets the specified value to the {@code pNext} field. */
+ public VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.Buffer pNext(@NativeType("void *") long value) { VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.npNext(address(), value); return this; }
+ /** Sets the specified value to the {@link VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT#pipelineLibraryGroupHandles} field. */
+ public VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.Buffer pipelineLibraryGroupHandles(@NativeType("VkBool32") boolean value) { VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.npipelineLibraryGroupHandles(address(), value ? 1 : 0); return this; }
+
+ }
+
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDeviceProperties2.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDeviceProperties2.java
index a92da14d17..c12f28b659 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDeviceProperties2.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDeviceProperties2.java
@@ -26,7 +26,7 @@
*
*
* - {@code sType} must be {@link VK11#VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2}
- * - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of {@link VkPhysicalDeviceAccelerationStructurePropertiesKHR}, {@link VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT}, {@link VkPhysicalDeviceConservativeRasterizationPropertiesEXT}, {@link VkPhysicalDeviceCooperativeMatrixPropertiesNV}, {@link VkPhysicalDeviceCopyMemoryIndirectPropertiesNV}, {@link VkPhysicalDeviceCustomBorderColorPropertiesEXT}, {@link VkPhysicalDeviceDepthStencilResolveProperties}, {@link VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT}, {@link VkPhysicalDeviceDescriptorBufferPropertiesEXT}, {@link VkPhysicalDeviceDescriptorIndexingProperties}, {@link VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV}, {@link VkPhysicalDeviceDiscardRectanglePropertiesEXT}, {@link VkPhysicalDeviceDriverProperties}, {@link VkPhysicalDeviceDrmPropertiesEXT}, {@link VkPhysicalDeviceExtendedDynamicState3PropertiesEXT}, {@link VkPhysicalDeviceExternalMemoryHostPropertiesEXT}, {@link VkPhysicalDeviceFloatControlsProperties}, {@link VkPhysicalDeviceFragmentDensityMap2PropertiesEXT}, {@link VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM}, {@link VkPhysicalDeviceFragmentDensityMapPropertiesEXT}, {@link VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR}, {@link VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV}, {@link VkPhysicalDeviceFragmentShadingRatePropertiesKHR}, {@link VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT}, {@link VkPhysicalDeviceIDProperties}, {@link VkPhysicalDeviceImageProcessingPropertiesQCOM}, {@link VkPhysicalDeviceInlineUniformBlockProperties}, {@link VkPhysicalDeviceLineRasterizationPropertiesEXT}, {@link VkPhysicalDeviceMaintenance3Properties}, {@link VkPhysicalDeviceMaintenance4Properties}, {@link VkPhysicalDeviceMemoryDecompressionPropertiesNV}, {@link VkPhysicalDeviceMeshShaderPropertiesEXT}, {@link VkPhysicalDeviceMeshShaderPropertiesNV}, {@link VkPhysicalDeviceMultiDrawPropertiesEXT}, {@link VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX}, {@link VkPhysicalDeviceMultiviewProperties}, {@link VkPhysicalDeviceOpacityMicromapPropertiesEXT}, {@link VkPhysicalDeviceOpticalFlowPropertiesNV}, {@link VkPhysicalDevicePCIBusInfoPropertiesEXT}, {@link VkPhysicalDevicePerformanceQueryPropertiesKHR}, {@link VkPhysicalDevicePipelineRobustnessPropertiesEXT}, {@link VkPhysicalDevicePointClippingProperties}, {@link VkPhysicalDevicePortabilitySubsetPropertiesKHR}, {@link VkPhysicalDeviceProtectedMemoryProperties}, {@link VkPhysicalDeviceProvokingVertexPropertiesEXT}, {@link VkPhysicalDevicePushDescriptorPropertiesKHR}, {@link VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV}, {@link VkPhysicalDeviceRayTracingPipelinePropertiesKHR}, {@link VkPhysicalDeviceRayTracingPropertiesNV}, {@link VkPhysicalDeviceRobustness2PropertiesEXT}, {@link VkPhysicalDeviceSampleLocationsPropertiesEXT}, {@link VkPhysicalDeviceSamplerFilterMinmaxProperties}, {@link VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM}, {@link VkPhysicalDeviceShaderCoreProperties2AMD}, {@link VkPhysicalDeviceShaderCorePropertiesAMD}, {@link VkPhysicalDeviceShaderIntegerDotProductProperties}, {@link VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT}, {@link VkPhysicalDeviceShaderSMBuiltinsPropertiesNV}, {@link VkPhysicalDeviceShadingRateImagePropertiesNV}, {@link VkPhysicalDeviceSubgroupProperties}, {@link VkPhysicalDeviceSubgroupSizeControlProperties}, {@link VkPhysicalDeviceSubpassShadingPropertiesHUAWEI}, {@link VkPhysicalDeviceTexelBufferAlignmentProperties}, {@link VkPhysicalDeviceTimelineSemaphoreProperties}, {@link VkPhysicalDeviceTransformFeedbackPropertiesEXT}, {@link VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT}, {@link VkPhysicalDeviceVulkan11Properties}, {@link VkPhysicalDeviceVulkan12Properties}, or {@link VkPhysicalDeviceVulkan13Properties}
+ * - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of {@link VkPhysicalDeviceAccelerationStructurePropertiesKHR}, {@link VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT}, {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI}, {@link VkPhysicalDeviceConservativeRasterizationPropertiesEXT}, {@link VkPhysicalDeviceCooperativeMatrixPropertiesNV}, {@link VkPhysicalDeviceCopyMemoryIndirectPropertiesNV}, {@link VkPhysicalDeviceCustomBorderColorPropertiesEXT}, {@link VkPhysicalDeviceDepthStencilResolveProperties}, {@link VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT}, {@link VkPhysicalDeviceDescriptorBufferPropertiesEXT}, {@link VkPhysicalDeviceDescriptorIndexingProperties}, {@link VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV}, {@link VkPhysicalDeviceDiscardRectanglePropertiesEXT}, {@link VkPhysicalDeviceDriverProperties}, {@link VkPhysicalDeviceDrmPropertiesEXT}, {@link VkPhysicalDeviceExtendedDynamicState3PropertiesEXT}, {@link VkPhysicalDeviceExternalMemoryHostPropertiesEXT}, {@link VkPhysicalDeviceFloatControlsProperties}, {@link VkPhysicalDeviceFragmentDensityMap2PropertiesEXT}, {@link VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM}, {@link VkPhysicalDeviceFragmentDensityMapPropertiesEXT}, {@link VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR}, {@link VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV}, {@link VkPhysicalDeviceFragmentShadingRatePropertiesKHR}, {@link VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT}, {@link VkPhysicalDeviceIDProperties}, {@link VkPhysicalDeviceImageProcessingPropertiesQCOM}, {@link VkPhysicalDeviceInlineUniformBlockProperties}, {@link VkPhysicalDeviceLineRasterizationPropertiesEXT}, {@link VkPhysicalDeviceMaintenance3Properties}, {@link VkPhysicalDeviceMaintenance4Properties}, {@link VkPhysicalDeviceMemoryDecompressionPropertiesNV}, {@link VkPhysicalDeviceMeshShaderPropertiesEXT}, {@link VkPhysicalDeviceMeshShaderPropertiesNV}, {@link VkPhysicalDeviceMultiDrawPropertiesEXT}, {@link VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX}, {@link VkPhysicalDeviceMultiviewProperties}, {@link VkPhysicalDeviceOpacityMicromapPropertiesEXT}, {@link VkPhysicalDeviceOpticalFlowPropertiesNV}, {@link VkPhysicalDevicePCIBusInfoPropertiesEXT}, {@link VkPhysicalDevicePerformanceQueryPropertiesKHR}, {@link VkPhysicalDevicePipelineRobustnessPropertiesEXT}, {@link VkPhysicalDevicePointClippingProperties}, {@link VkPhysicalDevicePortabilitySubsetPropertiesKHR}, {@link VkPhysicalDeviceProtectedMemoryProperties}, {@link VkPhysicalDeviceProvokingVertexPropertiesEXT}, {@link VkPhysicalDevicePushDescriptorPropertiesKHR}, {@link VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV}, {@link VkPhysicalDeviceRayTracingPipelinePropertiesKHR}, {@link VkPhysicalDeviceRayTracingPropertiesNV}, {@link VkPhysicalDeviceRobustness2PropertiesEXT}, {@link VkPhysicalDeviceSampleLocationsPropertiesEXT}, {@link VkPhysicalDeviceSamplerFilterMinmaxProperties}, {@link VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM}, {@link VkPhysicalDeviceShaderCoreProperties2AMD}, {@link VkPhysicalDeviceShaderCorePropertiesAMD}, {@link VkPhysicalDeviceShaderIntegerDotProductProperties}, {@link VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT}, {@link VkPhysicalDeviceShaderSMBuiltinsPropertiesNV}, {@link VkPhysicalDeviceShadingRateImagePropertiesNV}, {@link VkPhysicalDeviceSubgroupProperties}, {@link VkPhysicalDeviceSubgroupSizeControlProperties}, {@link VkPhysicalDeviceSubpassShadingPropertiesHUAWEI}, {@link VkPhysicalDeviceTexelBufferAlignmentProperties}, {@link VkPhysicalDeviceTimelineSemaphoreProperties}, {@link VkPhysicalDeviceTransformFeedbackPropertiesEXT}, {@link VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT}, {@link VkPhysicalDeviceVulkan11Properties}, {@link VkPhysicalDeviceVulkan12Properties}, or {@link VkPhysicalDeviceVulkan13Properties}
* - The {@code sType} value of each struct in the {@code pNext} chain must be unique
*
*
@@ -104,6 +104,8 @@ public VkPhysicalDeviceProperties2(ByteBuffer container) {
public VkPhysicalDeviceProperties2 pNext(VkPhysicalDeviceAccelerationStructurePropertiesKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT} value to the {@code pNext} chain. */
public VkPhysicalDeviceProperties2 pNext(VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI} value to the {@code pNext} chain. */
+ public VkPhysicalDeviceProperties2 pNext(VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkPhysicalDeviceConservativeRasterizationPropertiesEXT} value to the {@code pNext} chain. */
public VkPhysicalDeviceProperties2 pNext(VkPhysicalDeviceConservativeRasterizationPropertiesEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkPhysicalDeviceCooperativeMatrixPropertiesNV} value to the {@code pNext} chain. */
@@ -493,6 +495,8 @@ protected VkPhysicalDeviceProperties2 getElementFactory() {
public VkPhysicalDeviceProperties2.Buffer pNext(VkPhysicalDeviceAccelerationStructurePropertiesKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT} value to the {@code pNext} chain. */
public VkPhysicalDeviceProperties2.Buffer pNext(VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI} value to the {@code pNext} chain. */
+ public VkPhysicalDeviceProperties2.Buffer pNext(VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkPhysicalDeviceConservativeRasterizationPropertiesEXT} value to the {@code pNext} chain. */
public VkPhysicalDeviceProperties2.Buffer pNext(VkPhysicalDeviceConservativeRasterizationPropertiesEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkPhysicalDeviceCooperativeMatrixPropertiesNV} value to the {@code pNext} chain. */
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDevicePushDescriptorPropertiesKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDevicePushDescriptorPropertiesKHR.java
index 7cca56535b..fa3b7927f1 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDevicePushDescriptorPropertiesKHR.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPhysicalDevicePushDescriptorPropertiesKHR.java
@@ -85,7 +85,7 @@ public VkPhysicalDevicePushDescriptorPropertiesKHR(ByteBuffer container) {
/** {@code NULL} or a pointer to a structure extending this structure. */
@NativeType("void *")
public long pNext() { return npNext(address()); }
- /** the maximum number of descriptors that can be used in a descriptor set created with {@link KHRPushDescriptor#VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR} set. */
+ /** the maximum number of descriptors that can be used in a descriptor set layout created with {@link KHRPushDescriptor#VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR} set. */
@NativeType("uint32_t")
public int maxPushDescriptors() { return nmaxPushDescriptors(address()); }
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPipelineShaderStageCreateInfo.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPipelineShaderStageCreateInfo.java
index 7f979a6b06..21b79a501e 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPipelineShaderStageCreateInfo.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkPipelineShaderStageCreateInfo.java
@@ -41,6 +41,7 @@
* If the {@code tessellationShader} feature is not enabled, {@code stage} must not be {@link VK10#VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT SHADER_STAGE_TESSELLATION_CONTROL_BIT} or {@link VK10#VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT SHADER_STAGE_TESSELLATION_EVALUATION_BIT}
* If the {@code meshShaders} feature is not enabled, {@code stage} must not be {@link EXTMeshShader#VK_SHADER_STAGE_MESH_BIT_EXT SHADER_STAGE_MESH_BIT_EXT}
* If the {@code taskShaders} feature is not enabled, {@code stage} must not be {@link EXTMeshShader#VK_SHADER_STAGE_TASK_BIT_EXT SHADER_STAGE_TASK_BIT_EXT}
+ * If the {@code clustercullingShader} feature is not enabled, {@code stage} must not be {@link HUAWEIClusterCullingShader#VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI}
* {@code stage} must not be {@link VK10#VK_SHADER_STAGE_ALL_GRAPHICS SHADER_STAGE_ALL_GRAPHICS}, or {@link VK10#VK_SHADER_STAGE_ALL SHADER_STAGE_ALL}
* {@code pName} must be the name of an {@code OpEntryPoint} in {@code module} with an execution model that matches {@code stage}
* If the identified entry point includes any variable in its interface that is declared with the {@code ClipDistance} {@code BuiltIn} decoration, that variable must not have an array size greater than {@link VkPhysicalDeviceLimits}{@code ::maxClipDistances}
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkQueryPoolCreateInfo.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkQueryPoolCreateInfo.java
index 7e2ba6c2bb..4f5e6f6349 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkQueryPoolCreateInfo.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkQueryPoolCreateInfo.java
@@ -31,13 +31,14 @@
* If {@code queryType} is {@link VK10#VK_QUERY_TYPE_PIPELINE_STATISTICS QUERY_TYPE_PIPELINE_STATISTICS}, {@code pipelineStatistics} must be a valid combination of {@code VkQueryPipelineStatisticFlagBits} values
* If {@code queryType} is {@link KHRPerformanceQuery#VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR QUERY_TYPE_PERFORMANCE_QUERY_KHR}, the {@code pNext} chain must include a {@link VkQueryPoolPerformanceCreateInfoKHR} structure
* {@code queryCount} must be greater than 0
+ * If {@code queryType} is {@link KHRVideoEncodeQueue#VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR}, then the {@code pNext} chain must include a {@link VkVideoProfileInfoKHR} structure with {@code videoCodecOperation} specifying an encode operation
*
*
* Valid Usage (Implicit)
*
*
* - {@code sType} must be {@link VK10#VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO}
- * - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of {@link VkQueryPoolPerformanceCreateInfoKHR}, {@link VkQueryPoolPerformanceQueryCreateInfoINTEL}, {@link VkVideoDecodeH264ProfileInfoEXT}, {@link VkVideoDecodeH265ProfileInfoEXT}, {@link VkVideoDecodeUsageInfoKHR}, {@link VkVideoEncodeH264ProfileInfoEXT}, {@link VkVideoEncodeH265ProfileInfoEXT}, {@link VkVideoEncodeUsageInfoKHR}, or {@link VkVideoProfileInfoKHR}
+ * - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of {@link VkQueryPoolPerformanceCreateInfoKHR}, {@link VkQueryPoolPerformanceQueryCreateInfoINTEL}, {@link VkVideoDecodeH264ProfileInfoKHR}, {@link VkVideoDecodeH265ProfileInfoKHR}, {@link VkVideoDecodeUsageInfoKHR}, {@link VkVideoEncodeH264ProfileInfoEXT}, {@link VkVideoEncodeH265ProfileInfoEXT}, {@link VkVideoEncodeUsageInfoKHR}, or {@link VkVideoProfileInfoKHR}
* - The {@code sType} value of each struct in the {@code pNext} chain must be unique
* - {@code flags} must be 0
* - {@code queryType} must be a valid {@code VkQueryType} value
@@ -141,10 +142,10 @@ public VkQueryPoolCreateInfo(ByteBuffer container) {
public VkQueryPoolCreateInfo pNext(VkQueryPoolPerformanceCreateInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkQueryPoolPerformanceQueryCreateInfoINTEL} value to the {@code pNext} chain. */
public VkQueryPoolCreateInfo pNext(VkQueryPoolPerformanceQueryCreateInfoINTEL value) { return this.pNext(value.pNext(this.pNext()).address()); }
- /** Prepends the specified {@link VkVideoDecodeH264ProfileInfoEXT} value to the {@code pNext} chain. */
- public VkQueryPoolCreateInfo pNext(VkVideoDecodeH264ProfileInfoEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
- /** Prepends the specified {@link VkVideoDecodeH265ProfileInfoEXT} value to the {@code pNext} chain. */
- public VkQueryPoolCreateInfo pNext(VkVideoDecodeH265ProfileInfoEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkVideoDecodeH264ProfileInfoKHR} value to the {@code pNext} chain. */
+ public VkQueryPoolCreateInfo pNext(VkVideoDecodeH264ProfileInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkVideoDecodeH265ProfileInfoKHR} value to the {@code pNext} chain. */
+ public VkQueryPoolCreateInfo pNext(VkVideoDecodeH265ProfileInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkVideoDecodeUsageInfoKHR} value to the {@code pNext} chain. */
public VkQueryPoolCreateInfo pNext(VkVideoDecodeUsageInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkVideoEncodeH264ProfileInfoEXT} value to the {@code pNext} chain. */
@@ -422,10 +423,10 @@ protected VkQueryPoolCreateInfo getElementFactory() {
public VkQueryPoolCreateInfo.Buffer pNext(VkQueryPoolPerformanceCreateInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkQueryPoolPerformanceQueryCreateInfoINTEL} value to the {@code pNext} chain. */
public VkQueryPoolCreateInfo.Buffer pNext(VkQueryPoolPerformanceQueryCreateInfoINTEL value) { return this.pNext(value.pNext(this.pNext()).address()); }
- /** Prepends the specified {@link VkVideoDecodeH264ProfileInfoEXT} value to the {@code pNext} chain. */
- public VkQueryPoolCreateInfo.Buffer pNext(VkVideoDecodeH264ProfileInfoEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
- /** Prepends the specified {@link VkVideoDecodeH265ProfileInfoEXT} value to the {@code pNext} chain. */
- public VkQueryPoolCreateInfo.Buffer pNext(VkVideoDecodeH265ProfileInfoEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkVideoDecodeH264ProfileInfoKHR} value to the {@code pNext} chain. */
+ public VkQueryPoolCreateInfo.Buffer pNext(VkVideoDecodeH264ProfileInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkVideoDecodeH265ProfileInfoKHR} value to the {@code pNext} chain. */
+ public VkQueryPoolCreateInfo.Buffer pNext(VkVideoDecodeH265ProfileInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkVideoDecodeUsageInfoKHR} value to the {@code pNext} chain. */
public VkQueryPoolCreateInfo.Buffer pNext(VkVideoDecodeUsageInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkVideoEncodeH264ProfileInfoEXT} value to the {@code pNext} chain. */
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkQueueFamilyQueryResultStatusPropertiesKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkQueueFamilyQueryResultStatusPropertiesKHR.java
index 64b836e1e1..4b269f36c6 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkQueueFamilyQueryResultStatusPropertiesKHR.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkQueueFamilyQueryResultStatusPropertiesKHR.java
@@ -18,6 +18,10 @@
/**
* Structure specifying support for result status query.
*
+ * Description
+ *
+ * If this structure is included in the {@code pNext} chain of the {@link VkQueueFamilyProperties2} structure passed to {@link VK11#vkGetPhysicalDeviceQueueFamilyProperties2 GetPhysicalDeviceQueueFamilyProperties2}, then it is filled with information about whether result status queries are supported by the specified queue family.
+ *
* Valid Usage (Implicit)
*
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkQueueFamilyVideoPropertiesKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkQueueFamilyVideoPropertiesKHR.java
index cf1951d9fe..8b95e87e28 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkQueueFamilyVideoPropertiesKHR.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkQueueFamilyVideoPropertiesKHR.java
@@ -16,7 +16,11 @@
import static org.lwjgl.system.MemoryStack.*;
/**
- * Structure specifying support for video codec operations.
+ * Structure describing video codec operations supported by a queue family.
+ *
+ * Description
+ *
+ * If this structure is included in the {@code pNext} chain of the {@link VkQueueFamilyProperties2} structure passed to {@link VK11#vkGetPhysicalDeviceQueueFamilyProperties2 GetPhysicalDeviceQueueFamilyProperties2}, then it is filled with the set of video codec operations supported by the specified queue family.
*
* Valid Usage (Implicit)
*
@@ -81,7 +85,7 @@ public VkQueueFamilyVideoPropertiesKHR(ByteBuffer container) {
/** {@code NULL} or a pointer to a structure extending this structure. */
@NativeType("void *")
public long pNext() { return npNext(address()); }
- /** a bitmask of {@code VkVideoCodecOperationFlagBitsKHR} specifying supported video codec operation(s). */
+ /** a bitmask of {@code VkVideoCodecOperationFlagBitsKHR} that indicates the set of video codec operations supported by the queue family. */
@NativeType("VkVideoCodecOperationFlagsKHR")
public int videoCodecOperations() { return nvideoCodecOperations(address()); }
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkRayTracingShaderGroupCreateInfoKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkRayTracingShaderGroupCreateInfoKHR.java
index c5f78078e6..c880b955c1 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkRayTracingShaderGroupCreateInfoKHR.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkRayTracingShaderGroupCreateInfoKHR.java
@@ -18,6 +18,10 @@
/**
* Structure specifying shaders in a shader group.
*
+ * Description
+ *
+ * If the pipeline is created with {@link KHRPipelineLibrary#VK_PIPELINE_CREATE_LIBRARY_BIT_KHR PIPELINE_CREATE_LIBRARY_BIT_KHR} and the pipelineLibraryGroupHandles feature is enabled, {@code pShaderGroupCaptureReplayHandle} is inherited by all pipelines which link against this pipeline and remains bitwise identical for any pipeline which references this pipeline library.
+ *
* Valid Usage
*
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkReallocationFunction.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkReallocationFunction.java
index b0c0607d58..7930b0ec83 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkReallocationFunction.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkReallocationFunction.java
@@ -28,7 +28,7 @@
*
* Description
*
- * {@code pfnReallocation} must return an allocation with enough space for {@code size} bytes, and the contents of the original allocation from bytes zero to min(original size, new size) - 1
must be preserved in the returned allocation. If {@code size} is larger than the old size, the contents of the additional space are undefined. If satisfying these requirements involves creating a new allocation, then the old allocation should be freed.
+ * If the reallocation was successful, {@code pfnReallocation} must return an allocation with enough space for {@code size} bytes, and the contents of the original allocation from bytes zero to min(original size, new size) - 1
must be preserved in the returned allocation. If {@code size} is larger than the old size, the contents of the additional space are undefined. If satisfying these requirements involves creating a new allocation, then the old allocation should be freed.
*
* If {@code pOriginal} is {@code NULL}, then {@code pfnReallocation} must behave equivalently to a call to {@link VkAllocationFunction} with the same parameter values (without {@code pOriginal}).
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkReallocationFunctionI.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkReallocationFunctionI.java
index bdd428b3f6..7f22955baf 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkReallocationFunctionI.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkReallocationFunctionI.java
@@ -29,7 +29,7 @@
*
* Description
*
- * {@code pfnReallocation} must return an allocation with enough space for {@code size} bytes, and the contents of the original allocation from bytes zero to min(original size, new size) - 1
must be preserved in the returned allocation. If {@code size} is larger than the old size, the contents of the additional space are undefined. If satisfying these requirements involves creating a new allocation, then the old allocation should be freed.
+ * If the reallocation was successful, {@code pfnReallocation} must return an allocation with enough space for {@code size} bytes, and the contents of the original allocation from bytes zero to min(original size, new size) - 1
must be preserved in the returned allocation. If {@code size} is larger than the old size, the contents of the additional space are undefined. If satisfying these requirements involves creating a new allocation, then the old allocation should be freed.
*
* If {@code pOriginal} is {@code NULL}, then {@code pfnReallocation} must behave equivalently to a call to {@link VkAllocationFunction} with the same parameter values (without {@code pOriginal}).
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkRenderingInfo.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkRenderingInfo.java
index 73f72c196e..ca5c13497f 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkRenderingInfo.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkRenderingInfo.java
@@ -36,6 +36,8 @@
* - If multisampled-render-to-single-sampled is enabled, then all attachments referenced by {@code imageView} members of {@code pDepthAttachment}, {@code pStencilAttachment}, and elements of {@code pColorAttachments} that are not {@link VK10#VK_NULL_HANDLE NULL_HANDLE} and have a sample count of {@link VK10#VK_SAMPLE_COUNT_1_BIT SAMPLE_COUNT_1_BIT} must have been created with {@link EXTMultisampledRenderToSingleSampled#VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT} in their {@link VkImageCreateInfo}{@code ::flags}
* - If the {@code pNext} chain does not contain {@link VkDeviceGroupRenderPassBeginInfo} or its {@code deviceRenderAreaCount} member is equal to 0, {@code renderArea.offset.x} must be greater than or equal to 0
* - If the {@code pNext} chain does not contain {@link VkDeviceGroupRenderPassBeginInfo} or its {@code deviceRenderAreaCount} member is equal to 0, {@code renderArea.offset.y} must be greater than or equal to 0
+ * - If the {@code pNext} chain does not contain {@link VkDeviceGroupRenderPassBeginInfo} or its {@code deviceRenderAreaCount} member is equal to 0, the sum of {@code renderArea.extent.width} and {@code renderArea.offset.x} must be less than or equal to {@code maxFramebufferWidth}
+ * - If the {@code pNext} chain does not contain {@link VkDeviceGroupRenderPassBeginInfo} or its {@code deviceRenderAreaCount} member is equal to 0, the sum of {@code renderArea.extent.width} and {@code renderArea.offset.y} must be less than or equal to {@code maxFramebufferHeight}
* - If the {@code pNext} chain does not contain {@link VkDeviceGroupRenderPassBeginInfo} or its {@code deviceRenderAreaCount} member is equal to 0, the width of the {@code imageView} member of any element of {@code pColorAttachments}, {@code pDepthAttachment}, or {@code pStencilAttachment} that is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must be greater than or equal to
renderArea.offset.x + renderArea.extent.width
* - If the {@code pNext} chain does not contain {@link VkDeviceGroupRenderPassBeginInfo} or its {@code deviceRenderAreaCount} member is equal to 0, the height of the {@code imageView} member of any element of {@code pColorAttachments}, {@code pDepthAttachment}, or {@code pStencilAttachment} that is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must be greater than or equal to
renderArea.offset.y + renderArea.extent.height
* - If the {@code pNext} chain contains {@link VkDeviceGroupRenderPassBeginInfo}, the width of the {@code imageView} member of any element of {@code pColorAttachments}, {@code pDepthAttachment}, or {@code pStencilAttachment} that is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE} must be greater than or equal to the sum of the {@code offset.x} and {@code extent.width} members of each element of {@code pDeviceRenderAreas}
@@ -80,6 +82,7 @@
* - If the {@code pNext} chain contains a {@link VkDeviceGroupRenderPassBeginInfo} structure, its {@code deviceRenderAreaCount} member is not 0, and the {@code imageView} member of a {@link VkRenderingFragmentShadingRateAttachmentInfoKHR} structure included in the {@code pNext} chain is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, {@code imageView} must have a width greater than or equal to
ceil((pDeviceRenderAreasx+pDeviceRenderAreaswidth) / shadingRateAttachmentTexelSizewidth)
for each element of {@code pDeviceRenderAreas}
* - If the {@code pNext} chain does not contain {@link VkDeviceGroupRenderPassBeginInfo} or its {@code deviceRenderAreaCount} member is equal to 0 and the {@code imageView} member of a {@link VkRenderingFragmentShadingRateAttachmentInfoKHR} structure included in the {@code pNext} chain is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, {@code imageView} must have a height greater than or equal to
ceil((renderAreay+renderAreaheight) / shadingRateAttachmentTexelSizeheight)
* - If the {@code pNext} chain contains a {@link VkDeviceGroupRenderPassBeginInfo} structure, its {@code deviceRenderAreaCount} member is not 0, and the {@code imageView} member of a {@link VkRenderingFragmentShadingRateAttachmentInfoKHR} structure included in the {@code pNext} chain is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, {@code imageView} must have a height greater than or equal to
ceil((pDeviceRenderAreasy+pDeviceRenderAreasheight) / shadingRateAttachmentTexelSizeheight)
for each element of {@code pDeviceRenderAreas}
+ * - {@code layerCount} must be less than or equal to {@code maxFramebufferLayers}
* - If the {@code imageView} member of a {@link VkRenderingFragmentShadingRateAttachmentInfoKHR} structure included in the {@code pNext} chain is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, and {@code viewMask} is 0, {@code imageView} must have a {@code layerCount} that is either equal to 1 or greater than or equal to {@code layerCount}
* - If the {@code imageView} member of a {@link VkRenderingFragmentShadingRateAttachmentInfoKHR} structure included in the {@code pNext} chain is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, and {@code viewMask} is not 0, {@code imageView} must have a {@code layerCount} that either equal to 1 or greater than or equal to the index of the most significant bit in {@code viewMask}
* - If the {@code imageView} member of a {@link VkRenderingFragmentShadingRateAttachmentInfoKHR} structure included in the {@code pNext} chain is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, it must not be equal to the {@code imageView} or {@code resolveImageView} member of {@code pDepthAttachment}, {@code pStencilAttachment}, or any element of {@code pColorAttachments}
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkSamplerYcbcrConversionCreateInfo.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkSamplerYcbcrConversionCreateInfo.java
index 38129a7508..60c9ea9b62 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkSamplerYcbcrConversionCreateInfo.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkSamplerYcbcrConversionCreateInfo.java
@@ -27,12 +27,13 @@
* If {@code format} supports {@link VK11#VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT} the {@code forceExplicitReconstruction} value behaves as if it was set to {@link VK10#VK_TRUE TRUE}.
*
*
- * Sampler Y′CBCR conversion objects do not support external format conversion without additional extensions defining external formats.
+ * If the {@code pNext} chain includes a {@link VkExternalFormatANDROID} structure with non-zero {@code externalFormat} member, the sampler Y′CBCR conversion object represents an external format conversion, and {@code format} must be {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}. Such conversions must only be used to sample image views with a matching external format. When creating an external format conversion, the value of {@code components} is ignored.
*
* Valid Usage
*
*
- * - {@code format} must represent unsigned normalized values (i.e. the format must be a {@code UNORM} format)
+ * - If an external format conversion is being created, {@code format} must be {@link VK10#VK_FORMAT_UNDEFINED FORMAT_UNDEFINED}
+ * - If an external format conversion is not being created, {@code format} must represent unsigned normalized values (i.e. the format must be a {@code UNORM} format)
* - The potential format features of the sampler Y′CBCR conversion must support {@link VK11#VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT} or {@link VK11#VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT}
* - If the potential format features of the sampler Y′CBCR conversion do not support {@link VK11#VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT}, {@code xChromaOffset} and {@code yChromaOffset} must not be {@link VK11#VK_CHROMA_LOCATION_COSITED_EVEN CHROMA_LOCATION_COSITED_EVEN} if the corresponding components are downsampled
* - If the potential format features of the sampler Y′CBCR conversion do not support {@link VK11#VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT}, {@code xChromaOffset} and {@code yChromaOffset} must not be {@link VK11#VK_CHROMA_LOCATION_MIDPOINT CHROMA_LOCATION_MIDPOINT} if the corresponding components are downsampled
@@ -51,7 +52,8 @@
*
*
* - {@code sType} must be {@link VK11#VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO}
- * - {@code pNext} must be {@code NULL}
+ * - {@code pNext} must be {@code NULL} or a pointer to a valid instance of {@link VkExternalFormatANDROID}
+ * - The {@code sType} value of each struct in the {@code pNext} chain must be unique
* - {@code format} must be a valid {@code VkFormat} value
* - {@code ycbcrModel} must be a valid {@code VkSamplerYcbcrModelConversion} value
* - {@code ycbcrRange} must be a valid {@code VkSamplerYcbcrRange} value
@@ -182,6 +184,8 @@ public VkSamplerYcbcrConversionCreateInfo(ByteBuffer container) {
public VkSamplerYcbcrConversionCreateInfo sType$Default() { return sType(VK11.VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO); }
/** Sets the specified value to the {@link #pNext} field. */
public VkSamplerYcbcrConversionCreateInfo pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
+ /** Prepends the specified {@link VkExternalFormatANDROID} value to the {@code pNext} chain. */
+ public VkSamplerYcbcrConversionCreateInfo pNext(VkExternalFormatANDROID value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Sets the specified value to the {@link #format} field. */
public VkSamplerYcbcrConversionCreateInfo format(@NativeType("VkFormat") int value) { nformat(address(), value); return this; }
/** Sets the specified value to the {@link #ycbcrModel} field. */
@@ -488,6 +492,8 @@ protected VkSamplerYcbcrConversionCreateInfo getElementFactory() {
public VkSamplerYcbcrConversionCreateInfo.Buffer sType$Default() { return sType(VK11.VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO); }
/** Sets the specified value to the {@link VkSamplerYcbcrConversionCreateInfo#pNext} field. */
public VkSamplerYcbcrConversionCreateInfo.Buffer pNext(@NativeType("void const *") long value) { VkSamplerYcbcrConversionCreateInfo.npNext(address(), value); return this; }
+ /** Prepends the specified {@link VkExternalFormatANDROID} value to the {@code pNext} chain. */
+ public VkSamplerYcbcrConversionCreateInfo.Buffer pNext(VkExternalFormatANDROID value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Sets the specified value to the {@link VkSamplerYcbcrConversionCreateInfo#format} field. */
public VkSamplerYcbcrConversionCreateInfo.Buffer format(@NativeType("VkFormat") int value) { VkSamplerYcbcrConversionCreateInfo.nformat(address(), value); return this; }
/** Sets the specified value to the {@link VkSamplerYcbcrConversionCreateInfo#ycbcrModel} field. */
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkSwapchainPresentScalingCreateInfoEXT.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkSwapchainPresentScalingCreateInfoEXT.java
index 739b45ee6d..2bbc35e3a1 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkSwapchainPresentScalingCreateInfoEXT.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkSwapchainPresentScalingCreateInfoEXT.java
@@ -20,18 +20,18 @@
*
* Description
*
- * If {@code presentScaling} is 0, the result of presenting a swapchain image with dimensions that do not match the surface dimensions is implementation and platform-dependent. If {@code presentGravityX} or {@code presentGravityY} are 0, the presentation gravity must match that defined by the native platform surface on platforms which define surface gravity.
+ * If {@code scalingBehavior} is 0, the result of presenting a swapchain image with dimensions that do not match the surface dimensions is implementation and platform-dependent. If {@code presentGravityX} or {@code presentGravityY} are 0, the presentation gravity must match that defined by the native platform surface on platforms which define surface gravity.
*
* Valid Usage
*
*
* - If {@code presentGravityX} is 0, {@code presentGravityY} must be 0
* - If {@code presentGravityX} is not 0, {@code presentGravityY} must not be 0
- * - {@code presentScaling} must not have more than one bit set
+ * - {@code scalingBehavior} must not have more than one bit set
* - {@code presentGravityX} must not have more than one bit set
* - {@code presentGravityY} must not have more than one bit set
- * - {@code presentScaling} must be a valid scaling method for the surface as returned in {@link VkSurfacePresentScalingCapabilitiesEXT}{@code ::supportedPresentScaling}, given {@link VkSwapchainCreateInfoKHR}{@code ::presentMode} in {@link VkSurfacePresentModeEXT}
- * - If the swapchain is created with {@link VkSwapchainPresentModesCreateInfoEXT}, {@code presentScaling} must be a valid scaling method for the surface as returned in {@link VkSurfacePresentScalingCapabilitiesEXT}{@code ::supportedPresentScaling}, given each present mode in {@link VkSwapchainPresentModesCreateInfoEXT}{@code ::pPresentModes} in {@link VkSurfacePresentModeEXT}
+ * - {@code scalingBehavior} must be a valid scaling method for the surface as returned in {@link VkSurfacePresentScalingCapabilitiesEXT}{@code ::supportedPresentScaling}, given {@link VkSwapchainCreateInfoKHR}{@code ::presentMode} in {@link VkSurfacePresentModeEXT}
+ * - If the swapchain is created with {@link VkSwapchainPresentModesCreateInfoEXT}, {@code scalingBehavior} must be a valid scaling method for the surface as returned in {@link VkSurfacePresentScalingCapabilitiesEXT}{@code ::supportedPresentScaling}, given each present mode in {@link VkSwapchainPresentModesCreateInfoEXT}{@code ::pPresentModes} in {@link VkSurfacePresentModeEXT}
* - {@code presentGravityX} must be a valid x-axis present gravity for the surface as returned in {@link VkSurfacePresentScalingCapabilitiesEXT}{@code ::supportedPresentGravityX}, given {@link VkSwapchainCreateInfoKHR}{@code ::presentMode} in {@link VkSurfacePresentModeEXT}
* - If the swapchain is created with {@link VkSwapchainPresentModesCreateInfoEXT}, {@code presentGravityX} must be a valid x-axis present gravity for the surface as returned in {@link VkSurfacePresentScalingCapabilitiesEXT}{@code ::supportedPresentGravityX}, given each present mode in {@link VkSwapchainPresentModesCreateInfoEXT}{@code ::pPresentModes} in {@link VkSurfacePresentModeEXT}
* - {@code presentGravityY} must be a valid y-axis present gravity for the surface as returned in {@link VkSurfacePresentScalingCapabilitiesEXT}{@code ::supportedPresentGravityY}, given {@link VkSwapchainCreateInfoKHR}{@code ::presentMode} in {@link VkSurfacePresentModeEXT}
@@ -53,7 +53,7 @@
* struct VkSwapchainPresentScalingCreateInfoEXT {
* VkStructureType {@link #sType};
* void const * {@link #pNext};
- * VkPresentScalingFlagsEXT scalingBehavior;
+ * VkPresentScalingFlagsEXT {@link #scalingBehavior};
* VkPresentGravityFlagsEXT {@link #presentGravityX};
* VkPresentGravityFlagsEXT {@link #presentGravityY};
* }
@@ -112,13 +112,13 @@ public VkSwapchainPresentScalingCreateInfoEXT(ByteBuffer container) {
/** {@code NULL} or a pointer to a structure extending this structure. */
@NativeType("void const *")
public long pNext() { return npNext(address()); }
- /** @return the value of the {@code scalingBehavior} field. */
+ /** 0 or the scaling method to use when the dimensions of the surface and swapchain images differ. */
@NativeType("VkPresentScalingFlagsEXT")
public int scalingBehavior() { return nscalingBehavior(address()); }
- /** 0 or the x-axis direction in which swapchain image pixels gravitate relative to the surface when {@code presentScaling} does not result in a one-to-one pixel mapping between the scaled swapchain image and the surface. */
+ /** 0 or the x-axis direction in which swapchain image pixels gravitate relative to the surface when {@code scalingBehavior} does not result in a one-to-one pixel mapping between the scaled swapchain image and the surface. */
@NativeType("VkPresentGravityFlagsEXT")
public int presentGravityX() { return npresentGravityX(address()); }
- /** 0 or the y-axis direction in which swapchain image pixels gravitate relative to the surface when {@code presentScaling} does not result in a one-to-one pixel mapping between the scaled swapchain image and the surface. */
+ /** 0 or the y-axis direction in which swapchain image pixels gravitate relative to the surface when {@code scalingBehavior} does not result in a one-to-one pixel mapping between the scaled swapchain image and the surface. */
@NativeType("VkPresentGravityFlagsEXT")
public int presentGravityY() { return npresentGravityY(address()); }
@@ -128,7 +128,7 @@ public VkSwapchainPresentScalingCreateInfoEXT(ByteBuffer container) {
public VkSwapchainPresentScalingCreateInfoEXT sType$Default() { return sType(EXTSwapchainMaintenance1.VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT); }
/** Sets the specified value to the {@link #pNext} field. */
public VkSwapchainPresentScalingCreateInfoEXT pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
- /** Sets the specified value to the {@code scalingBehavior} field. */
+ /** Sets the specified value to the {@link #scalingBehavior} field. */
public VkSwapchainPresentScalingCreateInfoEXT scalingBehavior(@NativeType("VkPresentScalingFlagsEXT") int value) { nscalingBehavior(address(), value); return this; }
/** Sets the specified value to the {@link #presentGravityX} field. */
public VkSwapchainPresentScalingCreateInfoEXT presentGravityX(@NativeType("VkPresentGravityFlagsEXT") int value) { npresentGravityX(address(), value); return this; }
@@ -343,7 +343,7 @@ protected VkSwapchainPresentScalingCreateInfoEXT getElementFactory() {
/** @return the value of the {@link VkSwapchainPresentScalingCreateInfoEXT#pNext} field. */
@NativeType("void const *")
public long pNext() { return VkSwapchainPresentScalingCreateInfoEXT.npNext(address()); }
- /** @return the value of the {@code scalingBehavior} field. */
+ /** @return the value of the {@link VkSwapchainPresentScalingCreateInfoEXT#scalingBehavior} field. */
@NativeType("VkPresentScalingFlagsEXT")
public int scalingBehavior() { return VkSwapchainPresentScalingCreateInfoEXT.nscalingBehavior(address()); }
/** @return the value of the {@link VkSwapchainPresentScalingCreateInfoEXT#presentGravityX} field. */
@@ -359,7 +359,7 @@ protected VkSwapchainPresentScalingCreateInfoEXT getElementFactory() {
public VkSwapchainPresentScalingCreateInfoEXT.Buffer sType$Default() { return sType(EXTSwapchainMaintenance1.VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT); }
/** Sets the specified value to the {@link VkSwapchainPresentScalingCreateInfoEXT#pNext} field. */
public VkSwapchainPresentScalingCreateInfoEXT.Buffer pNext(@NativeType("void const *") long value) { VkSwapchainPresentScalingCreateInfoEXT.npNext(address(), value); return this; }
- /** Sets the specified value to the {@code scalingBehavior} field. */
+ /** Sets the specified value to the {@link VkSwapchainPresentScalingCreateInfoEXT#scalingBehavior} field. */
public VkSwapchainPresentScalingCreateInfoEXT.Buffer scalingBehavior(@NativeType("VkPresentScalingFlagsEXT") int value) { VkSwapchainPresentScalingCreateInfoEXT.nscalingBehavior(address(), value); return this; }
/** Sets the specified value to the {@link VkSwapchainPresentScalingCreateInfoEXT#presentGravityX} field. */
public VkSwapchainPresentScalingCreateInfoEXT.Buffer presentGravityX(@NativeType("VkPresentGravityFlagsEXT") int value) { VkSwapchainPresentScalingCreateInfoEXT.npresentGravityX(address(), value); return this; }
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoBeginCodingInfoKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoBeginCodingInfoKHR.java
index 8e243abd0a..17b783b1ce 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoBeginCodingInfoKHR.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoBeginCodingInfoKHR.java
@@ -17,13 +17,39 @@
import static org.lwjgl.system.MemoryStack.*;
/**
- * Structure specifying parameters of decode starts.
+ * Structure specifying video coding scope begin information.
+ *
+ * Description
+ *
+ * Limiting values are defined below that are referenced by the relevant valid usage statements of this structure.
+ *
+ *
+ * - Let {@code VkOffset2D codedOffsetGranularity} be the minimum alignment requirement for the coded offset of video picture resources. Unless otherwise defined, the value of the {@code x} and {@code y} members of {@code codedOffsetGranularity} are 0.
+ *
+ *
+ * - If {@code videoSession} was created with an H.264 decode profile with a {@link VkVideoDecodeH264ProfileInfoKHR}{@code ::pictureLayout} of {@link KHRVideoDecodeH264#VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR}, then {@code codedOffsetGranularity} is equal to {@link VkVideoDecodeH264CapabilitiesKHR}{@code ::fieldOffsetGranularity}, as returned by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR} for that video profile.
+ *
+ *
+ *
*
* Valid Usage
*
*
- * - {@link VkVideoBeginCodingInfoKHR}{@code ::referenceSlotCount} must not exceed the value specified in {@link VkVideoSessionCreateInfoKHR}{@code ::maxDpbSlots} when creating the video session object that is being provided in {@code videoSession}
- * - If {@code videoSessionParameters} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, it must have been created using {@code videoSession} as a parent object
+ * - {@code videoSession} must have memory bound to all of its memory bindings returned by {@link KHRVideoQueue#vkGetVideoSessionMemoryRequirementsKHR GetVideoSessionMemoryRequirementsKHR} for {@code videoSession}
+ * - Each non-negative {@link VkVideoReferenceSlotInfoKHR}{@code ::slotIndex} specified in the elements of {@code pReferenceSlots} must be less than the {@link VkVideoSessionCreateInfoKHR}{@code ::maxDpbSlots} specified when {@code videoSession} was created
+ * - Each video picture resource corresponding to any non-{@code NULL} {@code pPictureResource} member specified in the elements of {@code pReferenceSlots} must be unique within {@code pReferenceSlots}
+ * - If the {@code pPictureResource} member of any element of {@code pReferenceSlots} is not {@code NULL}, then the image view specified in {@code pPictureResource→imageViewBinding} for that element must be compatible with the video profile {@code videoSession} was created with
+ * - If the {@code pPictureResource} member of any element of {@code pReferenceSlots} is not {@code NULL}, then the format of the image view specified in {@code pPictureResource→imageViewBinding} for that element must match the {@link VkVideoSessionCreateInfoKHR}::referencePictureFormat {@code videoSession} was created with
+ * - If the {@code pPictureResource} member of any element of {@code pReferenceSlots} is not {@code NULL}, then its {@code codedOffset} member must be an integer multiple of {@code codedOffsetGranularity}
+ * - If the {@code pPictureResource} member of any element of {@code pReferenceSlots} is not {@code NULL}, then its {@code codedExtent} member must be between {@code minCodedExtent} and {@code maxCodedExtent}, inclusive, {@code videoSession} was created with
+ * - If {@link VkVideoCapabilitiesKHR}{@code ::flags} does not include {@link KHRVideoQueue#VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR}, as returned by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR} for the video profile {@code videoSession} was created with, then {@code pPictureResource→imageViewBinding} of all elements of {@code pReferenceSlots} with a non-{@code NULL} {@code pPictureResource} member must specify image views created from the same image
+ * - If {@code videoSession} was created with a decode operation and the {@code slotIndex} member of any element of {@code pReferenceSlots} is not negative, then the image view specified in {@code pPictureResource→imageViewBinding} for that element must have been created with {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR}
+ * - If {@code videoSession} was created with an encode operation and the {@code slotIndex} member of any element of {@code pReferenceSlots} is not negative, then the image view specified in {@code pPictureResource→imageViewBinding} for that element must have been created with {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR}
+ * - If {@code videoSession} was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR}, then {@code videoSessionParameters} must not be {@link VK10#VK_NULL_HANDLE NULL_HANDLE}
+ * - If {@code videoSession} was created with the video codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then {@code videoSessionParameters} must not be {@link VK10#VK_NULL_HANDLE NULL_HANDLE}
+ * - If {@code videoSession} was created with the video codec operation {@link EXTVideoEncodeH264#VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT}, then {@code videoSessionParameters} must not be {@link VK10#VK_NULL_HANDLE NULL_HANDLE}
+ * - If {@code videoSession} was created with the video codec operation {@link EXTVideoEncodeH265#VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT}, then {@code videoSessionParameters} must not be {@link VK10#VK_NULL_HANDLE NULL_HANDLE}
+ * - If {@code videoSessionParameters} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, it must have been created with {@code videoSession} specified in {@link VkVideoSessionParametersCreateInfoKHR}{@code ::videoSession}
*
*
* Valid Usage (Implicit)
@@ -122,13 +148,13 @@ public VkVideoBeginCodingInfoKHR(ByteBuffer container) {
/** the video session object to be bound for the processing of the video commands. */
@NativeType("VkVideoSessionKHR")
public long videoSession() { return nvideoSession(address()); }
- /** {@link VK10#VK_NULL_HANDLE NULL_HANDLE} or a handle of a {@code VkVideoSessionParametersKHR} object to be used for the processing of the video commands. If {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, then no video session parameters apply to this command buffer context. */
+ /** {@link VK10#VK_NULL_HANDLE NULL_HANDLE} or a handle of a {@code VkVideoSessionParametersKHR} object to be used for the processing of the video commands. If {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, then no video session parameters object is bound for the duration of the video coding scope. */
@NativeType("VkVideoSessionParametersKHR")
public long videoSessionParameters() { return nvideoSessionParameters(address()); }
- /** the number of reference slot entries provided in {@code pReferenceSlots}. */
+ /** the number of elements in the {@code pReferenceSlots} array. */
@NativeType("uint32_t")
public int referenceSlotCount() { return nreferenceSlotCount(address()); }
- /** a pointer to an array of {@link VkVideoReferenceSlotInfoKHR} structures specifying reference slots, used within the video command context between this {@link KHRVideoQueue#vkCmdBeginVideoCodingKHR CmdBeginVideoCodingKHR} command and the {@link KHRVideoQueue#vkCmdEndVideoCodingKHR CmdEndVideoCodingKHR} command that follows. Each reference slot provides a slot index and the {@link VkVideoPictureResourceInfoKHR} specifying the reference picture resource bound to this slot index. A slot index must not appear more than once in {@code pReferenceSlots} in a given command. */
+ /** a pointer to an array of {@link VkVideoReferenceSlotInfoKHR} structures specifying the information used to determine the set of bound reference picture resources for the video coding scope and their initial association with DPB slot indices. */
@Nullable
@NativeType("VkVideoReferenceSlotInfoKHR const *")
public VkVideoReferenceSlotInfoKHR.Buffer pReferenceSlots() { return npReferenceSlots(address()); }
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoCapabilitiesKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoCapabilitiesKHR.java
index 874ef6036f..e6fd7b726d 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoCapabilitiesKHR.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoCapabilitiesKHR.java
@@ -16,13 +16,20 @@
import static org.lwjgl.system.MemoryStack.*;
/**
- * Structure specifying parameters of video capabilities.
+ * Structure describing general video capabilities for a video profile.
+ *
+ * Description
+ *
+ * Note:
+ *
+ *
It is common for video compression standards to allow using all reference pictures associated with active DPB slots as active reference pictures, hence for video decode profiles the values returned in {@code maxDpbSlots} and {@code maxActiveReferencePictures} are often equal. Similarly, in case of video decode profiles supporting field pictures the value of {@code maxActiveReferencePictures} often equals maxDpbSlots × 2
.
+ *
*
* Valid Usage (Implicit)
*
*
* - {@code sType} must be {@link KHRVideoQueue#VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR}
- * - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of {@link VkVideoDecodeCapabilitiesKHR}, {@link VkVideoDecodeH264CapabilitiesEXT}, {@link VkVideoDecodeH265CapabilitiesEXT}, {@link VkVideoEncodeCapabilitiesKHR}, {@link VkVideoEncodeH264CapabilitiesEXT}, or {@link VkVideoEncodeH265CapabilitiesEXT}
+ * - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of {@link VkVideoDecodeCapabilitiesKHR}, {@link VkVideoDecodeH264CapabilitiesKHR}, {@link VkVideoDecodeH265CapabilitiesKHR}, {@link VkVideoEncodeCapabilitiesKHR}, {@link VkVideoEncodeH264CapabilitiesEXT}, or {@link VkVideoEncodeH265CapabilitiesEXT}
* - The {@code sType} value of each struct in the {@code pNext} chain must be unique
*
*
@@ -122,25 +129,25 @@ public VkVideoCapabilitiesKHR(ByteBuffer container) {
/** a bitmask of {@code VkVideoCapabilityFlagBitsKHR} specifying capability flags. */
@NativeType("VkVideoCapabilityFlagsKHR")
public int flags() { return nflags(address()); }
- /** the minimum alignment for the input or output bitstream buffer offset. */
+ /** the minimum alignment for bitstream buffer offsets. */
@NativeType("VkDeviceSize")
public long minBitstreamBufferOffsetAlignment() { return nminBitstreamBufferOffsetAlignment(address()); }
- /** the minimum alignment for the input or output bitstream buffer size */
+ /** the minimum alignment for bitstream buffer range sizes. */
@NativeType("VkDeviceSize")
public long minBitstreamBufferSizeAlignment() { return nminBitstreamBufferSizeAlignment(address()); }
/** the granularity at which image access to video picture resources happen. */
public VkExtent2D pictureAccessGranularity() { return npictureAccessGranularity(address()); }
- /** the minimum width and height of the decoded or encoded video. */
+ /** the minimum width and height of the coded frames. */
public VkExtent2D minCodedExtent() { return nminCodedExtent(address()); }
- /** the maximum width and height of the decoded or encoded video. */
+ /** the maximum width and height of the coded frames. */
public VkExtent2D maxCodedExtent() { return nmaxCodedExtent(address()); }
- /** the maximum number of DPB Slots supported by the implementation for a single video session instance. */
+ /** the maximum number of DPB slots supported by a single video session. */
@NativeType("uint32_t")
public int maxDpbSlots() { return nmaxDpbSlots(address()); }
- /** the maximum slots that can be used as Reference Pictures with a single decode or encode operation. */
+ /** the maximum number of active reference pictures a single video coding operation can use. */
@NativeType("uint32_t")
public int maxActiveReferencePictures() { return nmaxActiveReferencePictures(address()); }
- /** a {@link VkExtensionProperties} structure reporting the Video Std header version supported for the {@code codecOperation} requested in {@code vkGetPhysicalDeviceVideoCapabilitiesKHR}{@code ::pVideoProfile}. */
+ /** a {@link VkExtensionProperties} structure reporting the Video Std header name and version supported for the video profile. */
public VkExtensionProperties stdHeaderVersion() { return nstdHeaderVersion(address()); }
/** Sets the specified value to the {@link #sType} field. */
@@ -151,10 +158,10 @@ public VkVideoCapabilitiesKHR(ByteBuffer container) {
public VkVideoCapabilitiesKHR pNext(@NativeType("void *") long value) { npNext(address(), value); return this; }
/** Prepends the specified {@link VkVideoDecodeCapabilitiesKHR} value to the {@code pNext} chain. */
public VkVideoCapabilitiesKHR pNext(VkVideoDecodeCapabilitiesKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
- /** Prepends the specified {@link VkVideoDecodeH264CapabilitiesEXT} value to the {@code pNext} chain. */
- public VkVideoCapabilitiesKHR pNext(VkVideoDecodeH264CapabilitiesEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
- /** Prepends the specified {@link VkVideoDecodeH265CapabilitiesEXT} value to the {@code pNext} chain. */
- public VkVideoCapabilitiesKHR pNext(VkVideoDecodeH265CapabilitiesEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkVideoDecodeH264CapabilitiesKHR} value to the {@code pNext} chain. */
+ public VkVideoCapabilitiesKHR pNext(VkVideoDecodeH264CapabilitiesKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkVideoDecodeH265CapabilitiesKHR} value to the {@code pNext} chain. */
+ public VkVideoCapabilitiesKHR pNext(VkVideoDecodeH265CapabilitiesKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkVideoEncodeCapabilitiesKHR} value to the {@code pNext} chain. */
public VkVideoCapabilitiesKHR pNext(VkVideoEncodeCapabilitiesKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkVideoEncodeH264CapabilitiesEXT} value to the {@code pNext} chain. */
@@ -402,10 +409,10 @@ protected VkVideoCapabilitiesKHR getElementFactory() {
public VkVideoCapabilitiesKHR.Buffer pNext(@NativeType("void *") long value) { VkVideoCapabilitiesKHR.npNext(address(), value); return this; }
/** Prepends the specified {@link VkVideoDecodeCapabilitiesKHR} value to the {@code pNext} chain. */
public VkVideoCapabilitiesKHR.Buffer pNext(VkVideoDecodeCapabilitiesKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
- /** Prepends the specified {@link VkVideoDecodeH264CapabilitiesEXT} value to the {@code pNext} chain. */
- public VkVideoCapabilitiesKHR.Buffer pNext(VkVideoDecodeH264CapabilitiesEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
- /** Prepends the specified {@link VkVideoDecodeH265CapabilitiesEXT} value to the {@code pNext} chain. */
- public VkVideoCapabilitiesKHR.Buffer pNext(VkVideoDecodeH265CapabilitiesEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkVideoDecodeH264CapabilitiesKHR} value to the {@code pNext} chain. */
+ public VkVideoCapabilitiesKHR.Buffer pNext(VkVideoDecodeH264CapabilitiesKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkVideoDecodeH265CapabilitiesKHR} value to the {@code pNext} chain. */
+ public VkVideoCapabilitiesKHR.Buffer pNext(VkVideoDecodeH265CapabilitiesKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkVideoEncodeCapabilitiesKHR} value to the {@code pNext} chain. */
public VkVideoCapabilitiesKHR.Buffer pNext(VkVideoEncodeCapabilitiesKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkVideoEncodeH264CapabilitiesEXT} value to the {@code pNext} chain. */
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoCodingControlInfoKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoCodingControlInfoKHR.java
index f0ddada9e1..d2e12e0999 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoCodingControlInfoKHR.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoCodingControlInfoKHR.java
@@ -16,30 +16,20 @@
import static org.lwjgl.system.MemoryStack.*;
/**
- * Structure specifying parameters of coding control.
- *
- * Description
- *
- * A newly created video session must be reset before use for video decode or encode operations by including {@link KHRVideoQueue#VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR VIDEO_CODING_CONTROL_RESET_BIT_KHR} in {@code flags}. The reset operation returns all session DPB slots to the unused state (see DPB Slot States).
- *
- * For encode sessions, the reset operation returns rate control configuration to implementation default settings.
- *
- * After decode or encode operations are performed on a session, the reset operation may be used to return the video session object to the same initial state as after the reset of a newly created video session. This may be used when different video sequences are processed with the same video session object.
+ * Structure specifying video coding control parameters.
*
* Valid Usage
*
*
- * - {@code flags} must include at least one bit
- * - If the bound video session object is in uninitialized state, then {@code flags} must include {@link KHRVideoQueue#VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR VIDEO_CODING_CONTROL_RESET_BIT_KHR}
- * - If {@code flags} includes {@link KHRVideoEncodeQueue#VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR}, then the {@code pNext} chain must include a valid {@link VkVideoEncodeRateControlInfoKHR} structure
- * - If {@code flags} includes {@link KHRVideoEncodeQueue#VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR}, then the {@code pNext} chain must include a valid {@link VkVideoEncodeRateControlLayerInfoKHR} structure
+ * - If {@code flags} includes {@link KHRVideoEncodeQueue#VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR}, then the {@code pNext} chain must include a {@link VkVideoEncodeRateControlInfoKHR} structure
+ * - If {@code flags} includes {@link KHRVideoEncodeQueue#VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR}, then the {@code pNext} chain must include a {@link VkVideoEncodeRateControlLayerInfoKHR} structure
* - If {@code flags} includes {@link KHRVideoEncodeQueue#VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR}, then it must not also include {@link KHRVideoEncodeQueue#VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR}
- * - If {@code flags} includes {@link KHRVideoEncodeQueue#VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR}, the {@code rateControlMode} member of {@link VkVideoEncodeRateControlInfoKHR} included in the {@code pNext} chain is not {@link KHRVideoEncodeQueue#VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR}, and the bound video session was created with {@link VkVideoProfileInfoKHR}{@code ::videoCodecOperation} set to {@link EXTVideoEncodeH264#VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT}, then the {@code pNext} chain must include a {@link VkVideoEncodeH264RateControlInfoEXT} structure
+ * - If {@code flags} includes {@link KHRVideoEncodeQueue#VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR}, the {@code rateControlMode} member of {@link VkVideoEncodeRateControlInfoKHR} included in the {@code pNext} chain is not {@link KHRVideoEncodeQueue#VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR}, and the bound video session was created with the video codec operation {@link EXTVideoEncodeH264#VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT}, then the {@code pNext} chain must include a {@link VkVideoEncodeH264RateControlInfoEXT} structure
* - If the {@code pNext} chain includes a {@link VkVideoEncodeRateControlInfoKHR}, and {@link VkVideoEncodeRateControlInfoKHR}{@code ::layerCount} is greater than 1, then {@link VkVideoEncodeH264RateControlInfoEXT}{@code ::temporalLayerCount} must be equal to {@code layerCount}
- * - If {@code flags} includes {@link KHRVideoEncodeQueue#VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR} and the bound video session was created with {@link VkVideoProfileInfoKHR}{@code ::videoCodecOperation} set to {@link EXTVideoEncodeH264#VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT}, then the {@code pNext} chain must include a {@link VkVideoEncodeH264RateControlLayerInfoEXT} structure
- * - If {@code flags} includes {@link KHRVideoEncodeQueue#VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR}, the {@code rateControlMode} member of {@link VkVideoEncodeRateControlInfoKHR} included in the {@code pNext} chain is not {@link KHRVideoEncodeQueue#VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR}, and the bound video session was created with {@link VkVideoProfileInfoKHR}{@code ::videoCodecOperation} set to {@link EXTVideoEncodeH265#VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT}, then the {@code pNext} chain must include a {@link VkVideoEncodeH265RateControlInfoEXT} structure
+ * - If {@code flags} includes {@link KHRVideoEncodeQueue#VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR} and the bound video session was created with the video codec operation {@link EXTVideoEncodeH264#VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT}, then the {@code pNext} chain must include a {@link VkVideoEncodeH264RateControlLayerInfoEXT} structure
+ * - If {@code flags} includes {@link KHRVideoEncodeQueue#VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR}, the {@code rateControlMode} member of {@link VkVideoEncodeRateControlInfoKHR} included in the {@code pNext} chain is not {@link KHRVideoEncodeQueue#VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR}, and the bound video session was created with the video codec operation {@link EXTVideoEncodeH265#VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT}, then the {@code pNext} chain must include a {@link VkVideoEncodeH265RateControlInfoEXT} structure
* - If the {@code pNext} chain includes a {@link VkVideoEncodeRateControlInfoKHR}, and {@link VkVideoEncodeRateControlInfoKHR}{@code ::layerCount} is greater than 1, then {@link VkVideoEncodeH265RateControlInfoEXT}{@code ::subLayerCount} must be equal to {@code layerCount}
- * - If {@code flags} includes {@link KHRVideoEncodeQueue#VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR} and the bound video session was created with {@link VkVideoProfileInfoKHR}{@code ::videoCodecOperation} set to {@link EXTVideoEncodeH265#VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT}, then the {@code pNext} chain must include a {@link VkVideoEncodeH265RateControlLayerInfoEXT} structure
+ * - If {@code flags} includes {@link KHRVideoEncodeQueue#VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR} and the bound video session was created with the video codec operation {@link EXTVideoEncodeH265#VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT}, then the {@code pNext} chain must include a {@link VkVideoEncodeH265RateControlLayerInfoEXT} structure
*
*
* Valid Usage (Implicit)
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeCapabilitiesKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeCapabilitiesKHR.java
index 53f7a9854b..7e5b75171f 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeCapabilitiesKHR.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeCapabilitiesKHR.java
@@ -16,7 +16,7 @@
import static org.lwjgl.system.MemoryStack.*;
/**
- * Structure specifying decode capabilities.
+ * Structure describing general video decode capabilities for a video profile.
*
* Valid Usage (Implicit)
*
@@ -81,7 +81,7 @@ public VkVideoDecodeCapabilitiesKHR(ByteBuffer container) {
/** {@code NULL} or a pointer to a structure extending this structure. */
@NativeType("void *")
public long pNext() { return npNext(address()); }
- /** a bitmask of {@code VkVideoDecodeCapabilityFlagBitsKHR} describing supported decoding features. */
+ /** a bitmask of {@code VkVideoDecodeCapabilityFlagBitsKHR} describing the supported video decoding capabilities. */
@NativeType("VkVideoDecodeCapabilityFlagsKHR")
public int flags() { return nflags(address()); }
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264CapabilitiesEXT.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264CapabilitiesKHR.java
similarity index 60%
rename from modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264CapabilitiesEXT.java
rename to modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264CapabilitiesKHR.java
index a5f1fdec4c..5ad301a1ec 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264CapabilitiesEXT.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264CapabilitiesKHR.java
@@ -18,12 +18,12 @@
import org.lwjgl.vulkan.video.*;
/**
- * Structure specifying H.264 decode capabilities.
+ * Structure describing H.264 decode capabilities.
*
* Valid Usage (Implicit)
*
*
- * - {@code sType} must be {@link EXTVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT}
+ * - {@code sType} must be {@link KHRVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR}
*
*
* See Also
@@ -33,14 +33,14 @@
* Layout
*
*
- * struct VkVideoDecodeH264CapabilitiesEXT {
+ * struct VkVideoDecodeH264CapabilitiesKHR {
* VkStructureType {@link #sType};
* void * {@link #pNext};
- * StdVideoH264LevelIdc maxLevelIdc;
+ * StdVideoH264LevelIdc {@link #maxLevelIdc};
* {@link VkOffset2D VkOffset2D} {@link #fieldOffsetGranularity};
* }
*/
-public class VkVideoDecodeH264CapabilitiesEXT extends Struct implements NativeResource {
+public class VkVideoDecodeH264CapabilitiesKHR extends Struct implements NativeResource {
/** The struct size in bytes. */
public static final int SIZEOF;
@@ -73,12 +73,12 @@ public class VkVideoDecodeH264CapabilitiesEXT extends Struct implements NativeRe
}
/**
- * Creates a {@code VkVideoDecodeH264CapabilitiesEXT} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * Creates a {@code VkVideoDecodeH264CapabilitiesKHR} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
* visible to the struct instance and vice versa.
*
* The created instance holds a strong reference to the container object.
*/
- public VkVideoDecodeH264CapabilitiesEXT(ByteBuffer container) {
+ public VkVideoDecodeH264CapabilitiesKHR(ByteBuffer container) {
super(memAddress(container), __checkContainer(container, SIZEOF));
}
@@ -91,21 +91,21 @@ public VkVideoDecodeH264CapabilitiesEXT(ByteBuffer container) {
/** {@code NULL} or a pointer to a structure extending this structure. */
@NativeType("void *")
public long pNext() { return npNext(address()); }
- /** @return the value of the {@code maxLevelIdc} field. */
+ /** a {@code StdVideoH264LevelIdc} value specifying the maximum H.264 level supported by the profile, as defined in section A.3 of the ITU-T H.264 Specification. */
@NativeType("StdVideoH264LevelIdc")
public int maxLevelIdc() { return nmaxLevelIdc(address()); }
- /** - if Interlaced Video Content is supported, the maximum field offset granularity supported for the picture resource. */
+ /** the minimum alignment for {@link VkVideoPictureResourceInfoKHR}{@code ::codedOffset} specified for a video picture resource when using the picture layout {@link KHRVideoDecodeH264#VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR}. */
public VkOffset2D fieldOffsetGranularity() { return nfieldOffsetGranularity(address()); }
/** Sets the specified value to the {@link #sType} field. */
- public VkVideoDecodeH264CapabilitiesEXT sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT} value to the {@link #sType} field. */
- public VkVideoDecodeH264CapabilitiesEXT sType$Default() { return sType(EXTVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT); }
+ public VkVideoDecodeH264CapabilitiesKHR sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR} value to the {@link #sType} field. */
+ public VkVideoDecodeH264CapabilitiesKHR sType$Default() { return sType(KHRVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR); }
/** Sets the specified value to the {@link #pNext} field. */
- public VkVideoDecodeH264CapabilitiesEXT pNext(@NativeType("void *") long value) { npNext(address(), value); return this; }
+ public VkVideoDecodeH264CapabilitiesKHR pNext(@NativeType("void *") long value) { npNext(address(), value); return this; }
/** Initializes this struct with the specified values. */
- public VkVideoDecodeH264CapabilitiesEXT set(
+ public VkVideoDecodeH264CapabilitiesKHR set(
int sType,
long pNext
) {
@@ -122,151 +122,151 @@ public VkVideoDecodeH264CapabilitiesEXT set(
*
* @return this struct
*/
- public VkVideoDecodeH264CapabilitiesEXT set(VkVideoDecodeH264CapabilitiesEXT src) {
+ public VkVideoDecodeH264CapabilitiesKHR set(VkVideoDecodeH264CapabilitiesKHR src) {
memCopy(src.address(), address(), SIZEOF);
return this;
}
// -----------------------------------
- /** Returns a new {@code VkVideoDecodeH264CapabilitiesEXT} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH264CapabilitiesEXT malloc() {
- return wrap(VkVideoDecodeH264CapabilitiesEXT.class, nmemAllocChecked(SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH264CapabilitiesKHR} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH264CapabilitiesKHR malloc() {
+ return wrap(VkVideoDecodeH264CapabilitiesKHR.class, nmemAllocChecked(SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH264CapabilitiesEXT} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH264CapabilitiesEXT calloc() {
- return wrap(VkVideoDecodeH264CapabilitiesEXT.class, nmemCallocChecked(1, SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH264CapabilitiesKHR} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH264CapabilitiesKHR calloc() {
+ return wrap(VkVideoDecodeH264CapabilitiesKHR.class, nmemCallocChecked(1, SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH264CapabilitiesEXT} instance allocated with {@link BufferUtils}. */
- public static VkVideoDecodeH264CapabilitiesEXT create() {
+ /** Returns a new {@code VkVideoDecodeH264CapabilitiesKHR} instance allocated with {@link BufferUtils}. */
+ public static VkVideoDecodeH264CapabilitiesKHR create() {
ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
- return wrap(VkVideoDecodeH264CapabilitiesEXT.class, memAddress(container), container);
+ return wrap(VkVideoDecodeH264CapabilitiesKHR.class, memAddress(container), container);
}
- /** Returns a new {@code VkVideoDecodeH264CapabilitiesEXT} instance for the specified memory address. */
- public static VkVideoDecodeH264CapabilitiesEXT create(long address) {
- return wrap(VkVideoDecodeH264CapabilitiesEXT.class, address);
+ /** Returns a new {@code VkVideoDecodeH264CapabilitiesKHR} instance for the specified memory address. */
+ public static VkVideoDecodeH264CapabilitiesKHR create(long address) {
+ return wrap(VkVideoDecodeH264CapabilitiesKHR.class, address);
}
/** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH264CapabilitiesEXT createSafe(long address) {
- return address == NULL ? null : wrap(VkVideoDecodeH264CapabilitiesEXT.class, address);
+ public static VkVideoDecodeH264CapabilitiesKHR createSafe(long address) {
+ return address == NULL ? null : wrap(VkVideoDecodeH264CapabilitiesKHR.class, address);
}
/**
- * Returns a new {@link VkVideoDecodeH264CapabilitiesEXT.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH264CapabilitiesKHR.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264CapabilitiesEXT.Buffer malloc(int capacity) {
+ public static VkVideoDecodeH264CapabilitiesKHR.Buffer malloc(int capacity) {
return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH264CapabilitiesEXT.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH264CapabilitiesKHR.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264CapabilitiesEXT.Buffer calloc(int capacity) {
+ public static VkVideoDecodeH264CapabilitiesKHR.Buffer calloc(int capacity) {
return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH264CapabilitiesEXT.Buffer} instance allocated with {@link BufferUtils}.
+ * Returns a new {@link VkVideoDecodeH264CapabilitiesKHR.Buffer} instance allocated with {@link BufferUtils}.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264CapabilitiesEXT.Buffer create(int capacity) {
+ public static VkVideoDecodeH264CapabilitiesKHR.Buffer create(int capacity) {
ByteBuffer container = __create(capacity, SIZEOF);
return wrap(Buffer.class, memAddress(container), capacity, container);
}
/**
- * Create a {@link VkVideoDecodeH264CapabilitiesEXT.Buffer} instance at the specified memory.
+ * Create a {@link VkVideoDecodeH264CapabilitiesKHR.Buffer} instance at the specified memory.
*
* @param address the memory address
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264CapabilitiesEXT.Buffer create(long address, int capacity) {
+ public static VkVideoDecodeH264CapabilitiesKHR.Buffer create(long address, int capacity) {
return wrap(Buffer.class, address, capacity);
}
/** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH264CapabilitiesEXT.Buffer createSafe(long address, int capacity) {
+ public static VkVideoDecodeH264CapabilitiesKHR.Buffer createSafe(long address, int capacity) {
return address == NULL ? null : wrap(Buffer.class, address, capacity);
}
/**
- * Returns a new {@code VkVideoDecodeH264CapabilitiesEXT} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@code VkVideoDecodeH264CapabilitiesKHR} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH264CapabilitiesEXT malloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH264CapabilitiesEXT.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ public static VkVideoDecodeH264CapabilitiesKHR malloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH264CapabilitiesKHR.class, stack.nmalloc(ALIGNOF, SIZEOF));
}
/**
- * Returns a new {@code VkVideoDecodeH264CapabilitiesEXT} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@code VkVideoDecodeH264CapabilitiesKHR} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH264CapabilitiesEXT calloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH264CapabilitiesEXT.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ public static VkVideoDecodeH264CapabilitiesKHR calloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH264CapabilitiesKHR.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
}
/**
- * Returns a new {@link VkVideoDecodeH264CapabilitiesEXT.Buffer} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@link VkVideoDecodeH264CapabilitiesKHR.Buffer} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264CapabilitiesEXT.Buffer malloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH264CapabilitiesKHR.Buffer malloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH264CapabilitiesEXT.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@link VkVideoDecodeH264CapabilitiesKHR.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264CapabilitiesEXT.Buffer calloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH264CapabilitiesKHR.Buffer calloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
}
// -----------------------------------
/** Unsafe version of {@link #sType}. */
- public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264CapabilitiesEXT.STYPE); }
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264CapabilitiesKHR.STYPE); }
/** Unsafe version of {@link #pNext}. */
- public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH264CapabilitiesEXT.PNEXT); }
+ public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH264CapabilitiesKHR.PNEXT); }
/** Unsafe version of {@link #maxLevelIdc}. */
- public static int nmaxLevelIdc(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264CapabilitiesEXT.MAXLEVELIDC); }
+ public static int nmaxLevelIdc(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264CapabilitiesKHR.MAXLEVELIDC); }
/** Unsafe version of {@link #fieldOffsetGranularity}. */
- public static VkOffset2D nfieldOffsetGranularity(long struct) { return VkOffset2D.create(struct + VkVideoDecodeH264CapabilitiesEXT.FIELDOFFSETGRANULARITY); }
+ public static VkOffset2D nfieldOffsetGranularity(long struct) { return VkOffset2D.create(struct + VkVideoDecodeH264CapabilitiesKHR.FIELDOFFSETGRANULARITY); }
/** Unsafe version of {@link #sType(int) sType}. */
- public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264CapabilitiesEXT.STYPE, value); }
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264CapabilitiesKHR.STYPE, value); }
/** Unsafe version of {@link #pNext(long) pNext}. */
- public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH264CapabilitiesEXT.PNEXT, value); }
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH264CapabilitiesKHR.PNEXT, value); }
// -----------------------------------
- /** An array of {@link VkVideoDecodeH264CapabilitiesEXT} structs. */
- public static class Buffer extends StructBuffer implements NativeResource {
+ /** An array of {@link VkVideoDecodeH264CapabilitiesKHR} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
- private static final VkVideoDecodeH264CapabilitiesEXT ELEMENT_FACTORY = VkVideoDecodeH264CapabilitiesEXT.create(-1L);
+ private static final VkVideoDecodeH264CapabilitiesKHR ELEMENT_FACTORY = VkVideoDecodeH264CapabilitiesKHR.create(-1L);
/**
- * Creates a new {@code VkVideoDecodeH264CapabilitiesEXT.Buffer} instance backed by the specified container.
+ * Creates a new {@code VkVideoDecodeH264CapabilitiesKHR.Buffer} instance backed by the specified container.
*
* Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
* will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
- * by {@link VkVideoDecodeH264CapabilitiesEXT#SIZEOF}, and its mark will be undefined.
+ * by {@link VkVideoDecodeH264CapabilitiesKHR#SIZEOF}, and its mark will be undefined.
*
* The created buffer instance holds a strong reference to the container object.
*/
@@ -288,28 +288,28 @@ protected Buffer self() {
}
@Override
- protected VkVideoDecodeH264CapabilitiesEXT getElementFactory() {
+ protected VkVideoDecodeH264CapabilitiesKHR getElementFactory() {
return ELEMENT_FACTORY;
}
- /** @return the value of the {@link VkVideoDecodeH264CapabilitiesEXT#sType} field. */
+ /** @return the value of the {@link VkVideoDecodeH264CapabilitiesKHR#sType} field. */
@NativeType("VkStructureType")
- public int sType() { return VkVideoDecodeH264CapabilitiesEXT.nsType(address()); }
- /** @return the value of the {@link VkVideoDecodeH264CapabilitiesEXT#pNext} field. */
+ public int sType() { return VkVideoDecodeH264CapabilitiesKHR.nsType(address()); }
+ /** @return the value of the {@link VkVideoDecodeH264CapabilitiesKHR#pNext} field. */
@NativeType("void *")
- public long pNext() { return VkVideoDecodeH264CapabilitiesEXT.npNext(address()); }
- /** @return the value of the {@code maxLevelIdc} field. */
+ public long pNext() { return VkVideoDecodeH264CapabilitiesKHR.npNext(address()); }
+ /** @return the value of the {@link VkVideoDecodeH264CapabilitiesKHR#maxLevelIdc} field. */
@NativeType("StdVideoH264LevelIdc")
- public int maxLevelIdc() { return VkVideoDecodeH264CapabilitiesEXT.nmaxLevelIdc(address()); }
- /** @return a {@link VkOffset2D} view of the {@link VkVideoDecodeH264CapabilitiesEXT#fieldOffsetGranularity} field. */
- public VkOffset2D fieldOffsetGranularity() { return VkVideoDecodeH264CapabilitiesEXT.nfieldOffsetGranularity(address()); }
-
- /** Sets the specified value to the {@link VkVideoDecodeH264CapabilitiesEXT#sType} field. */
- public VkVideoDecodeH264CapabilitiesEXT.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH264CapabilitiesEXT.nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT} value to the {@link VkVideoDecodeH264CapabilitiesEXT#sType} field. */
- public VkVideoDecodeH264CapabilitiesEXT.Buffer sType$Default() { return sType(EXTVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT); }
- /** Sets the specified value to the {@link VkVideoDecodeH264CapabilitiesEXT#pNext} field. */
- public VkVideoDecodeH264CapabilitiesEXT.Buffer pNext(@NativeType("void *") long value) { VkVideoDecodeH264CapabilitiesEXT.npNext(address(), value); return this; }
+ public int maxLevelIdc() { return VkVideoDecodeH264CapabilitiesKHR.nmaxLevelIdc(address()); }
+ /** @return a {@link VkOffset2D} view of the {@link VkVideoDecodeH264CapabilitiesKHR#fieldOffsetGranularity} field. */
+ public VkOffset2D fieldOffsetGranularity() { return VkVideoDecodeH264CapabilitiesKHR.nfieldOffsetGranularity(address()); }
+
+ /** Sets the specified value to the {@link VkVideoDecodeH264CapabilitiesKHR#sType} field. */
+ public VkVideoDecodeH264CapabilitiesKHR.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH264CapabilitiesKHR.nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR} value to the {@link VkVideoDecodeH264CapabilitiesKHR#sType} field. */
+ public VkVideoDecodeH264CapabilitiesKHR.Buffer sType$Default() { return sType(KHRVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR); }
+ /** Sets the specified value to the {@link VkVideoDecodeH264CapabilitiesKHR#pNext} field. */
+ public VkVideoDecodeH264CapabilitiesKHR.Buffer pNext(@NativeType("void *") long value) { VkVideoDecodeH264CapabilitiesKHR.npNext(address(), value); return this; }
}
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264DpbSlotInfoEXT.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264DpbSlotInfoEXT.java
deleted file mode 100644
index 51329ab181..0000000000
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264DpbSlotInfoEXT.java
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- * Copyright LWJGL. All rights reserved.
- * License terms: https://www.lwjgl.org/license
- * MACHINE GENERATED FILE, DO NOT EDIT
- */
-package org.lwjgl.vulkan;
-
-import javax.annotation.*;
-
-import java.nio.*;
-
-import org.lwjgl.*;
-import org.lwjgl.system.*;
-
-import static org.lwjgl.system.Checks.*;
-import static org.lwjgl.system.MemoryUtil.*;
-import static org.lwjgl.system.MemoryStack.*;
-
-import org.lwjgl.vulkan.video.*;
-
-/**
- * Structure specifies H.264 decode DPB picture information.
- *
- * Valid Usage (Implicit)
- *
- *
- * - {@code sType} must be {@link EXTVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT}
- * - {@code pStdReferenceInfo} must be a valid pointer to a valid {@code StdVideoDecodeH264ReferenceInfo} value
- *
- *
- * Layout
- *
- *
- * struct VkVideoDecodeH264DpbSlotInfoEXT {
- * VkStructureType {@link #sType};
- * void const * pNext;
- * {@link StdVideoDecodeH264ReferenceInfo StdVideoDecodeH264ReferenceInfo} const * {@link #pStdReferenceInfo};
- * }
- */
-public class VkVideoDecodeH264DpbSlotInfoEXT extends Struct implements NativeResource {
-
- /** The struct size in bytes. */
- public static final int SIZEOF;
-
- /** The struct alignment in bytes. */
- public static final int ALIGNOF;
-
- /** The struct member offsets. */
- public static final int
- STYPE,
- PNEXT,
- PSTDREFERENCEINFO;
-
- static {
- Layout layout = __struct(
- __member(4),
- __member(POINTER_SIZE),
- __member(POINTER_SIZE)
- );
-
- SIZEOF = layout.getSize();
- ALIGNOF = layout.getAlignment();
-
- STYPE = layout.offsetof(0);
- PNEXT = layout.offsetof(1);
- PSTDREFERENCEINFO = layout.offsetof(2);
- }
-
- /**
- * Creates a {@code VkVideoDecodeH264DpbSlotInfoEXT} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
- * visible to the struct instance and vice versa.
- *
- * The created instance holds a strong reference to the container object.
- */
- public VkVideoDecodeH264DpbSlotInfoEXT(ByteBuffer container) {
- super(memAddress(container), __checkContainer(container, SIZEOF));
- }
-
- @Override
- public int sizeof() { return SIZEOF; }
-
- /** the type of this structure. */
- @NativeType("VkStructureType")
- public int sType() { return nsType(address()); }
- /** @return the value of the {@code pNext} field. */
- @NativeType("void const *")
- public long pNext() { return npNext(address()); }
- /** a pointer to a {@code StdVideoDecodeH264ReferenceInfo} structure specifying the codec standard specific picture reference information from the H.264 specification. */
- @NativeType("StdVideoDecodeH264ReferenceInfo const *")
- public StdVideoDecodeH264ReferenceInfo pStdReferenceInfo() { return npStdReferenceInfo(address()); }
-
- /** Sets the specified value to the {@link #sType} field. */
- public VkVideoDecodeH264DpbSlotInfoEXT sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT} value to the {@link #sType} field. */
- public VkVideoDecodeH264DpbSlotInfoEXT sType$Default() { return sType(EXTVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT); }
- /** Sets the specified value to the {@code pNext} field. */
- public VkVideoDecodeH264DpbSlotInfoEXT pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
- /** Sets the address of the specified {@link StdVideoDecodeH264ReferenceInfo} to the {@link #pStdReferenceInfo} field. */
- public VkVideoDecodeH264DpbSlotInfoEXT pStdReferenceInfo(@NativeType("StdVideoDecodeH264ReferenceInfo const *") StdVideoDecodeH264ReferenceInfo value) { npStdReferenceInfo(address(), value); return this; }
-
- /** Initializes this struct with the specified values. */
- public VkVideoDecodeH264DpbSlotInfoEXT set(
- int sType,
- long pNext,
- StdVideoDecodeH264ReferenceInfo pStdReferenceInfo
- ) {
- sType(sType);
- pNext(pNext);
- pStdReferenceInfo(pStdReferenceInfo);
-
- return this;
- }
-
- /**
- * Copies the specified struct data to this struct.
- *
- * @param src the source struct
- *
- * @return this struct
- */
- public VkVideoDecodeH264DpbSlotInfoEXT set(VkVideoDecodeH264DpbSlotInfoEXT src) {
- memCopy(src.address(), address(), SIZEOF);
- return this;
- }
-
- // -----------------------------------
-
- /** Returns a new {@code VkVideoDecodeH264DpbSlotInfoEXT} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH264DpbSlotInfoEXT malloc() {
- return wrap(VkVideoDecodeH264DpbSlotInfoEXT.class, nmemAllocChecked(SIZEOF));
- }
-
- /** Returns a new {@code VkVideoDecodeH264DpbSlotInfoEXT} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH264DpbSlotInfoEXT calloc() {
- return wrap(VkVideoDecodeH264DpbSlotInfoEXT.class, nmemCallocChecked(1, SIZEOF));
- }
-
- /** Returns a new {@code VkVideoDecodeH264DpbSlotInfoEXT} instance allocated with {@link BufferUtils}. */
- public static VkVideoDecodeH264DpbSlotInfoEXT create() {
- ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
- return wrap(VkVideoDecodeH264DpbSlotInfoEXT.class, memAddress(container), container);
- }
-
- /** Returns a new {@code VkVideoDecodeH264DpbSlotInfoEXT} instance for the specified memory address. */
- public static VkVideoDecodeH264DpbSlotInfoEXT create(long address) {
- return wrap(VkVideoDecodeH264DpbSlotInfoEXT.class, address);
- }
-
- /** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
- @Nullable
- public static VkVideoDecodeH264DpbSlotInfoEXT createSafe(long address) {
- return address == NULL ? null : wrap(VkVideoDecodeH264DpbSlotInfoEXT.class, address);
- }
-
- /**
- * Returns a new {@link VkVideoDecodeH264DpbSlotInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
- *
- * @param capacity the buffer capacity
- */
- public static VkVideoDecodeH264DpbSlotInfoEXT.Buffer malloc(int capacity) {
- return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
- }
-
- /**
- * Returns a new {@link VkVideoDecodeH264DpbSlotInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
- *
- * @param capacity the buffer capacity
- */
- public static VkVideoDecodeH264DpbSlotInfoEXT.Buffer calloc(int capacity) {
- return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
- }
-
- /**
- * Returns a new {@link VkVideoDecodeH264DpbSlotInfoEXT.Buffer} instance allocated with {@link BufferUtils}.
- *
- * @param capacity the buffer capacity
- */
- public static VkVideoDecodeH264DpbSlotInfoEXT.Buffer create(int capacity) {
- ByteBuffer container = __create(capacity, SIZEOF);
- return wrap(Buffer.class, memAddress(container), capacity, container);
- }
-
- /**
- * Create a {@link VkVideoDecodeH264DpbSlotInfoEXT.Buffer} instance at the specified memory.
- *
- * @param address the memory address
- * @param capacity the buffer capacity
- */
- public static VkVideoDecodeH264DpbSlotInfoEXT.Buffer create(long address, int capacity) {
- return wrap(Buffer.class, address, capacity);
- }
-
- /** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
- @Nullable
- public static VkVideoDecodeH264DpbSlotInfoEXT.Buffer createSafe(long address, int capacity) {
- return address == NULL ? null : wrap(Buffer.class, address, capacity);
- }
-
- /**
- * Returns a new {@code VkVideoDecodeH264DpbSlotInfoEXT} instance allocated on the specified {@link MemoryStack}.
- *
- * @param stack the stack from which to allocate
- */
- public static VkVideoDecodeH264DpbSlotInfoEXT malloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH264DpbSlotInfoEXT.class, stack.nmalloc(ALIGNOF, SIZEOF));
- }
-
- /**
- * Returns a new {@code VkVideoDecodeH264DpbSlotInfoEXT} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
- *
- * @param stack the stack from which to allocate
- */
- public static VkVideoDecodeH264DpbSlotInfoEXT calloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH264DpbSlotInfoEXT.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
- }
-
- /**
- * Returns a new {@link VkVideoDecodeH264DpbSlotInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack}.
- *
- * @param stack the stack from which to allocate
- * @param capacity the buffer capacity
- */
- public static VkVideoDecodeH264DpbSlotInfoEXT.Buffer malloc(int capacity, MemoryStack stack) {
- return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
- }
-
- /**
- * Returns a new {@link VkVideoDecodeH264DpbSlotInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
- *
- * @param stack the stack from which to allocate
- * @param capacity the buffer capacity
- */
- public static VkVideoDecodeH264DpbSlotInfoEXT.Buffer calloc(int capacity, MemoryStack stack) {
- return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
- }
-
- // -----------------------------------
-
- /** Unsafe version of {@link #sType}. */
- public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264DpbSlotInfoEXT.STYPE); }
- /** Unsafe version of {@link #pNext}. */
- public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH264DpbSlotInfoEXT.PNEXT); }
- /** Unsafe version of {@link #pStdReferenceInfo}. */
- public static StdVideoDecodeH264ReferenceInfo npStdReferenceInfo(long struct) { return StdVideoDecodeH264ReferenceInfo.create(memGetAddress(struct + VkVideoDecodeH264DpbSlotInfoEXT.PSTDREFERENCEINFO)); }
-
- /** Unsafe version of {@link #sType(int) sType}. */
- public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264DpbSlotInfoEXT.STYPE, value); }
- /** Unsafe version of {@link #pNext(long) pNext}. */
- public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH264DpbSlotInfoEXT.PNEXT, value); }
- /** Unsafe version of {@link #pStdReferenceInfo(StdVideoDecodeH264ReferenceInfo) pStdReferenceInfo}. */
- public static void npStdReferenceInfo(long struct, StdVideoDecodeH264ReferenceInfo value) { memPutAddress(struct + VkVideoDecodeH264DpbSlotInfoEXT.PSTDREFERENCEINFO, value.address()); }
-
- /**
- * Validates pointer members that should not be {@code NULL}.
- *
- * @param struct the struct to validate
- */
- public static void validate(long struct) {
- check(memGetAddress(struct + VkVideoDecodeH264DpbSlotInfoEXT.PSTDREFERENCEINFO));
- }
-
- // -----------------------------------
-
- /** An array of {@link VkVideoDecodeH264DpbSlotInfoEXT} structs. */
- public static class Buffer extends StructBuffer implements NativeResource {
-
- private static final VkVideoDecodeH264DpbSlotInfoEXT ELEMENT_FACTORY = VkVideoDecodeH264DpbSlotInfoEXT.create(-1L);
-
- /**
- * Creates a new {@code VkVideoDecodeH264DpbSlotInfoEXT.Buffer} instance backed by the specified container.
- *
- * Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
- * will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
- * by {@link VkVideoDecodeH264DpbSlotInfoEXT#SIZEOF}, and its mark will be undefined.
- *
- * The created buffer instance holds a strong reference to the container object.
- */
- public Buffer(ByteBuffer container) {
- super(container, container.remaining() / SIZEOF);
- }
-
- public Buffer(long address, int cap) {
- super(address, null, -1, 0, cap, cap);
- }
-
- Buffer(long address, @Nullable ByteBuffer container, int mark, int pos, int lim, int cap) {
- super(address, container, mark, pos, lim, cap);
- }
-
- @Override
- protected Buffer self() {
- return this;
- }
-
- @Override
- protected VkVideoDecodeH264DpbSlotInfoEXT getElementFactory() {
- return ELEMENT_FACTORY;
- }
-
- /** @return the value of the {@link VkVideoDecodeH264DpbSlotInfoEXT#sType} field. */
- @NativeType("VkStructureType")
- public int sType() { return VkVideoDecodeH264DpbSlotInfoEXT.nsType(address()); }
- /** @return the value of the {@code pNext} field. */
- @NativeType("void const *")
- public long pNext() { return VkVideoDecodeH264DpbSlotInfoEXT.npNext(address()); }
- /** @return a {@link StdVideoDecodeH264ReferenceInfo} view of the struct pointed to by the {@link VkVideoDecodeH264DpbSlotInfoEXT#pStdReferenceInfo} field. */
- @NativeType("StdVideoDecodeH264ReferenceInfo const *")
- public StdVideoDecodeH264ReferenceInfo pStdReferenceInfo() { return VkVideoDecodeH264DpbSlotInfoEXT.npStdReferenceInfo(address()); }
-
- /** Sets the specified value to the {@link VkVideoDecodeH264DpbSlotInfoEXT#sType} field. */
- public VkVideoDecodeH264DpbSlotInfoEXT.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH264DpbSlotInfoEXT.nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT} value to the {@link VkVideoDecodeH264DpbSlotInfoEXT#sType} field. */
- public VkVideoDecodeH264DpbSlotInfoEXT.Buffer sType$Default() { return sType(EXTVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT); }
- /** Sets the specified value to the {@code pNext} field. */
- public VkVideoDecodeH264DpbSlotInfoEXT.Buffer pNext(@NativeType("void const *") long value) { VkVideoDecodeH264DpbSlotInfoEXT.npNext(address(), value); return this; }
- /** Sets the address of the specified {@link StdVideoDecodeH264ReferenceInfo} to the {@link VkVideoDecodeH264DpbSlotInfoEXT#pStdReferenceInfo} field. */
- public VkVideoDecodeH264DpbSlotInfoEXT.Buffer pStdReferenceInfo(@NativeType("StdVideoDecodeH264ReferenceInfo const *") StdVideoDecodeH264ReferenceInfo value) { VkVideoDecodeH264DpbSlotInfoEXT.npStdReferenceInfo(address(), value); return this; }
-
- }
-
-}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264DpbSlotInfoKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264DpbSlotInfoKHR.java
new file mode 100644
index 0000000000..008367ea5d
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264DpbSlotInfoKHR.java
@@ -0,0 +1,365 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package org.lwjgl.vulkan;
+
+import javax.annotation.*;
+
+import java.nio.*;
+
+import org.lwjgl.*;
+import org.lwjgl.system.*;
+
+import static org.lwjgl.system.Checks.*;
+import static org.lwjgl.system.MemoryUtil.*;
+import static org.lwjgl.system.MemoryStack.*;
+
+import org.lwjgl.vulkan.video.*;
+
+/**
+ * Structure specifies H.264 decode DPB picture information.
+ *
+ * Description
+ *
+ * This structure is specified in the {@code pNext} chain of {@link VkVideoDecodeInfoKHR}{@code ::pSetupReferenceSlot}, if not {@code NULL}, and the {@code pNext} chain of the elements of {@link VkVideoDecodeInfoKHR}{@code ::pReferenceSlots} to specify the codec-specific reference picture information for an H.264 decode operation.
+ *
+ *
+ * - Active Reference Picture Information
+ *
+ * - If neither {@code pStdReferenceInfo→flags.top_field_flag} nor {@code pStdReferenceInfo→flags.bottom_field_flag} is set, then the picture is added as a frame reference to the list of active reference pictures.
+ * - If {@code pStdReferenceInfo→flags.top_field_flag} is set, then the picture is added as a top field reference to the list of active reference pictures.
+ * - If {@code pStdReferenceInfo→flags.bottom_field_flag} is set, then the picture is added as a bottom field reference to the list of active reference pictures.
+ * - For each added reference picture, the corresponding image subregion used is determined according to the H.264 Decode Picture Data Access section.
+ * - Each added reference picture is associated with the DPB slot index specified in the {@code slotIndex} member of the corresponding element of {@link VkVideoDecodeInfoKHR}{@code ::pReferenceSlots}.
+ * - Each added reference picture is associated with the H.264 reference information provided in {@code pStdReferenceInfo}.
+ *
+ *
+ *
+ * Note
+ *
+ *
When both the top and bottom field of an interlaced frame currently associated with a DPB slot is intended to be used as an active reference picture and both fields are stored in the same image subregion (which is the case when using {@link KHRVideoDecodeH264#VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR} which stores the two fields at even and odd scanlines of the same image subregion), both references have to be provided through a single {@link VkVideoReferenceSlotInfoKHR} structure that has both {@code flags.top_field_flag} and {@code flags.bottom_field_flag} set in the {@code StdVideoDecodeH264ReferenceInfo} structure pointed to by the {@code pStdReferenceInfo} member of the {@link VkVideoDecodeH264DpbSlotInfoKHR} structure included in the corresponding {@link VkVideoReferenceSlotInfoKHR} structure’s {@code pNext} chain. However, this approach can only be used when both fields are stored in the same image subregion. If that is not the case (e.g. when using {@link KHRVideoDecodeH264#VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR} which requires separate {@code codedOffset} values for the two fields and also allows storing the two fields of a frame in separate image layers or entirely separate images), then a separate {@link VkVideoReferenceSlotInfoKHR} structure needs to be provided for referencing the two fields, each only setting one of {@code flags.top_field_flag} or {@code flags.bottom_field_flag}, and providing the appropriate video picture resource information in {@link VkVideoReferenceSlotInfoKHR}{@code ::pPictureResource}.
+ *
+ *
+ *
+ * - Reconstructed Picture Information
+ *
+ * - If neither {@code pStdReferenceInfo→flags.top_field_flag} nor {@code pStdReferenceInfo→flags.bottom_field_flag} is set, then the picture represents a frame.
+ * - If {@code pStdReferenceInfo→flags.top_field_flag} is set, then the picture represents a field, specifically, the top field of the frame.
+ * - If {@code pStdReferenceInfo→flags.bottom_field_flag} is set, then the picture represents a field, specifically, the bottom field of the frame.
+ * - The image subregion used is determined according to the H.264 Decode Picture Data Access section.
+ * - The reconstructed picture is used to activate the DPB slot with the index specified in {@link VkVideoDecodeInfoKHR}{@code ::pSetupReferenceSlot→slotIndex}.
+ * - The reconstructed picture is associated with the H.264 reference information provided in {@code pStdReferenceInfo}.
+ *
+ *
+ *
+ *
+ * - Std Reference Information
+ *
+ * - {@code flags.top_field_flag} is used to indicate whether the reference is used as top field reference;
+ * - {@code flags.bottom_field_flag} is used to indicate whether the reference is used as bottom field reference;
+ * - {@code flags.used_for_long_term_reference} is used to indicate whether the picture is marked as “used for long-term reference” as defined in section 8.2.5.1 of the ITU-T H.264 Specification;
+ * - {@code flags.is_non_existing} is used to indicate whether the picture is marked as “non-existing” as defined in section 8.2.5.2 of the ITU-T H.264 Specification;
+ * - all other members are interpreted as defined in section 8.2 of the ITU-T H.264 Specification.
+ *
+ *
+ *
+ * Valid Usage (Implicit)
+ *
+ *
+ * - {@code sType} must be {@link KHRVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR}
+ * - {@code pStdReferenceInfo} must be a valid pointer to a valid {@code StdVideoDecodeH264ReferenceInfo} value
+ *
+ *
+ * Layout
+ *
+ *
+ * struct VkVideoDecodeH264DpbSlotInfoKHR {
+ * VkStructureType {@link #sType};
+ * void const * pNext;
+ * {@link StdVideoDecodeH264ReferenceInfo StdVideoDecodeH264ReferenceInfo} const * {@link #pStdReferenceInfo};
+ * }
+ */
+public class VkVideoDecodeH264DpbSlotInfoKHR extends Struct implements NativeResource {
+
+ /** The struct size in bytes. */
+ public static final int SIZEOF;
+
+ /** The struct alignment in bytes. */
+ public static final int ALIGNOF;
+
+ /** The struct member offsets. */
+ public static final int
+ STYPE,
+ PNEXT,
+ PSTDREFERENCEINFO;
+
+ static {
+ Layout layout = __struct(
+ __member(4),
+ __member(POINTER_SIZE),
+ __member(POINTER_SIZE)
+ );
+
+ SIZEOF = layout.getSize();
+ ALIGNOF = layout.getAlignment();
+
+ STYPE = layout.offsetof(0);
+ PNEXT = layout.offsetof(1);
+ PSTDREFERENCEINFO = layout.offsetof(2);
+ }
+
+ /**
+ * Creates a {@code VkVideoDecodeH264DpbSlotInfoKHR} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * visible to the struct instance and vice versa.
+ *
+ * The created instance holds a strong reference to the container object.
+ */
+ public VkVideoDecodeH264DpbSlotInfoKHR(ByteBuffer container) {
+ super(memAddress(container), __checkContainer(container, SIZEOF));
+ }
+
+ @Override
+ public int sizeof() { return SIZEOF; }
+
+ /** the type of this structure. */
+ @NativeType("VkStructureType")
+ public int sType() { return nsType(address()); }
+ /** @return the value of the {@code pNext} field. */
+ @NativeType("void const *")
+ public long pNext() { return npNext(address()); }
+ /** a pointer to a {@code StdVideoDecodeH264ReferenceInfo} structure specifying H.264 reference information. */
+ @NativeType("StdVideoDecodeH264ReferenceInfo const *")
+ public StdVideoDecodeH264ReferenceInfo pStdReferenceInfo() { return npStdReferenceInfo(address()); }
+
+ /** Sets the specified value to the {@link #sType} field. */
+ public VkVideoDecodeH264DpbSlotInfoKHR sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR} value to the {@link #sType} field. */
+ public VkVideoDecodeH264DpbSlotInfoKHR sType$Default() { return sType(KHRVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR); }
+ /** Sets the specified value to the {@code pNext} field. */
+ public VkVideoDecodeH264DpbSlotInfoKHR pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
+ /** Sets the address of the specified {@link StdVideoDecodeH264ReferenceInfo} to the {@link #pStdReferenceInfo} field. */
+ public VkVideoDecodeH264DpbSlotInfoKHR pStdReferenceInfo(@NativeType("StdVideoDecodeH264ReferenceInfo const *") StdVideoDecodeH264ReferenceInfo value) { npStdReferenceInfo(address(), value); return this; }
+
+ /** Initializes this struct with the specified values. */
+ public VkVideoDecodeH264DpbSlotInfoKHR set(
+ int sType,
+ long pNext,
+ StdVideoDecodeH264ReferenceInfo pStdReferenceInfo
+ ) {
+ sType(sType);
+ pNext(pNext);
+ pStdReferenceInfo(pStdReferenceInfo);
+
+ return this;
+ }
+
+ /**
+ * Copies the specified struct data to this struct.
+ *
+ * @param src the source struct
+ *
+ * @return this struct
+ */
+ public VkVideoDecodeH264DpbSlotInfoKHR set(VkVideoDecodeH264DpbSlotInfoKHR src) {
+ memCopy(src.address(), address(), SIZEOF);
+ return this;
+ }
+
+ // -----------------------------------
+
+ /** Returns a new {@code VkVideoDecodeH264DpbSlotInfoKHR} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH264DpbSlotInfoKHR malloc() {
+ return wrap(VkVideoDecodeH264DpbSlotInfoKHR.class, nmemAllocChecked(SIZEOF));
+ }
+
+ /** Returns a new {@code VkVideoDecodeH264DpbSlotInfoKHR} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH264DpbSlotInfoKHR calloc() {
+ return wrap(VkVideoDecodeH264DpbSlotInfoKHR.class, nmemCallocChecked(1, SIZEOF));
+ }
+
+ /** Returns a new {@code VkVideoDecodeH264DpbSlotInfoKHR} instance allocated with {@link BufferUtils}. */
+ public static VkVideoDecodeH264DpbSlotInfoKHR create() {
+ ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
+ return wrap(VkVideoDecodeH264DpbSlotInfoKHR.class, memAddress(container), container);
+ }
+
+ /** Returns a new {@code VkVideoDecodeH264DpbSlotInfoKHR} instance for the specified memory address. */
+ public static VkVideoDecodeH264DpbSlotInfoKHR create(long address) {
+ return wrap(VkVideoDecodeH264DpbSlotInfoKHR.class, address);
+ }
+
+ /** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkVideoDecodeH264DpbSlotInfoKHR createSafe(long address) {
+ return address == NULL ? null : wrap(VkVideoDecodeH264DpbSlotInfoKHR.class, address);
+ }
+
+ /**
+ * Returns a new {@link VkVideoDecodeH264DpbSlotInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkVideoDecodeH264DpbSlotInfoKHR.Buffer malloc(int capacity) {
+ return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkVideoDecodeH264DpbSlotInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkVideoDecodeH264DpbSlotInfoKHR.Buffer calloc(int capacity) {
+ return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkVideoDecodeH264DpbSlotInfoKHR.Buffer} instance allocated with {@link BufferUtils}.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkVideoDecodeH264DpbSlotInfoKHR.Buffer create(int capacity) {
+ ByteBuffer container = __create(capacity, SIZEOF);
+ return wrap(Buffer.class, memAddress(container), capacity, container);
+ }
+
+ /**
+ * Create a {@link VkVideoDecodeH264DpbSlotInfoKHR.Buffer} instance at the specified memory.
+ *
+ * @param address the memory address
+ * @param capacity the buffer capacity
+ */
+ public static VkVideoDecodeH264DpbSlotInfoKHR.Buffer create(long address, int capacity) {
+ return wrap(Buffer.class, address, capacity);
+ }
+
+ /** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkVideoDecodeH264DpbSlotInfoKHR.Buffer createSafe(long address, int capacity) {
+ return address == NULL ? null : wrap(Buffer.class, address, capacity);
+ }
+
+ /**
+ * Returns a new {@code VkVideoDecodeH264DpbSlotInfoKHR} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkVideoDecodeH264DpbSlotInfoKHR malloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH264DpbSlotInfoKHR.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@code VkVideoDecodeH264DpbSlotInfoKHR} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkVideoDecodeH264DpbSlotInfoKHR calloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH264DpbSlotInfoKHR.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@link VkVideoDecodeH264DpbSlotInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkVideoDecodeH264DpbSlotInfoKHR.Buffer malloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkVideoDecodeH264DpbSlotInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkVideoDecodeH264DpbSlotInfoKHR.Buffer calloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
+ }
+
+ // -----------------------------------
+
+ /** Unsafe version of {@link #sType}. */
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264DpbSlotInfoKHR.STYPE); }
+ /** Unsafe version of {@link #pNext}. */
+ public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH264DpbSlotInfoKHR.PNEXT); }
+ /** Unsafe version of {@link #pStdReferenceInfo}. */
+ public static StdVideoDecodeH264ReferenceInfo npStdReferenceInfo(long struct) { return StdVideoDecodeH264ReferenceInfo.create(memGetAddress(struct + VkVideoDecodeH264DpbSlotInfoKHR.PSTDREFERENCEINFO)); }
+
+ /** Unsafe version of {@link #sType(int) sType}. */
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264DpbSlotInfoKHR.STYPE, value); }
+ /** Unsafe version of {@link #pNext(long) pNext}. */
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH264DpbSlotInfoKHR.PNEXT, value); }
+ /** Unsafe version of {@link #pStdReferenceInfo(StdVideoDecodeH264ReferenceInfo) pStdReferenceInfo}. */
+ public static void npStdReferenceInfo(long struct, StdVideoDecodeH264ReferenceInfo value) { memPutAddress(struct + VkVideoDecodeH264DpbSlotInfoKHR.PSTDREFERENCEINFO, value.address()); }
+
+ /**
+ * Validates pointer members that should not be {@code NULL}.
+ *
+ * @param struct the struct to validate
+ */
+ public static void validate(long struct) {
+ check(memGetAddress(struct + VkVideoDecodeH264DpbSlotInfoKHR.PSTDREFERENCEINFO));
+ }
+
+ // -----------------------------------
+
+ /** An array of {@link VkVideoDecodeH264DpbSlotInfoKHR} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
+
+ private static final VkVideoDecodeH264DpbSlotInfoKHR ELEMENT_FACTORY = VkVideoDecodeH264DpbSlotInfoKHR.create(-1L);
+
+ /**
+ * Creates a new {@code VkVideoDecodeH264DpbSlotInfoKHR.Buffer} instance backed by the specified container.
+ *
+ * Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
+ * will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
+ * by {@link VkVideoDecodeH264DpbSlotInfoKHR#SIZEOF}, and its mark will be undefined.
+ *
+ * The created buffer instance holds a strong reference to the container object.
+ */
+ public Buffer(ByteBuffer container) {
+ super(container, container.remaining() / SIZEOF);
+ }
+
+ public Buffer(long address, int cap) {
+ super(address, null, -1, 0, cap, cap);
+ }
+
+ Buffer(long address, @Nullable ByteBuffer container, int mark, int pos, int lim, int cap) {
+ super(address, container, mark, pos, lim, cap);
+ }
+
+ @Override
+ protected Buffer self() {
+ return this;
+ }
+
+ @Override
+ protected VkVideoDecodeH264DpbSlotInfoKHR getElementFactory() {
+ return ELEMENT_FACTORY;
+ }
+
+ /** @return the value of the {@link VkVideoDecodeH264DpbSlotInfoKHR#sType} field. */
+ @NativeType("VkStructureType")
+ public int sType() { return VkVideoDecodeH264DpbSlotInfoKHR.nsType(address()); }
+ /** @return the value of the {@code pNext} field. */
+ @NativeType("void const *")
+ public long pNext() { return VkVideoDecodeH264DpbSlotInfoKHR.npNext(address()); }
+ /** @return a {@link StdVideoDecodeH264ReferenceInfo} view of the struct pointed to by the {@link VkVideoDecodeH264DpbSlotInfoKHR#pStdReferenceInfo} field. */
+ @NativeType("StdVideoDecodeH264ReferenceInfo const *")
+ public StdVideoDecodeH264ReferenceInfo pStdReferenceInfo() { return VkVideoDecodeH264DpbSlotInfoKHR.npStdReferenceInfo(address()); }
+
+ /** Sets the specified value to the {@link VkVideoDecodeH264DpbSlotInfoKHR#sType} field. */
+ public VkVideoDecodeH264DpbSlotInfoKHR.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH264DpbSlotInfoKHR.nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR} value to the {@link VkVideoDecodeH264DpbSlotInfoKHR#sType} field. */
+ public VkVideoDecodeH264DpbSlotInfoKHR.Buffer sType$Default() { return sType(KHRVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR); }
+ /** Sets the specified value to the {@code pNext} field. */
+ public VkVideoDecodeH264DpbSlotInfoKHR.Buffer pNext(@NativeType("void const *") long value) { VkVideoDecodeH264DpbSlotInfoKHR.npNext(address(), value); return this; }
+ /** Sets the address of the specified {@link StdVideoDecodeH264ReferenceInfo} to the {@link VkVideoDecodeH264DpbSlotInfoKHR#pStdReferenceInfo} field. */
+ public VkVideoDecodeH264DpbSlotInfoKHR.Buffer pStdReferenceInfo(@NativeType("StdVideoDecodeH264ReferenceInfo const *") StdVideoDecodeH264ReferenceInfo value) { VkVideoDecodeH264DpbSlotInfoKHR.npStdReferenceInfo(address(), value); return this; }
+
+ }
+
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264PictureInfoEXT.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264PictureInfoKHR.java
similarity index 56%
rename from modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264PictureInfoEXT.java
rename to modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264PictureInfoKHR.java
index 9e5a8b6229..c63197a8ea 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264PictureInfoEXT.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264PictureInfoKHR.java
@@ -21,10 +21,47 @@
/**
* Structure specifies H.264 decode picture parameters when decoding a picture.
*
+ * Description
+ *
+ * This structure is specified in the {@code pNext} chain of the {@link VkVideoDecodeInfoKHR} structure passed to {@link KHRVideoDecodeQueue#vkCmdDecodeVideoKHR CmdDecodeVideoKHR} to specify the codec-specific picture information for an H.264 decode operation.
+ *
+ *
+ * - Decode Output Picture Information
+ *
+ * - If {@code pStdPictureInfo→flags.field_pic_flag} is not set, then the picture represents a frame.
+ * - If {@code pStdPictureInfo→flags.field_pic_flag} is set, then the picture represents a field. Specifically:
+ *
+ *
+ * - If {@code pStdPictureInfo→flags.bottom_field_flag} is not set, then the picture represents the top field of the frame.
+ * - If {@code pStdPictureInfo→flags.bottom_field_flag} is set, then the picture represents the bottom field of the frame.
+ *
+ *
+ * - The image subregion used is determined according to the H.264 Decode Picture Data Access section.
+ * - The decode output picture is associated with the H.264 picture information provided in {@code pStdPictureInfo}.
+ *
+ *
+ *
+ *
+ * - Std Picture Information
+ *
+ * - {@code reserved1} and {@code reserved2} are used only for padding purposes and are otherwise ignored;
+ * - {@code flags.is_intra} as defined in section 3.73 of the ITU-T H.264 Specification;
+ * - {@code flags.is_reference} as defined in section 3.136 of the ITU-T H.264 Specification;
+ * - {@code flags.complementary_field_pair} as defined in section 3.35 of the ITU-T H.264 Specification;
+ * - {@code seq_parameter_set_id} and {@code pic_parameter_set_id} are used to identify the active parameter sets, as described below;
+ * - all other members are interpreted as defined in section 7.4.3 of the ITU-T H.264 Specification.
+ *
+ * - Active Parameter Sets
+ *
+ * - The active SPS is the SPS identified by the key specified in {@code StdVideoDecodeH264PictureInfo}{@code ::seq_parameter_set_id}.
+ * - The active PPS is the PPS identified by the key specified by the pair constructed from {@code StdVideoDecodeH264PictureInfo}{@code ::seq_parameter_set_id} and {@code StdVideoDecodeH264PictureInfo}{@code ::pic_parameter_set_id}.
+ *
+ *
+ *
* Valid Usage (Implicit)
*
*
- * - {@code sType} must be {@link EXTVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT}
+ * - {@code sType} must be {@link KHRVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR}
* - {@code pStdPictureInfo} must be a valid pointer to a valid {@code StdVideoDecodeH264PictureInfo} value
* - {@code pSliceOffsets} must be a valid pointer to an array of {@code sliceCount} {@code uint32_t} values
* - {@code sliceCount} must be greater than 0
@@ -33,7 +70,7 @@
* Layout
*
*
- * struct VkVideoDecodeH264PictureInfoEXT {
+ * struct VkVideoDecodeH264PictureInfoKHR {
* VkStructureType {@link #sType};
* void const * {@link #pNext};
* {@link StdVideoDecodeH264PictureInfo StdVideoDecodeH264PictureInfo} const * {@link #pStdPictureInfo};
@@ -41,7 +78,7 @@
* uint32_t const * {@link #pSliceOffsets};
* }
*/
-public class VkVideoDecodeH264PictureInfoEXT extends Struct implements NativeResource {
+public class VkVideoDecodeH264PictureInfoKHR extends Struct implements NativeResource {
/** The struct size in bytes. */
public static final int SIZEOF;
@@ -77,12 +114,12 @@ public class VkVideoDecodeH264PictureInfoEXT extends Struct implements NativeRes
}
/**
- * Creates a {@code VkVideoDecodeH264PictureInfoEXT} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * Creates a {@code VkVideoDecodeH264PictureInfoKHR} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
* visible to the struct instance and vice versa.
*
* The created instance holds a strong reference to the container object.
*/
- public VkVideoDecodeH264PictureInfoEXT(ByteBuffer container) {
+ public VkVideoDecodeH264PictureInfoKHR(ByteBuffer container) {
super(memAddress(container), __checkContainer(container, SIZEOF));
}
@@ -95,29 +132,29 @@ public VkVideoDecodeH264PictureInfoEXT(ByteBuffer container) {
/** {@code NULL} or a pointer to a structure extending this structure. */
@NativeType("void const *")
public long pNext() { return npNext(address()); }
- /** a pointer to a {@code StdVideoDecodeH264PictureInfo} structure specifying the codec standard specific picture information from the H.264 specification. */
+ /** a pointer to a {@code StdVideoDecodeH264PictureInfo} structure specifying H.264 picture information. */
@NativeType("StdVideoDecodeH264PictureInfo const *")
public StdVideoDecodeH264PictureInfo pStdPictureInfo() { return npStdPictureInfo(address()); }
- /** the number of slices in this picture. */
+ /** the number of elements in {@code pSliceOffsets}. */
@NativeType("uint32_t")
public int sliceCount() { return nsliceCount(address()); }
- /** a pointer to an array of {@code sliceCount} offsets indicating the start offset of each slice within the bitstream buffer. */
+ /** a pointer to an array of {@code sliceCount} offsets specifying the start offset of the slices of the picture within the video bitstream buffer range specified in {@link VkVideoDecodeInfoKHR}. */
@NativeType("uint32_t const *")
public IntBuffer pSliceOffsets() { return npSliceOffsets(address()); }
/** Sets the specified value to the {@link #sType} field. */
- public VkVideoDecodeH264PictureInfoEXT sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT} value to the {@link #sType} field. */
- public VkVideoDecodeH264PictureInfoEXT sType$Default() { return sType(EXTVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT); }
+ public VkVideoDecodeH264PictureInfoKHR sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR} value to the {@link #sType} field. */
+ public VkVideoDecodeH264PictureInfoKHR sType$Default() { return sType(KHRVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR); }
/** Sets the specified value to the {@link #pNext} field. */
- public VkVideoDecodeH264PictureInfoEXT pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
+ public VkVideoDecodeH264PictureInfoKHR pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
/** Sets the address of the specified {@link StdVideoDecodeH264PictureInfo} to the {@link #pStdPictureInfo} field. */
- public VkVideoDecodeH264PictureInfoEXT pStdPictureInfo(@NativeType("StdVideoDecodeH264PictureInfo const *") StdVideoDecodeH264PictureInfo value) { npStdPictureInfo(address(), value); return this; }
+ public VkVideoDecodeH264PictureInfoKHR pStdPictureInfo(@NativeType("StdVideoDecodeH264PictureInfo const *") StdVideoDecodeH264PictureInfo value) { npStdPictureInfo(address(), value); return this; }
/** Sets the address of the specified {@link IntBuffer} to the {@link #pSliceOffsets} field. */
- public VkVideoDecodeH264PictureInfoEXT pSliceOffsets(@NativeType("uint32_t const *") IntBuffer value) { npSliceOffsets(address(), value); return this; }
+ public VkVideoDecodeH264PictureInfoKHR pSliceOffsets(@NativeType("uint32_t const *") IntBuffer value) { npSliceOffsets(address(), value); return this; }
/** Initializes this struct with the specified values. */
- public VkVideoDecodeH264PictureInfoEXT set(
+ public VkVideoDecodeH264PictureInfoKHR set(
int sType,
long pNext,
StdVideoDecodeH264PictureInfo pStdPictureInfo,
@@ -138,145 +175,145 @@ public VkVideoDecodeH264PictureInfoEXT set(
*
* @return this struct
*/
- public VkVideoDecodeH264PictureInfoEXT set(VkVideoDecodeH264PictureInfoEXT src) {
+ public VkVideoDecodeH264PictureInfoKHR set(VkVideoDecodeH264PictureInfoKHR src) {
memCopy(src.address(), address(), SIZEOF);
return this;
}
// -----------------------------------
- /** Returns a new {@code VkVideoDecodeH264PictureInfoEXT} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH264PictureInfoEXT malloc() {
- return wrap(VkVideoDecodeH264PictureInfoEXT.class, nmemAllocChecked(SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH264PictureInfoKHR} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH264PictureInfoKHR malloc() {
+ return wrap(VkVideoDecodeH264PictureInfoKHR.class, nmemAllocChecked(SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH264PictureInfoEXT} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH264PictureInfoEXT calloc() {
- return wrap(VkVideoDecodeH264PictureInfoEXT.class, nmemCallocChecked(1, SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH264PictureInfoKHR} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH264PictureInfoKHR calloc() {
+ return wrap(VkVideoDecodeH264PictureInfoKHR.class, nmemCallocChecked(1, SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH264PictureInfoEXT} instance allocated with {@link BufferUtils}. */
- public static VkVideoDecodeH264PictureInfoEXT create() {
+ /** Returns a new {@code VkVideoDecodeH264PictureInfoKHR} instance allocated with {@link BufferUtils}. */
+ public static VkVideoDecodeH264PictureInfoKHR create() {
ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
- return wrap(VkVideoDecodeH264PictureInfoEXT.class, memAddress(container), container);
+ return wrap(VkVideoDecodeH264PictureInfoKHR.class, memAddress(container), container);
}
- /** Returns a new {@code VkVideoDecodeH264PictureInfoEXT} instance for the specified memory address. */
- public static VkVideoDecodeH264PictureInfoEXT create(long address) {
- return wrap(VkVideoDecodeH264PictureInfoEXT.class, address);
+ /** Returns a new {@code VkVideoDecodeH264PictureInfoKHR} instance for the specified memory address. */
+ public static VkVideoDecodeH264PictureInfoKHR create(long address) {
+ return wrap(VkVideoDecodeH264PictureInfoKHR.class, address);
}
/** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH264PictureInfoEXT createSafe(long address) {
- return address == NULL ? null : wrap(VkVideoDecodeH264PictureInfoEXT.class, address);
+ public static VkVideoDecodeH264PictureInfoKHR createSafe(long address) {
+ return address == NULL ? null : wrap(VkVideoDecodeH264PictureInfoKHR.class, address);
}
/**
- * Returns a new {@link VkVideoDecodeH264PictureInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH264PictureInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264PictureInfoEXT.Buffer malloc(int capacity) {
+ public static VkVideoDecodeH264PictureInfoKHR.Buffer malloc(int capacity) {
return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH264PictureInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH264PictureInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264PictureInfoEXT.Buffer calloc(int capacity) {
+ public static VkVideoDecodeH264PictureInfoKHR.Buffer calloc(int capacity) {
return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH264PictureInfoEXT.Buffer} instance allocated with {@link BufferUtils}.
+ * Returns a new {@link VkVideoDecodeH264PictureInfoKHR.Buffer} instance allocated with {@link BufferUtils}.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264PictureInfoEXT.Buffer create(int capacity) {
+ public static VkVideoDecodeH264PictureInfoKHR.Buffer create(int capacity) {
ByteBuffer container = __create(capacity, SIZEOF);
return wrap(Buffer.class, memAddress(container), capacity, container);
}
/**
- * Create a {@link VkVideoDecodeH264PictureInfoEXT.Buffer} instance at the specified memory.
+ * Create a {@link VkVideoDecodeH264PictureInfoKHR.Buffer} instance at the specified memory.
*
* @param address the memory address
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264PictureInfoEXT.Buffer create(long address, int capacity) {
+ public static VkVideoDecodeH264PictureInfoKHR.Buffer create(long address, int capacity) {
return wrap(Buffer.class, address, capacity);
}
/** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH264PictureInfoEXT.Buffer createSafe(long address, int capacity) {
+ public static VkVideoDecodeH264PictureInfoKHR.Buffer createSafe(long address, int capacity) {
return address == NULL ? null : wrap(Buffer.class, address, capacity);
}
/**
- * Returns a new {@code VkVideoDecodeH264PictureInfoEXT} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@code VkVideoDecodeH264PictureInfoKHR} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH264PictureInfoEXT malloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH264PictureInfoEXT.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ public static VkVideoDecodeH264PictureInfoKHR malloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH264PictureInfoKHR.class, stack.nmalloc(ALIGNOF, SIZEOF));
}
/**
- * Returns a new {@code VkVideoDecodeH264PictureInfoEXT} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@code VkVideoDecodeH264PictureInfoKHR} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH264PictureInfoEXT calloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH264PictureInfoEXT.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ public static VkVideoDecodeH264PictureInfoKHR calloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH264PictureInfoKHR.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
}
/**
- * Returns a new {@link VkVideoDecodeH264PictureInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@link VkVideoDecodeH264PictureInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264PictureInfoEXT.Buffer malloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH264PictureInfoKHR.Buffer malloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH264PictureInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@link VkVideoDecodeH264PictureInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264PictureInfoEXT.Buffer calloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH264PictureInfoKHR.Buffer calloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
}
// -----------------------------------
/** Unsafe version of {@link #sType}. */
- public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264PictureInfoEXT.STYPE); }
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264PictureInfoKHR.STYPE); }
/** Unsafe version of {@link #pNext}. */
- public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH264PictureInfoEXT.PNEXT); }
+ public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH264PictureInfoKHR.PNEXT); }
/** Unsafe version of {@link #pStdPictureInfo}. */
- public static StdVideoDecodeH264PictureInfo npStdPictureInfo(long struct) { return StdVideoDecodeH264PictureInfo.create(memGetAddress(struct + VkVideoDecodeH264PictureInfoEXT.PSTDPICTUREINFO)); }
+ public static StdVideoDecodeH264PictureInfo npStdPictureInfo(long struct) { return StdVideoDecodeH264PictureInfo.create(memGetAddress(struct + VkVideoDecodeH264PictureInfoKHR.PSTDPICTUREINFO)); }
/** Unsafe version of {@link #sliceCount}. */
- public static int nsliceCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264PictureInfoEXT.SLICECOUNT); }
+ public static int nsliceCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264PictureInfoKHR.SLICECOUNT); }
/** Unsafe version of {@link #pSliceOffsets() pSliceOffsets}. */
- public static IntBuffer npSliceOffsets(long struct) { return memIntBuffer(memGetAddress(struct + VkVideoDecodeH264PictureInfoEXT.PSLICEOFFSETS), nsliceCount(struct)); }
+ public static IntBuffer npSliceOffsets(long struct) { return memIntBuffer(memGetAddress(struct + VkVideoDecodeH264PictureInfoKHR.PSLICEOFFSETS), nsliceCount(struct)); }
/** Unsafe version of {@link #sType(int) sType}. */
- public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264PictureInfoEXT.STYPE, value); }
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264PictureInfoKHR.STYPE, value); }
/** Unsafe version of {@link #pNext(long) pNext}. */
- public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH264PictureInfoEXT.PNEXT, value); }
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH264PictureInfoKHR.PNEXT, value); }
/** Unsafe version of {@link #pStdPictureInfo(StdVideoDecodeH264PictureInfo) pStdPictureInfo}. */
- public static void npStdPictureInfo(long struct, StdVideoDecodeH264PictureInfo value) { memPutAddress(struct + VkVideoDecodeH264PictureInfoEXT.PSTDPICTUREINFO, value.address()); }
+ public static void npStdPictureInfo(long struct, StdVideoDecodeH264PictureInfo value) { memPutAddress(struct + VkVideoDecodeH264PictureInfoKHR.PSTDPICTUREINFO, value.address()); }
/** Sets the specified value to the {@code sliceCount} field of the specified {@code struct}. */
- public static void nsliceCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264PictureInfoEXT.SLICECOUNT, value); }
+ public static void nsliceCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264PictureInfoKHR.SLICECOUNT, value); }
/** Unsafe version of {@link #pSliceOffsets(IntBuffer) pSliceOffsets}. */
- public static void npSliceOffsets(long struct, IntBuffer value) { memPutAddress(struct + VkVideoDecodeH264PictureInfoEXT.PSLICEOFFSETS, memAddress(value)); nsliceCount(struct, value.remaining()); }
+ public static void npSliceOffsets(long struct, IntBuffer value) { memPutAddress(struct + VkVideoDecodeH264PictureInfoKHR.PSLICEOFFSETS, memAddress(value)); nsliceCount(struct, value.remaining()); }
/**
* Validates pointer members that should not be {@code NULL}.
@@ -284,23 +321,23 @@ public static VkVideoDecodeH264PictureInfoEXT.Buffer calloc(int capacity, Memory
* @param struct the struct to validate
*/
public static void validate(long struct) {
- check(memGetAddress(struct + VkVideoDecodeH264PictureInfoEXT.PSTDPICTUREINFO));
- check(memGetAddress(struct + VkVideoDecodeH264PictureInfoEXT.PSLICEOFFSETS));
+ check(memGetAddress(struct + VkVideoDecodeH264PictureInfoKHR.PSTDPICTUREINFO));
+ check(memGetAddress(struct + VkVideoDecodeH264PictureInfoKHR.PSLICEOFFSETS));
}
// -----------------------------------
- /** An array of {@link VkVideoDecodeH264PictureInfoEXT} structs. */
- public static class Buffer extends StructBuffer implements NativeResource {
+ /** An array of {@link VkVideoDecodeH264PictureInfoKHR} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
- private static final VkVideoDecodeH264PictureInfoEXT ELEMENT_FACTORY = VkVideoDecodeH264PictureInfoEXT.create(-1L);
+ private static final VkVideoDecodeH264PictureInfoKHR ELEMENT_FACTORY = VkVideoDecodeH264PictureInfoKHR.create(-1L);
/**
- * Creates a new {@code VkVideoDecodeH264PictureInfoEXT.Buffer} instance backed by the specified container.
+ * Creates a new {@code VkVideoDecodeH264PictureInfoKHR.Buffer} instance backed by the specified container.
*
* Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
* will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
- * by {@link VkVideoDecodeH264PictureInfoEXT#SIZEOF}, and its mark will be undefined.
+ * by {@link VkVideoDecodeH264PictureInfoKHR#SIZEOF}, and its mark will be undefined.
*
* The created buffer instance holds a strong reference to the container object.
*/
@@ -322,36 +359,36 @@ protected Buffer self() {
}
@Override
- protected VkVideoDecodeH264PictureInfoEXT getElementFactory() {
+ protected VkVideoDecodeH264PictureInfoKHR getElementFactory() {
return ELEMENT_FACTORY;
}
- /** @return the value of the {@link VkVideoDecodeH264PictureInfoEXT#sType} field. */
+ /** @return the value of the {@link VkVideoDecodeH264PictureInfoKHR#sType} field. */
@NativeType("VkStructureType")
- public int sType() { return VkVideoDecodeH264PictureInfoEXT.nsType(address()); }
- /** @return the value of the {@link VkVideoDecodeH264PictureInfoEXT#pNext} field. */
+ public int sType() { return VkVideoDecodeH264PictureInfoKHR.nsType(address()); }
+ /** @return the value of the {@link VkVideoDecodeH264PictureInfoKHR#pNext} field. */
@NativeType("void const *")
- public long pNext() { return VkVideoDecodeH264PictureInfoEXT.npNext(address()); }
- /** @return a {@link StdVideoDecodeH264PictureInfo} view of the struct pointed to by the {@link VkVideoDecodeH264PictureInfoEXT#pStdPictureInfo} field. */
+ public long pNext() { return VkVideoDecodeH264PictureInfoKHR.npNext(address()); }
+ /** @return a {@link StdVideoDecodeH264PictureInfo} view of the struct pointed to by the {@link VkVideoDecodeH264PictureInfoKHR#pStdPictureInfo} field. */
@NativeType("StdVideoDecodeH264PictureInfo const *")
- public StdVideoDecodeH264PictureInfo pStdPictureInfo() { return VkVideoDecodeH264PictureInfoEXT.npStdPictureInfo(address()); }
- /** @return the value of the {@link VkVideoDecodeH264PictureInfoEXT#sliceCount} field. */
+ public StdVideoDecodeH264PictureInfo pStdPictureInfo() { return VkVideoDecodeH264PictureInfoKHR.npStdPictureInfo(address()); }
+ /** @return the value of the {@link VkVideoDecodeH264PictureInfoKHR#sliceCount} field. */
@NativeType("uint32_t")
- public int sliceCount() { return VkVideoDecodeH264PictureInfoEXT.nsliceCount(address()); }
- /** @return a {@link IntBuffer} view of the data pointed to by the {@link VkVideoDecodeH264PictureInfoEXT#pSliceOffsets} field. */
+ public int sliceCount() { return VkVideoDecodeH264PictureInfoKHR.nsliceCount(address()); }
+ /** @return a {@link IntBuffer} view of the data pointed to by the {@link VkVideoDecodeH264PictureInfoKHR#pSliceOffsets} field. */
@NativeType("uint32_t const *")
- public IntBuffer pSliceOffsets() { return VkVideoDecodeH264PictureInfoEXT.npSliceOffsets(address()); }
-
- /** Sets the specified value to the {@link VkVideoDecodeH264PictureInfoEXT#sType} field. */
- public VkVideoDecodeH264PictureInfoEXT.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH264PictureInfoEXT.nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT} value to the {@link VkVideoDecodeH264PictureInfoEXT#sType} field. */
- public VkVideoDecodeH264PictureInfoEXT.Buffer sType$Default() { return sType(EXTVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT); }
- /** Sets the specified value to the {@link VkVideoDecodeH264PictureInfoEXT#pNext} field. */
- public VkVideoDecodeH264PictureInfoEXT.Buffer pNext(@NativeType("void const *") long value) { VkVideoDecodeH264PictureInfoEXT.npNext(address(), value); return this; }
- /** Sets the address of the specified {@link StdVideoDecodeH264PictureInfo} to the {@link VkVideoDecodeH264PictureInfoEXT#pStdPictureInfo} field. */
- public VkVideoDecodeH264PictureInfoEXT.Buffer pStdPictureInfo(@NativeType("StdVideoDecodeH264PictureInfo const *") StdVideoDecodeH264PictureInfo value) { VkVideoDecodeH264PictureInfoEXT.npStdPictureInfo(address(), value); return this; }
- /** Sets the address of the specified {@link IntBuffer} to the {@link VkVideoDecodeH264PictureInfoEXT#pSliceOffsets} field. */
- public VkVideoDecodeH264PictureInfoEXT.Buffer pSliceOffsets(@NativeType("uint32_t const *") IntBuffer value) { VkVideoDecodeH264PictureInfoEXT.npSliceOffsets(address(), value); return this; }
+ public IntBuffer pSliceOffsets() { return VkVideoDecodeH264PictureInfoKHR.npSliceOffsets(address()); }
+
+ /** Sets the specified value to the {@link VkVideoDecodeH264PictureInfoKHR#sType} field. */
+ public VkVideoDecodeH264PictureInfoKHR.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH264PictureInfoKHR.nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR} value to the {@link VkVideoDecodeH264PictureInfoKHR#sType} field. */
+ public VkVideoDecodeH264PictureInfoKHR.Buffer sType$Default() { return sType(KHRVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR); }
+ /** Sets the specified value to the {@link VkVideoDecodeH264PictureInfoKHR#pNext} field. */
+ public VkVideoDecodeH264PictureInfoKHR.Buffer pNext(@NativeType("void const *") long value) { VkVideoDecodeH264PictureInfoKHR.npNext(address(), value); return this; }
+ /** Sets the address of the specified {@link StdVideoDecodeH264PictureInfo} to the {@link VkVideoDecodeH264PictureInfoKHR#pStdPictureInfo} field. */
+ public VkVideoDecodeH264PictureInfoKHR.Buffer pStdPictureInfo(@NativeType("StdVideoDecodeH264PictureInfo const *") StdVideoDecodeH264PictureInfo value) { VkVideoDecodeH264PictureInfoKHR.npStdPictureInfo(address(), value); return this; }
+ /** Sets the address of the specified {@link IntBuffer} to the {@link VkVideoDecodeH264PictureInfoKHR#pSliceOffsets} field. */
+ public VkVideoDecodeH264PictureInfoKHR.Buffer pSliceOffsets(@NativeType("uint32_t const *") IntBuffer value) { VkVideoDecodeH264PictureInfoKHR.npSliceOffsets(address(), value); return this; }
}
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264ProfileInfoEXT.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264ProfileInfoKHR.java
similarity index 56%
rename from modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264ProfileInfoEXT.java
rename to modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264ProfileInfoKHR.java
index 04a614d683..c00fc60d86 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264ProfileInfoEXT.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264ProfileInfoKHR.java
@@ -18,40 +18,26 @@
import org.lwjgl.vulkan.video.*;
/**
- * Structure specifying H.264 decode profile.
- *
- * Description
- *
- * Note
- *
- *
When passing {@link VkVideoDecodeH264ProfileInfoEXT} to {@link KHRVideoQueue#vkCreateVideoSessionKHR CreateVideoSessionKHR} in the {@code pNext} chain of {@link VkVideoSessionCreateInfoKHR}, requests for a {@code pictureLayout} not supported by the implementation will result in failure of the command.
- *
- *
- * Valid Usage
- *
- *
- * - If the {@link VkVideoDecodeH264ProfileInfoEXT} structure is included in the {@code pNext} chain of the {@link VkVideoCapabilitiesKHR} structure passed to {@link KHRVideoQueue#vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR}, the value in {@code pictureLayout} is treated as a bitmask of requested picture layouts. It is always valid to use the value {@link EXTVideoDecodeH264#VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT} as the implementation is guaranteed to support decoding of progressive content
- * - If the {@link VkVideoDecodeH264ProfileInfoEXT} structure is included in the {@code pNext} chain of the {@link VkVideoSessionCreateInfoKHR} structure passed to {@link KHRVideoQueue#vkCreateVideoSessionKHR CreateVideoSessionKHR}, the value in {@code pictureLayout} must be exactly one of {@link EXTVideoDecodeH264#VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT}, {@link EXTVideoDecodeH264#VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT} or {@link EXTVideoDecodeH264#VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT}
- *
+ * Structure specifying H.264 decode-specific video profile parameters.
*
* Valid Usage (Implicit)
*
*
- * - {@code sType} must be {@link EXTVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_EXT}
- * - If {@code pictureLayout} is not 0, {@code pictureLayout} must be a valid {@code VkVideoDecodeH264PictureLayoutFlagBitsEXT} value
+ * - {@code sType} must be {@link KHRVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR}
+ * - If {@code pictureLayout} is not 0, {@code pictureLayout} must be a valid {@code VkVideoDecodeH264PictureLayoutFlagBitsKHR} value
*
*
* Layout
*
*
- * struct VkVideoDecodeH264ProfileInfoEXT {
+ * struct VkVideoDecodeH264ProfileInfoKHR {
* VkStructureType {@link #sType};
* void const * {@link #pNext};
* StdVideoH264ProfileIdc {@link #stdProfileIdc};
- * VkVideoDecodeH264PictureLayoutFlagBitsEXT {@link #pictureLayout};
+ * VkVideoDecodeH264PictureLayoutFlagBitsKHR {@link #pictureLayout};
* }
*/
-public class VkVideoDecodeH264ProfileInfoEXT extends Struct implements NativeResource {
+public class VkVideoDecodeH264ProfileInfoKHR extends Struct implements NativeResource {
/** The struct size in bytes. */
public static final int SIZEOF;
@@ -84,12 +70,12 @@ public class VkVideoDecodeH264ProfileInfoEXT extends Struct implements NativeRes
}
/**
- * Creates a {@code VkVideoDecodeH264ProfileInfoEXT} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * Creates a {@code VkVideoDecodeH264ProfileInfoKHR} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
* visible to the struct instance and vice versa.
*
* The created instance holds a strong reference to the container object.
*/
- public VkVideoDecodeH264ProfileInfoEXT(ByteBuffer container) {
+ public VkVideoDecodeH264ProfileInfoKHR(ByteBuffer container) {
super(memAddress(container), __checkContainer(container, SIZEOF));
}
@@ -102,26 +88,26 @@ public VkVideoDecodeH264ProfileInfoEXT(ByteBuffer container) {
/** {@code NULL} or a pointer to a structure extending this structure. */
@NativeType("void const *")
public long pNext() { return npNext(address()); }
- /** a {@code StdVideoH264ProfileIdc} value specifying the H.264 codec profile IDC */
+ /** a {@code StdVideoH264ProfileIdc} value specifying the H.264 codec profile IDC, as defined in section A.2 of the ITU-T H.264 Specification. */
@NativeType("StdVideoH264ProfileIdc")
public int stdProfileIdc() { return nstdProfileIdc(address()); }
- /** a {@code VkVideoDecodeH264PictureLayoutFlagBitsEXT} value specifying the layout of the decoded picture’s contents depending on the nature (progressive vs. interlaced) of the input content. */
- @NativeType("VkVideoDecodeH264PictureLayoutFlagBitsEXT")
+ /** a {@code VkVideoDecodeH264PictureLayoutFlagBitsKHR} value specifying the picture layout used by the H.264 video sequence to be decoded. */
+ @NativeType("VkVideoDecodeH264PictureLayoutFlagBitsKHR")
public int pictureLayout() { return npictureLayout(address()); }
/** Sets the specified value to the {@link #sType} field. */
- public VkVideoDecodeH264ProfileInfoEXT sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_EXT} value to the {@link #sType} field. */
- public VkVideoDecodeH264ProfileInfoEXT sType$Default() { return sType(EXTVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_EXT); }
+ public VkVideoDecodeH264ProfileInfoKHR sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR} value to the {@link #sType} field. */
+ public VkVideoDecodeH264ProfileInfoKHR sType$Default() { return sType(KHRVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR); }
/** Sets the specified value to the {@link #pNext} field. */
- public VkVideoDecodeH264ProfileInfoEXT pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
+ public VkVideoDecodeH264ProfileInfoKHR pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
/** Sets the specified value to the {@link #stdProfileIdc} field. */
- public VkVideoDecodeH264ProfileInfoEXT stdProfileIdc(@NativeType("StdVideoH264ProfileIdc") int value) { nstdProfileIdc(address(), value); return this; }
+ public VkVideoDecodeH264ProfileInfoKHR stdProfileIdc(@NativeType("StdVideoH264ProfileIdc") int value) { nstdProfileIdc(address(), value); return this; }
/** Sets the specified value to the {@link #pictureLayout} field. */
- public VkVideoDecodeH264ProfileInfoEXT pictureLayout(@NativeType("VkVideoDecodeH264PictureLayoutFlagBitsEXT") int value) { npictureLayout(address(), value); return this; }
+ public VkVideoDecodeH264ProfileInfoKHR pictureLayout(@NativeType("VkVideoDecodeH264PictureLayoutFlagBitsKHR") int value) { npictureLayout(address(), value); return this; }
/** Initializes this struct with the specified values. */
- public VkVideoDecodeH264ProfileInfoEXT set(
+ public VkVideoDecodeH264ProfileInfoKHR set(
int sType,
long pNext,
int stdProfileIdc,
@@ -142,155 +128,155 @@ public VkVideoDecodeH264ProfileInfoEXT set(
*
* @return this struct
*/
- public VkVideoDecodeH264ProfileInfoEXT set(VkVideoDecodeH264ProfileInfoEXT src) {
+ public VkVideoDecodeH264ProfileInfoKHR set(VkVideoDecodeH264ProfileInfoKHR src) {
memCopy(src.address(), address(), SIZEOF);
return this;
}
// -----------------------------------
- /** Returns a new {@code VkVideoDecodeH264ProfileInfoEXT} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH264ProfileInfoEXT malloc() {
- return wrap(VkVideoDecodeH264ProfileInfoEXT.class, nmemAllocChecked(SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH264ProfileInfoKHR} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH264ProfileInfoKHR malloc() {
+ return wrap(VkVideoDecodeH264ProfileInfoKHR.class, nmemAllocChecked(SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH264ProfileInfoEXT} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH264ProfileInfoEXT calloc() {
- return wrap(VkVideoDecodeH264ProfileInfoEXT.class, nmemCallocChecked(1, SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH264ProfileInfoKHR} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH264ProfileInfoKHR calloc() {
+ return wrap(VkVideoDecodeH264ProfileInfoKHR.class, nmemCallocChecked(1, SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH264ProfileInfoEXT} instance allocated with {@link BufferUtils}. */
- public static VkVideoDecodeH264ProfileInfoEXT create() {
+ /** Returns a new {@code VkVideoDecodeH264ProfileInfoKHR} instance allocated with {@link BufferUtils}. */
+ public static VkVideoDecodeH264ProfileInfoKHR create() {
ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
- return wrap(VkVideoDecodeH264ProfileInfoEXT.class, memAddress(container), container);
+ return wrap(VkVideoDecodeH264ProfileInfoKHR.class, memAddress(container), container);
}
- /** Returns a new {@code VkVideoDecodeH264ProfileInfoEXT} instance for the specified memory address. */
- public static VkVideoDecodeH264ProfileInfoEXT create(long address) {
- return wrap(VkVideoDecodeH264ProfileInfoEXT.class, address);
+ /** Returns a new {@code VkVideoDecodeH264ProfileInfoKHR} instance for the specified memory address. */
+ public static VkVideoDecodeH264ProfileInfoKHR create(long address) {
+ return wrap(VkVideoDecodeH264ProfileInfoKHR.class, address);
}
/** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH264ProfileInfoEXT createSafe(long address) {
- return address == NULL ? null : wrap(VkVideoDecodeH264ProfileInfoEXT.class, address);
+ public static VkVideoDecodeH264ProfileInfoKHR createSafe(long address) {
+ return address == NULL ? null : wrap(VkVideoDecodeH264ProfileInfoKHR.class, address);
}
/**
- * Returns a new {@link VkVideoDecodeH264ProfileInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH264ProfileInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264ProfileInfoEXT.Buffer malloc(int capacity) {
+ public static VkVideoDecodeH264ProfileInfoKHR.Buffer malloc(int capacity) {
return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH264ProfileInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH264ProfileInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264ProfileInfoEXT.Buffer calloc(int capacity) {
+ public static VkVideoDecodeH264ProfileInfoKHR.Buffer calloc(int capacity) {
return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH264ProfileInfoEXT.Buffer} instance allocated with {@link BufferUtils}.
+ * Returns a new {@link VkVideoDecodeH264ProfileInfoKHR.Buffer} instance allocated with {@link BufferUtils}.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264ProfileInfoEXT.Buffer create(int capacity) {
+ public static VkVideoDecodeH264ProfileInfoKHR.Buffer create(int capacity) {
ByteBuffer container = __create(capacity, SIZEOF);
return wrap(Buffer.class, memAddress(container), capacity, container);
}
/**
- * Create a {@link VkVideoDecodeH264ProfileInfoEXT.Buffer} instance at the specified memory.
+ * Create a {@link VkVideoDecodeH264ProfileInfoKHR.Buffer} instance at the specified memory.
*
* @param address the memory address
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264ProfileInfoEXT.Buffer create(long address, int capacity) {
+ public static VkVideoDecodeH264ProfileInfoKHR.Buffer create(long address, int capacity) {
return wrap(Buffer.class, address, capacity);
}
/** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH264ProfileInfoEXT.Buffer createSafe(long address, int capacity) {
+ public static VkVideoDecodeH264ProfileInfoKHR.Buffer createSafe(long address, int capacity) {
return address == NULL ? null : wrap(Buffer.class, address, capacity);
}
/**
- * Returns a new {@code VkVideoDecodeH264ProfileInfoEXT} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@code VkVideoDecodeH264ProfileInfoKHR} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH264ProfileInfoEXT malloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH264ProfileInfoEXT.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ public static VkVideoDecodeH264ProfileInfoKHR malloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH264ProfileInfoKHR.class, stack.nmalloc(ALIGNOF, SIZEOF));
}
/**
- * Returns a new {@code VkVideoDecodeH264ProfileInfoEXT} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@code VkVideoDecodeH264ProfileInfoKHR} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH264ProfileInfoEXT calloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH264ProfileInfoEXT.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ public static VkVideoDecodeH264ProfileInfoKHR calloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH264ProfileInfoKHR.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
}
/**
- * Returns a new {@link VkVideoDecodeH264ProfileInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@link VkVideoDecodeH264ProfileInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264ProfileInfoEXT.Buffer malloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH264ProfileInfoKHR.Buffer malloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH264ProfileInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@link VkVideoDecodeH264ProfileInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264ProfileInfoEXT.Buffer calloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH264ProfileInfoKHR.Buffer calloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
}
// -----------------------------------
/** Unsafe version of {@link #sType}. */
- public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264ProfileInfoEXT.STYPE); }
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264ProfileInfoKHR.STYPE); }
/** Unsafe version of {@link #pNext}. */
- public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH264ProfileInfoEXT.PNEXT); }
+ public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH264ProfileInfoKHR.PNEXT); }
/** Unsafe version of {@link #stdProfileIdc}. */
- public static int nstdProfileIdc(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264ProfileInfoEXT.STDPROFILEIDC); }
+ public static int nstdProfileIdc(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264ProfileInfoKHR.STDPROFILEIDC); }
/** Unsafe version of {@link #pictureLayout}. */
- public static int npictureLayout(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264ProfileInfoEXT.PICTURELAYOUT); }
+ public static int npictureLayout(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264ProfileInfoKHR.PICTURELAYOUT); }
/** Unsafe version of {@link #sType(int) sType}. */
- public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264ProfileInfoEXT.STYPE, value); }
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264ProfileInfoKHR.STYPE, value); }
/** Unsafe version of {@link #pNext(long) pNext}. */
- public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH264ProfileInfoEXT.PNEXT, value); }
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH264ProfileInfoKHR.PNEXT, value); }
/** Unsafe version of {@link #stdProfileIdc(int) stdProfileIdc}. */
- public static void nstdProfileIdc(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264ProfileInfoEXT.STDPROFILEIDC, value); }
+ public static void nstdProfileIdc(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264ProfileInfoKHR.STDPROFILEIDC, value); }
/** Unsafe version of {@link #pictureLayout(int) pictureLayout}. */
- public static void npictureLayout(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264ProfileInfoEXT.PICTURELAYOUT, value); }
+ public static void npictureLayout(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264ProfileInfoKHR.PICTURELAYOUT, value); }
// -----------------------------------
- /** An array of {@link VkVideoDecodeH264ProfileInfoEXT} structs. */
- public static class Buffer extends StructBuffer implements NativeResource {
+ /** An array of {@link VkVideoDecodeH264ProfileInfoKHR} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
- private static final VkVideoDecodeH264ProfileInfoEXT ELEMENT_FACTORY = VkVideoDecodeH264ProfileInfoEXT.create(-1L);
+ private static final VkVideoDecodeH264ProfileInfoKHR ELEMENT_FACTORY = VkVideoDecodeH264ProfileInfoKHR.create(-1L);
/**
- * Creates a new {@code VkVideoDecodeH264ProfileInfoEXT.Buffer} instance backed by the specified container.
+ * Creates a new {@code VkVideoDecodeH264ProfileInfoKHR.Buffer} instance backed by the specified container.
*
* Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
* will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
- * by {@link VkVideoDecodeH264ProfileInfoEXT#SIZEOF}, and its mark will be undefined.
+ * by {@link VkVideoDecodeH264ProfileInfoKHR#SIZEOF}, and its mark will be undefined.
*
* The created buffer instance holds a strong reference to the container object.
*/
@@ -312,33 +298,33 @@ protected Buffer self() {
}
@Override
- protected VkVideoDecodeH264ProfileInfoEXT getElementFactory() {
+ protected VkVideoDecodeH264ProfileInfoKHR getElementFactory() {
return ELEMENT_FACTORY;
}
- /** @return the value of the {@link VkVideoDecodeH264ProfileInfoEXT#sType} field. */
+ /** @return the value of the {@link VkVideoDecodeH264ProfileInfoKHR#sType} field. */
@NativeType("VkStructureType")
- public int sType() { return VkVideoDecodeH264ProfileInfoEXT.nsType(address()); }
- /** @return the value of the {@link VkVideoDecodeH264ProfileInfoEXT#pNext} field. */
+ public int sType() { return VkVideoDecodeH264ProfileInfoKHR.nsType(address()); }
+ /** @return the value of the {@link VkVideoDecodeH264ProfileInfoKHR#pNext} field. */
@NativeType("void const *")
- public long pNext() { return VkVideoDecodeH264ProfileInfoEXT.npNext(address()); }
- /** @return the value of the {@link VkVideoDecodeH264ProfileInfoEXT#stdProfileIdc} field. */
+ public long pNext() { return VkVideoDecodeH264ProfileInfoKHR.npNext(address()); }
+ /** @return the value of the {@link VkVideoDecodeH264ProfileInfoKHR#stdProfileIdc} field. */
@NativeType("StdVideoH264ProfileIdc")
- public int stdProfileIdc() { return VkVideoDecodeH264ProfileInfoEXT.nstdProfileIdc(address()); }
- /** @return the value of the {@link VkVideoDecodeH264ProfileInfoEXT#pictureLayout} field. */
- @NativeType("VkVideoDecodeH264PictureLayoutFlagBitsEXT")
- public int pictureLayout() { return VkVideoDecodeH264ProfileInfoEXT.npictureLayout(address()); }
-
- /** Sets the specified value to the {@link VkVideoDecodeH264ProfileInfoEXT#sType} field. */
- public VkVideoDecodeH264ProfileInfoEXT.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH264ProfileInfoEXT.nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_EXT} value to the {@link VkVideoDecodeH264ProfileInfoEXT#sType} field. */
- public VkVideoDecodeH264ProfileInfoEXT.Buffer sType$Default() { return sType(EXTVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_EXT); }
- /** Sets the specified value to the {@link VkVideoDecodeH264ProfileInfoEXT#pNext} field. */
- public VkVideoDecodeH264ProfileInfoEXT.Buffer pNext(@NativeType("void const *") long value) { VkVideoDecodeH264ProfileInfoEXT.npNext(address(), value); return this; }
- /** Sets the specified value to the {@link VkVideoDecodeH264ProfileInfoEXT#stdProfileIdc} field. */
- public VkVideoDecodeH264ProfileInfoEXT.Buffer stdProfileIdc(@NativeType("StdVideoH264ProfileIdc") int value) { VkVideoDecodeH264ProfileInfoEXT.nstdProfileIdc(address(), value); return this; }
- /** Sets the specified value to the {@link VkVideoDecodeH264ProfileInfoEXT#pictureLayout} field. */
- public VkVideoDecodeH264ProfileInfoEXT.Buffer pictureLayout(@NativeType("VkVideoDecodeH264PictureLayoutFlagBitsEXT") int value) { VkVideoDecodeH264ProfileInfoEXT.npictureLayout(address(), value); return this; }
+ public int stdProfileIdc() { return VkVideoDecodeH264ProfileInfoKHR.nstdProfileIdc(address()); }
+ /** @return the value of the {@link VkVideoDecodeH264ProfileInfoKHR#pictureLayout} field. */
+ @NativeType("VkVideoDecodeH264PictureLayoutFlagBitsKHR")
+ public int pictureLayout() { return VkVideoDecodeH264ProfileInfoKHR.npictureLayout(address()); }
+
+ /** Sets the specified value to the {@link VkVideoDecodeH264ProfileInfoKHR#sType} field. */
+ public VkVideoDecodeH264ProfileInfoKHR.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH264ProfileInfoKHR.nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR} value to the {@link VkVideoDecodeH264ProfileInfoKHR#sType} field. */
+ public VkVideoDecodeH264ProfileInfoKHR.Buffer sType$Default() { return sType(KHRVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR); }
+ /** Sets the specified value to the {@link VkVideoDecodeH264ProfileInfoKHR#pNext} field. */
+ public VkVideoDecodeH264ProfileInfoKHR.Buffer pNext(@NativeType("void const *") long value) { VkVideoDecodeH264ProfileInfoKHR.npNext(address(), value); return this; }
+ /** Sets the specified value to the {@link VkVideoDecodeH264ProfileInfoKHR#stdProfileIdc} field. */
+ public VkVideoDecodeH264ProfileInfoKHR.Buffer stdProfileIdc(@NativeType("StdVideoH264ProfileIdc") int value) { VkVideoDecodeH264ProfileInfoKHR.nstdProfileIdc(address(), value); return this; }
+ /** Sets the specified value to the {@link VkVideoDecodeH264ProfileInfoKHR#pictureLayout} field. */
+ public VkVideoDecodeH264ProfileInfoKHR.Buffer pictureLayout(@NativeType("VkVideoDecodeH264PictureLayoutFlagBitsKHR") int value) { VkVideoDecodeH264ProfileInfoKHR.npictureLayout(address(), value); return this; }
}
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264SessionParametersAddInfoEXT.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264SessionParametersAddInfoKHR.java
similarity index 63%
rename from modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264SessionParametersAddInfoEXT.java
rename to modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264SessionParametersAddInfoKHR.java
index 14c68896bb..5ce279f3c7 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264SessionParametersAddInfoEXT.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264SessionParametersAddInfoKHR.java
@@ -21,34 +21,38 @@
/**
* Structure specifies H.264 decoder parameter set information.
*
+ * Description
+ *
+ * This structure can be specified in the following places:
+ *
+ *
+ * - In the {@code pParametersAddInfo} member of the {@link VkVideoDecodeH264SessionParametersCreateInfoKHR} structure specified in the {@code pNext} chain of {@link VkVideoSessionParametersCreateInfoKHR} used to create a video session parameters object. In this case, if the video codec operation the video session parameters object is created with is {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR}, then it defines the set of initial parameters to add to the created object (see Creating Video Session Parameters).
+ * - In the {@code pNext} chain of {@link VkVideoSessionParametersUpdateInfoKHR}. In this case, if the video codec operation the video session parameters object to be updated was created with is {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR}, then it defines the set of parameters to add to it (see Updating Video Session Parameters).
+ *
+ *
* Valid Usage
*
*
- * - The values of {@code stdSPSCount} and {@code stdPPSCount} must be less than or equal to the values of {@code maxStdSPSCount} and {@code maxStdPPSCount}, respectively
- * - When the {@code maxStdSPSCount} number of parameters of type StdVideoH264SequenceParameterSet in the Video Session Parameters object is reached, no additional parameters of that type can be added to this object. {@link VK10#VK_ERROR_TOO_MANY_OBJECTS ERROR_TOO_MANY_OBJECTS} will be returned if an attempt is made to add additional data to this object at this point
- * - When the {@code maxStdPPSCount} number of parameters of type StdVideoH264PictureParameterSet in the Video Session Parameters object is reached, no additional parameters of that type can be added to this object. {@link VK10#VK_ERROR_TOO_MANY_OBJECTS ERROR_TOO_MANY_OBJECTS} will be returned if an attempt is made to add additional data to this object at this point
- * - Each entry to be added must have a unique, to the rest of the parameter array entries and the existing parameters in the Video Session Parameters Object that is being updated, SPS-PPS IDs
- * - Parameter entries that already exist in Video Session Parameters object with a particular SPS-PPS IDs cannot be replaced nor updated
- * - When creating a new object using a Video Session Parameters as a template, the array’s parameters with the same SPS-PPS IDs as the ones from the template take precedence
- * - SPS/PPS parameters must comply with the limits specified in {@link VkVideoSessionCreateInfoKHR} during Video Session creation
+ * - The {@code seq_parameter_set_id} member of each {@code StdVideoH264SequenceParameterSet} structure specified in the elements of {@code pStdSPSs} must be unique within {@code pStdSPSs}
+ * - The pair constructed from the {@code seq_parameter_set_id} and {@code pic_parameter_set_id} members of each {@code StdVideoH264PictureParameterSet} structure specified in the elements of {@code pStdPPSs} must be unique within {@code pStdPPSs}
*
*
* Valid Usage (Implicit)
*
*
- * - {@code sType} must be {@link EXTVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT}
+ * - {@code sType} must be {@link KHRVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR}
* - If {@code stdSPSCount} is not 0, {@code pStdSPSs} must be a valid pointer to an array of {@code stdSPSCount} {@code StdVideoH264SequenceParameterSet} values
* - If {@code stdPPSCount} is not 0, {@code pStdPPSs} must be a valid pointer to an array of {@code stdPPSCount} {@code StdVideoH264PictureParameterSet} values
*
*
* See Also
*
- * {@link VkVideoDecodeH264SessionParametersCreateInfoEXT}
+ * {@link VkVideoDecodeH264SessionParametersCreateInfoKHR}
*
* Layout
*
*
- * struct VkVideoDecodeH264SessionParametersAddInfoEXT {
+ * struct VkVideoDecodeH264SessionParametersAddInfoKHR {
* VkStructureType {@link #sType};
* void const * {@link #pNext};
* uint32_t {@link #stdSPSCount};
@@ -57,7 +61,7 @@
* {@link StdVideoH264PictureParameterSet StdVideoH264PictureParameterSet} const * {@link #pStdPPSs};
* }
*/
-public class VkVideoDecodeH264SessionParametersAddInfoEXT extends Struct implements NativeResource {
+public class VkVideoDecodeH264SessionParametersAddInfoKHR extends Struct implements NativeResource {
/** The struct size in bytes. */
public static final int SIZEOF;
@@ -96,12 +100,12 @@ public class VkVideoDecodeH264SessionParametersAddInfoEXT extends Struct impleme
}
/**
- * Creates a {@code VkVideoDecodeH264SessionParametersAddInfoEXT} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * Creates a {@code VkVideoDecodeH264SessionParametersAddInfoKHR} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
* visible to the struct instance and vice versa.
*
* The created instance holds a strong reference to the container object.
*/
- public VkVideoDecodeH264SessionParametersAddInfoEXT(ByteBuffer container) {
+ public VkVideoDecodeH264SessionParametersAddInfoKHR(ByteBuffer container) {
super(memAddress(container), __checkContainer(container, SIZEOF));
}
@@ -114,34 +118,34 @@ public VkVideoDecodeH264SessionParametersAddInfoEXT(ByteBuffer container) {
/** {@code NULL} or a pointer to a structure extending this structure. */
@NativeType("void const *")
public long pNext() { return npNext(address()); }
- /** the number of SPS elements in {@code pStdSPSs}. Its value must be less than or equal to the value of {@code maxStdSPSCount}. */
+ /** the number of elements in the {@code pStdSPSs} array. */
@NativeType("uint32_t")
public int stdSPSCount() { return nstdSPSCount(address()); }
- /** a pointer to an array of {@code StdVideoH264SequenceParameterSet} structures representing H.264 sequence parameter sets. Each element of the array must have a unique H.264 SPS ID. */
+ /** a pointer to an array of {@code StdVideoH264SequenceParameterSet} structures describing the H.264 SPS entries to add. */
@Nullable
@NativeType("StdVideoH264SequenceParameterSet const *")
public StdVideoH264SequenceParameterSet.Buffer pStdSPSs() { return npStdSPSs(address()); }
- /** the number of PPS provided in {@code pStdPPSs}. Its value must be less than or equal to the value of {@code maxStdPPSCount}. */
+ /** the number of elements in the {@code pStdPPSs} array. */
@NativeType("uint32_t")
public int stdPPSCount() { return nstdPPSCount(address()); }
- /** a pointer to an array of {@code StdVideoH264PictureParameterSet} structures representing H.264 picture parameter sets. Each element of the array must have a unique H.264 SPS-PPS ID pair. */
+ /** a pointer to an array of {@code StdVideoH264PictureParameterSet} structures describing the H.264 PPS entries to add. */
@Nullable
@NativeType("StdVideoH264PictureParameterSet const *")
public StdVideoH264PictureParameterSet.Buffer pStdPPSs() { return npStdPPSs(address()); }
/** Sets the specified value to the {@link #sType} field. */
- public VkVideoDecodeH264SessionParametersAddInfoEXT sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT} value to the {@link #sType} field. */
- public VkVideoDecodeH264SessionParametersAddInfoEXT sType$Default() { return sType(EXTVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT); }
+ public VkVideoDecodeH264SessionParametersAddInfoKHR sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR} value to the {@link #sType} field. */
+ public VkVideoDecodeH264SessionParametersAddInfoKHR sType$Default() { return sType(KHRVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR); }
/** Sets the specified value to the {@link #pNext} field. */
- public VkVideoDecodeH264SessionParametersAddInfoEXT pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
+ public VkVideoDecodeH264SessionParametersAddInfoKHR pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
/** Sets the address of the specified {@link StdVideoH264SequenceParameterSet.Buffer} to the {@link #pStdSPSs} field. */
- public VkVideoDecodeH264SessionParametersAddInfoEXT pStdSPSs(@Nullable @NativeType("StdVideoH264SequenceParameterSet const *") StdVideoH264SequenceParameterSet.Buffer value) { npStdSPSs(address(), value); return this; }
+ public VkVideoDecodeH264SessionParametersAddInfoKHR pStdSPSs(@Nullable @NativeType("StdVideoH264SequenceParameterSet const *") StdVideoH264SequenceParameterSet.Buffer value) { npStdSPSs(address(), value); return this; }
/** Sets the address of the specified {@link StdVideoH264PictureParameterSet.Buffer} to the {@link #pStdPPSs} field. */
- public VkVideoDecodeH264SessionParametersAddInfoEXT pStdPPSs(@Nullable @NativeType("StdVideoH264PictureParameterSet const *") StdVideoH264PictureParameterSet.Buffer value) { npStdPPSs(address(), value); return this; }
+ public VkVideoDecodeH264SessionParametersAddInfoKHR pStdPPSs(@Nullable @NativeType("StdVideoH264PictureParameterSet const *") StdVideoH264PictureParameterSet.Buffer value) { npStdPPSs(address(), value); return this; }
/** Initializes this struct with the specified values. */
- public VkVideoDecodeH264SessionParametersAddInfoEXT set(
+ public VkVideoDecodeH264SessionParametersAddInfoKHR set(
int sType,
long pNext,
@Nullable StdVideoH264SequenceParameterSet.Buffer pStdSPSs,
@@ -162,149 +166,149 @@ public VkVideoDecodeH264SessionParametersAddInfoEXT set(
*
* @return this struct
*/
- public VkVideoDecodeH264SessionParametersAddInfoEXT set(VkVideoDecodeH264SessionParametersAddInfoEXT src) {
+ public VkVideoDecodeH264SessionParametersAddInfoKHR set(VkVideoDecodeH264SessionParametersAddInfoKHR src) {
memCopy(src.address(), address(), SIZEOF);
return this;
}
// -----------------------------------
- /** Returns a new {@code VkVideoDecodeH264SessionParametersAddInfoEXT} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH264SessionParametersAddInfoEXT malloc() {
- return wrap(VkVideoDecodeH264SessionParametersAddInfoEXT.class, nmemAllocChecked(SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH264SessionParametersAddInfoKHR} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH264SessionParametersAddInfoKHR malloc() {
+ return wrap(VkVideoDecodeH264SessionParametersAddInfoKHR.class, nmemAllocChecked(SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH264SessionParametersAddInfoEXT} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH264SessionParametersAddInfoEXT calloc() {
- return wrap(VkVideoDecodeH264SessionParametersAddInfoEXT.class, nmemCallocChecked(1, SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH264SessionParametersAddInfoKHR} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH264SessionParametersAddInfoKHR calloc() {
+ return wrap(VkVideoDecodeH264SessionParametersAddInfoKHR.class, nmemCallocChecked(1, SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH264SessionParametersAddInfoEXT} instance allocated with {@link BufferUtils}. */
- public static VkVideoDecodeH264SessionParametersAddInfoEXT create() {
+ /** Returns a new {@code VkVideoDecodeH264SessionParametersAddInfoKHR} instance allocated with {@link BufferUtils}. */
+ public static VkVideoDecodeH264SessionParametersAddInfoKHR create() {
ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
- return wrap(VkVideoDecodeH264SessionParametersAddInfoEXT.class, memAddress(container), container);
+ return wrap(VkVideoDecodeH264SessionParametersAddInfoKHR.class, memAddress(container), container);
}
- /** Returns a new {@code VkVideoDecodeH264SessionParametersAddInfoEXT} instance for the specified memory address. */
- public static VkVideoDecodeH264SessionParametersAddInfoEXT create(long address) {
- return wrap(VkVideoDecodeH264SessionParametersAddInfoEXT.class, address);
+ /** Returns a new {@code VkVideoDecodeH264SessionParametersAddInfoKHR} instance for the specified memory address. */
+ public static VkVideoDecodeH264SessionParametersAddInfoKHR create(long address) {
+ return wrap(VkVideoDecodeH264SessionParametersAddInfoKHR.class, address);
}
/** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH264SessionParametersAddInfoEXT createSafe(long address) {
- return address == NULL ? null : wrap(VkVideoDecodeH264SessionParametersAddInfoEXT.class, address);
+ public static VkVideoDecodeH264SessionParametersAddInfoKHR createSafe(long address) {
+ return address == NULL ? null : wrap(VkVideoDecodeH264SessionParametersAddInfoKHR.class, address);
}
/**
- * Returns a new {@link VkVideoDecodeH264SessionParametersAddInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH264SessionParametersAddInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264SessionParametersAddInfoEXT.Buffer malloc(int capacity) {
+ public static VkVideoDecodeH264SessionParametersAddInfoKHR.Buffer malloc(int capacity) {
return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH264SessionParametersAddInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH264SessionParametersAddInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264SessionParametersAddInfoEXT.Buffer calloc(int capacity) {
+ public static VkVideoDecodeH264SessionParametersAddInfoKHR.Buffer calloc(int capacity) {
return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH264SessionParametersAddInfoEXT.Buffer} instance allocated with {@link BufferUtils}.
+ * Returns a new {@link VkVideoDecodeH264SessionParametersAddInfoKHR.Buffer} instance allocated with {@link BufferUtils}.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264SessionParametersAddInfoEXT.Buffer create(int capacity) {
+ public static VkVideoDecodeH264SessionParametersAddInfoKHR.Buffer create(int capacity) {
ByteBuffer container = __create(capacity, SIZEOF);
return wrap(Buffer.class, memAddress(container), capacity, container);
}
/**
- * Create a {@link VkVideoDecodeH264SessionParametersAddInfoEXT.Buffer} instance at the specified memory.
+ * Create a {@link VkVideoDecodeH264SessionParametersAddInfoKHR.Buffer} instance at the specified memory.
*
* @param address the memory address
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264SessionParametersAddInfoEXT.Buffer create(long address, int capacity) {
+ public static VkVideoDecodeH264SessionParametersAddInfoKHR.Buffer create(long address, int capacity) {
return wrap(Buffer.class, address, capacity);
}
/** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH264SessionParametersAddInfoEXT.Buffer createSafe(long address, int capacity) {
+ public static VkVideoDecodeH264SessionParametersAddInfoKHR.Buffer createSafe(long address, int capacity) {
return address == NULL ? null : wrap(Buffer.class, address, capacity);
}
/**
- * Returns a new {@code VkVideoDecodeH264SessionParametersAddInfoEXT} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@code VkVideoDecodeH264SessionParametersAddInfoKHR} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH264SessionParametersAddInfoEXT malloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH264SessionParametersAddInfoEXT.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ public static VkVideoDecodeH264SessionParametersAddInfoKHR malloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH264SessionParametersAddInfoKHR.class, stack.nmalloc(ALIGNOF, SIZEOF));
}
/**
- * Returns a new {@code VkVideoDecodeH264SessionParametersAddInfoEXT} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@code VkVideoDecodeH264SessionParametersAddInfoKHR} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH264SessionParametersAddInfoEXT calloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH264SessionParametersAddInfoEXT.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ public static VkVideoDecodeH264SessionParametersAddInfoKHR calloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH264SessionParametersAddInfoKHR.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
}
/**
- * Returns a new {@link VkVideoDecodeH264SessionParametersAddInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@link VkVideoDecodeH264SessionParametersAddInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264SessionParametersAddInfoEXT.Buffer malloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH264SessionParametersAddInfoKHR.Buffer malloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH264SessionParametersAddInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@link VkVideoDecodeH264SessionParametersAddInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264SessionParametersAddInfoEXT.Buffer calloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH264SessionParametersAddInfoKHR.Buffer calloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
}
// -----------------------------------
/** Unsafe version of {@link #sType}. */
- public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264SessionParametersAddInfoEXT.STYPE); }
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264SessionParametersAddInfoKHR.STYPE); }
/** Unsafe version of {@link #pNext}. */
- public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH264SessionParametersAddInfoEXT.PNEXT); }
+ public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH264SessionParametersAddInfoKHR.PNEXT); }
/** Unsafe version of {@link #stdSPSCount}. */
- public static int nstdSPSCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264SessionParametersAddInfoEXT.STDSPSCOUNT); }
+ public static int nstdSPSCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264SessionParametersAddInfoKHR.STDSPSCOUNT); }
/** Unsafe version of {@link #pStdSPSs}. */
- @Nullable public static StdVideoH264SequenceParameterSet.Buffer npStdSPSs(long struct) { return StdVideoH264SequenceParameterSet.createSafe(memGetAddress(struct + VkVideoDecodeH264SessionParametersAddInfoEXT.PSTDSPSS), nstdSPSCount(struct)); }
+ @Nullable public static StdVideoH264SequenceParameterSet.Buffer npStdSPSs(long struct) { return StdVideoH264SequenceParameterSet.createSafe(memGetAddress(struct + VkVideoDecodeH264SessionParametersAddInfoKHR.PSTDSPSS), nstdSPSCount(struct)); }
/** Unsafe version of {@link #stdPPSCount}. */
- public static int nstdPPSCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264SessionParametersAddInfoEXT.STDPPSCOUNT); }
+ public static int nstdPPSCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264SessionParametersAddInfoKHR.STDPPSCOUNT); }
/** Unsafe version of {@link #pStdPPSs}. */
- @Nullable public static StdVideoH264PictureParameterSet.Buffer npStdPPSs(long struct) { return StdVideoH264PictureParameterSet.createSafe(memGetAddress(struct + VkVideoDecodeH264SessionParametersAddInfoEXT.PSTDPPSS), nstdPPSCount(struct)); }
+ @Nullable public static StdVideoH264PictureParameterSet.Buffer npStdPPSs(long struct) { return StdVideoH264PictureParameterSet.createSafe(memGetAddress(struct + VkVideoDecodeH264SessionParametersAddInfoKHR.PSTDPPSS), nstdPPSCount(struct)); }
/** Unsafe version of {@link #sType(int) sType}. */
- public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264SessionParametersAddInfoEXT.STYPE, value); }
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264SessionParametersAddInfoKHR.STYPE, value); }
/** Unsafe version of {@link #pNext(long) pNext}. */
- public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH264SessionParametersAddInfoEXT.PNEXT, value); }
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH264SessionParametersAddInfoKHR.PNEXT, value); }
/** Sets the specified value to the {@code stdSPSCount} field of the specified {@code struct}. */
- public static void nstdSPSCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264SessionParametersAddInfoEXT.STDSPSCOUNT, value); }
+ public static void nstdSPSCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264SessionParametersAddInfoKHR.STDSPSCOUNT, value); }
/** Unsafe version of {@link #pStdSPSs(StdVideoH264SequenceParameterSet.Buffer) pStdSPSs}. */
- public static void npStdSPSs(long struct, @Nullable StdVideoH264SequenceParameterSet.Buffer value) { memPutAddress(struct + VkVideoDecodeH264SessionParametersAddInfoEXT.PSTDSPSS, memAddressSafe(value)); nstdSPSCount(struct, value == null ? 0 : value.remaining()); }
+ public static void npStdSPSs(long struct, @Nullable StdVideoH264SequenceParameterSet.Buffer value) { memPutAddress(struct + VkVideoDecodeH264SessionParametersAddInfoKHR.PSTDSPSS, memAddressSafe(value)); nstdSPSCount(struct, value == null ? 0 : value.remaining()); }
/** Sets the specified value to the {@code stdPPSCount} field of the specified {@code struct}. */
- public static void nstdPPSCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264SessionParametersAddInfoEXT.STDPPSCOUNT, value); }
+ public static void nstdPPSCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264SessionParametersAddInfoKHR.STDPPSCOUNT, value); }
/** Unsafe version of {@link #pStdPPSs(StdVideoH264PictureParameterSet.Buffer) pStdPPSs}. */
- public static void npStdPPSs(long struct, @Nullable StdVideoH264PictureParameterSet.Buffer value) { memPutAddress(struct + VkVideoDecodeH264SessionParametersAddInfoEXT.PSTDPPSS, memAddressSafe(value)); nstdPPSCount(struct, value == null ? 0 : value.remaining()); }
+ public static void npStdPPSs(long struct, @Nullable StdVideoH264PictureParameterSet.Buffer value) { memPutAddress(struct + VkVideoDecodeH264SessionParametersAddInfoKHR.PSTDPPSS, memAddressSafe(value)); nstdPPSCount(struct, value == null ? 0 : value.remaining()); }
/**
* Validates pointer members that should not be {@code NULL}.
@@ -314,13 +318,13 @@ public static VkVideoDecodeH264SessionParametersAddInfoEXT.Buffer calloc(int cap
public static void validate(long struct) {
int stdSPSCount = nstdSPSCount(struct);
if (stdSPSCount != 0) {
- long pStdSPSs = memGetAddress(struct + VkVideoDecodeH264SessionParametersAddInfoEXT.PSTDSPSS);
+ long pStdSPSs = memGetAddress(struct + VkVideoDecodeH264SessionParametersAddInfoKHR.PSTDSPSS);
check(pStdSPSs);
validate(pStdSPSs, stdSPSCount, StdVideoH264SequenceParameterSet.SIZEOF, StdVideoH264SequenceParameterSet::validate);
}
int stdPPSCount = nstdPPSCount(struct);
if (stdPPSCount != 0) {
- long pStdPPSs = memGetAddress(struct + VkVideoDecodeH264SessionParametersAddInfoEXT.PSTDPPSS);
+ long pStdPPSs = memGetAddress(struct + VkVideoDecodeH264SessionParametersAddInfoKHR.PSTDPPSS);
check(pStdPPSs);
validate(pStdPPSs, stdPPSCount, StdVideoH264PictureParameterSet.SIZEOF, StdVideoH264PictureParameterSet::validate);
}
@@ -328,17 +332,17 @@ public static void validate(long struct) {
// -----------------------------------
- /** An array of {@link VkVideoDecodeH264SessionParametersAddInfoEXT} structs. */
- public static class Buffer extends StructBuffer implements NativeResource {
+ /** An array of {@link VkVideoDecodeH264SessionParametersAddInfoKHR} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
- private static final VkVideoDecodeH264SessionParametersAddInfoEXT ELEMENT_FACTORY = VkVideoDecodeH264SessionParametersAddInfoEXT.create(-1L);
+ private static final VkVideoDecodeH264SessionParametersAddInfoKHR ELEMENT_FACTORY = VkVideoDecodeH264SessionParametersAddInfoKHR.create(-1L);
/**
- * Creates a new {@code VkVideoDecodeH264SessionParametersAddInfoEXT.Buffer} instance backed by the specified container.
+ * Creates a new {@code VkVideoDecodeH264SessionParametersAddInfoKHR.Buffer} instance backed by the specified container.
*
* Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
* will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
- * by {@link VkVideoDecodeH264SessionParametersAddInfoEXT#SIZEOF}, and its mark will be undefined.
+ * by {@link VkVideoDecodeH264SessionParametersAddInfoKHR#SIZEOF}, and its mark will be undefined.
*
* The created buffer instance holds a strong reference to the container object.
*/
@@ -360,41 +364,41 @@ protected Buffer self() {
}
@Override
- protected VkVideoDecodeH264SessionParametersAddInfoEXT getElementFactory() {
+ protected VkVideoDecodeH264SessionParametersAddInfoKHR getElementFactory() {
return ELEMENT_FACTORY;
}
- /** @return the value of the {@link VkVideoDecodeH264SessionParametersAddInfoEXT#sType} field. */
+ /** @return the value of the {@link VkVideoDecodeH264SessionParametersAddInfoKHR#sType} field. */
@NativeType("VkStructureType")
- public int sType() { return VkVideoDecodeH264SessionParametersAddInfoEXT.nsType(address()); }
- /** @return the value of the {@link VkVideoDecodeH264SessionParametersAddInfoEXT#pNext} field. */
+ public int sType() { return VkVideoDecodeH264SessionParametersAddInfoKHR.nsType(address()); }
+ /** @return the value of the {@link VkVideoDecodeH264SessionParametersAddInfoKHR#pNext} field. */
@NativeType("void const *")
- public long pNext() { return VkVideoDecodeH264SessionParametersAddInfoEXT.npNext(address()); }
- /** @return the value of the {@link VkVideoDecodeH264SessionParametersAddInfoEXT#stdSPSCount} field. */
+ public long pNext() { return VkVideoDecodeH264SessionParametersAddInfoKHR.npNext(address()); }
+ /** @return the value of the {@link VkVideoDecodeH264SessionParametersAddInfoKHR#stdSPSCount} field. */
@NativeType("uint32_t")
- public int stdSPSCount() { return VkVideoDecodeH264SessionParametersAddInfoEXT.nstdSPSCount(address()); }
- /** @return a {@link StdVideoH264SequenceParameterSet.Buffer} view of the struct array pointed to by the {@link VkVideoDecodeH264SessionParametersAddInfoEXT#pStdSPSs} field. */
+ public int stdSPSCount() { return VkVideoDecodeH264SessionParametersAddInfoKHR.nstdSPSCount(address()); }
+ /** @return a {@link StdVideoH264SequenceParameterSet.Buffer} view of the struct array pointed to by the {@link VkVideoDecodeH264SessionParametersAddInfoKHR#pStdSPSs} field. */
@Nullable
@NativeType("StdVideoH264SequenceParameterSet const *")
- public StdVideoH264SequenceParameterSet.Buffer pStdSPSs() { return VkVideoDecodeH264SessionParametersAddInfoEXT.npStdSPSs(address()); }
- /** @return the value of the {@link VkVideoDecodeH264SessionParametersAddInfoEXT#stdPPSCount} field. */
+ public StdVideoH264SequenceParameterSet.Buffer pStdSPSs() { return VkVideoDecodeH264SessionParametersAddInfoKHR.npStdSPSs(address()); }
+ /** @return the value of the {@link VkVideoDecodeH264SessionParametersAddInfoKHR#stdPPSCount} field. */
@NativeType("uint32_t")
- public int stdPPSCount() { return VkVideoDecodeH264SessionParametersAddInfoEXT.nstdPPSCount(address()); }
- /** @return a {@link StdVideoH264PictureParameterSet.Buffer} view of the struct array pointed to by the {@link VkVideoDecodeH264SessionParametersAddInfoEXT#pStdPPSs} field. */
+ public int stdPPSCount() { return VkVideoDecodeH264SessionParametersAddInfoKHR.nstdPPSCount(address()); }
+ /** @return a {@link StdVideoH264PictureParameterSet.Buffer} view of the struct array pointed to by the {@link VkVideoDecodeH264SessionParametersAddInfoKHR#pStdPPSs} field. */
@Nullable
@NativeType("StdVideoH264PictureParameterSet const *")
- public StdVideoH264PictureParameterSet.Buffer pStdPPSs() { return VkVideoDecodeH264SessionParametersAddInfoEXT.npStdPPSs(address()); }
-
- /** Sets the specified value to the {@link VkVideoDecodeH264SessionParametersAddInfoEXT#sType} field. */
- public VkVideoDecodeH264SessionParametersAddInfoEXT.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH264SessionParametersAddInfoEXT.nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT} value to the {@link VkVideoDecodeH264SessionParametersAddInfoEXT#sType} field. */
- public VkVideoDecodeH264SessionParametersAddInfoEXT.Buffer sType$Default() { return sType(EXTVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT); }
- /** Sets the specified value to the {@link VkVideoDecodeH264SessionParametersAddInfoEXT#pNext} field. */
- public VkVideoDecodeH264SessionParametersAddInfoEXT.Buffer pNext(@NativeType("void const *") long value) { VkVideoDecodeH264SessionParametersAddInfoEXT.npNext(address(), value); return this; }
- /** Sets the address of the specified {@link StdVideoH264SequenceParameterSet.Buffer} to the {@link VkVideoDecodeH264SessionParametersAddInfoEXT#pStdSPSs} field. */
- public VkVideoDecodeH264SessionParametersAddInfoEXT.Buffer pStdSPSs(@Nullable @NativeType("StdVideoH264SequenceParameterSet const *") StdVideoH264SequenceParameterSet.Buffer value) { VkVideoDecodeH264SessionParametersAddInfoEXT.npStdSPSs(address(), value); return this; }
- /** Sets the address of the specified {@link StdVideoH264PictureParameterSet.Buffer} to the {@link VkVideoDecodeH264SessionParametersAddInfoEXT#pStdPPSs} field. */
- public VkVideoDecodeH264SessionParametersAddInfoEXT.Buffer pStdPPSs(@Nullable @NativeType("StdVideoH264PictureParameterSet const *") StdVideoH264PictureParameterSet.Buffer value) { VkVideoDecodeH264SessionParametersAddInfoEXT.npStdPPSs(address(), value); return this; }
+ public StdVideoH264PictureParameterSet.Buffer pStdPPSs() { return VkVideoDecodeH264SessionParametersAddInfoKHR.npStdPPSs(address()); }
+
+ /** Sets the specified value to the {@link VkVideoDecodeH264SessionParametersAddInfoKHR#sType} field. */
+ public VkVideoDecodeH264SessionParametersAddInfoKHR.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH264SessionParametersAddInfoKHR.nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR} value to the {@link VkVideoDecodeH264SessionParametersAddInfoKHR#sType} field. */
+ public VkVideoDecodeH264SessionParametersAddInfoKHR.Buffer sType$Default() { return sType(KHRVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR); }
+ /** Sets the specified value to the {@link VkVideoDecodeH264SessionParametersAddInfoKHR#pNext} field. */
+ public VkVideoDecodeH264SessionParametersAddInfoKHR.Buffer pNext(@NativeType("void const *") long value) { VkVideoDecodeH264SessionParametersAddInfoKHR.npNext(address(), value); return this; }
+ /** Sets the address of the specified {@link StdVideoH264SequenceParameterSet.Buffer} to the {@link VkVideoDecodeH264SessionParametersAddInfoKHR#pStdSPSs} field. */
+ public VkVideoDecodeH264SessionParametersAddInfoKHR.Buffer pStdSPSs(@Nullable @NativeType("StdVideoH264SequenceParameterSet const *") StdVideoH264SequenceParameterSet.Buffer value) { VkVideoDecodeH264SessionParametersAddInfoKHR.npStdSPSs(address(), value); return this; }
+ /** Sets the address of the specified {@link StdVideoH264PictureParameterSet.Buffer} to the {@link VkVideoDecodeH264SessionParametersAddInfoKHR#pStdPPSs} field. */
+ public VkVideoDecodeH264SessionParametersAddInfoKHR.Buffer pStdPPSs(@Nullable @NativeType("StdVideoH264PictureParameterSet const *") StdVideoH264PictureParameterSet.Buffer value) { VkVideoDecodeH264SessionParametersAddInfoKHR.npStdPPSs(address(), value); return this; }
}
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264SessionParametersCreateInfoEXT.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264SessionParametersCreateInfoKHR.java
similarity index 60%
rename from modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264SessionParametersCreateInfoEXT.java
rename to modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264SessionParametersCreateInfoKHR.java
index fea043948c..73cd5dcd55 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264SessionParametersCreateInfoEXT.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH264SessionParametersCreateInfoKHR.java
@@ -21,26 +21,26 @@
* Valid Usage (Implicit)
*
*
- * - {@code sType} must be {@link EXTVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT}
- * - If {@code pParametersAddInfo} is not {@code NULL}, {@code pParametersAddInfo} must be a valid pointer to a valid {@link VkVideoDecodeH264SessionParametersAddInfoEXT} structure
+ * - {@code sType} must be {@link KHRVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR}
+ * - If {@code pParametersAddInfo} is not {@code NULL}, {@code pParametersAddInfo} must be a valid pointer to a valid {@link VkVideoDecodeH264SessionParametersAddInfoKHR} structure
*
*
* See Also
*
- * {@link VkVideoDecodeH264SessionParametersAddInfoEXT}
+ * {@link VkVideoDecodeH264SessionParametersAddInfoKHR}
*
* Layout
*
*
- * struct VkVideoDecodeH264SessionParametersCreateInfoEXT {
+ * struct VkVideoDecodeH264SessionParametersCreateInfoKHR {
* VkStructureType {@link #sType};
* void const * {@link #pNext};
* uint32_t {@link #maxStdSPSCount};
* uint32_t {@link #maxStdPPSCount};
- * {@link VkVideoDecodeH264SessionParametersAddInfoEXT VkVideoDecodeH264SessionParametersAddInfoEXT} const * {@link #pParametersAddInfo};
+ * {@link VkVideoDecodeH264SessionParametersAddInfoKHR VkVideoDecodeH264SessionParametersAddInfoKHR} const * {@link #pParametersAddInfo};
* }
*/
-public class VkVideoDecodeH264SessionParametersCreateInfoEXT extends Struct implements NativeResource {
+public class VkVideoDecodeH264SessionParametersCreateInfoKHR extends Struct implements NativeResource {
/** The struct size in bytes. */
public static final int SIZEOF;
@@ -76,12 +76,12 @@ public class VkVideoDecodeH264SessionParametersCreateInfoEXT extends Struct impl
}
/**
- * Creates a {@code VkVideoDecodeH264SessionParametersCreateInfoEXT} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * Creates a {@code VkVideoDecodeH264SessionParametersCreateInfoKHR} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
* visible to the struct instance and vice versa.
*
* The created instance holds a strong reference to the container object.
*/
- public VkVideoDecodeH264SessionParametersCreateInfoEXT(ByteBuffer container) {
+ public VkVideoDecodeH264SessionParametersCreateInfoKHR(ByteBuffer container) {
super(memAddress(container), __checkContainer(container, SIZEOF));
}
@@ -94,37 +94,37 @@ public VkVideoDecodeH264SessionParametersCreateInfoEXT(ByteBuffer container) {
/** {@code NULL} or a pointer to a structure extending this structure. */
@NativeType("void const *")
public long pNext() { return npNext(address()); }
- /** the maximum number of SPS parameters that the {@code VkVideoSessionParametersKHR} can contain. */
+ /** the maximum number of H.264 SPS entries the created {@code VkVideoSessionParametersKHR} can contain. */
@NativeType("uint32_t")
public int maxStdSPSCount() { return nmaxStdSPSCount(address()); }
- /** the maximum number of PPS parameters that the {@code VkVideoSessionParametersKHR} can contain. */
+ /** the maximum number of H.264 PPS entries the created {@code VkVideoSessionParametersKHR} can contain. */
@NativeType("uint32_t")
public int maxStdPPSCount() { return nmaxStdPPSCount(address()); }
- /** {@code NULL} or a pointer to a {@link VkVideoDecodeH264SessionParametersAddInfoEXT} structure specifying H.264 parameters to add upon object creation. */
+ /** {@code NULL} or a pointer to a {@link VkVideoDecodeH264SessionParametersAddInfoKHR} structure specifying H.264 parameters to add upon object creation. */
@Nullable
- @NativeType("VkVideoDecodeH264SessionParametersAddInfoEXT const *")
- public VkVideoDecodeH264SessionParametersAddInfoEXT pParametersAddInfo() { return npParametersAddInfo(address()); }
+ @NativeType("VkVideoDecodeH264SessionParametersAddInfoKHR const *")
+ public VkVideoDecodeH264SessionParametersAddInfoKHR pParametersAddInfo() { return npParametersAddInfo(address()); }
/** Sets the specified value to the {@link #sType} field. */
- public VkVideoDecodeH264SessionParametersCreateInfoEXT sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT} value to the {@link #sType} field. */
- public VkVideoDecodeH264SessionParametersCreateInfoEXT sType$Default() { return sType(EXTVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT); }
+ public VkVideoDecodeH264SessionParametersCreateInfoKHR sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR} value to the {@link #sType} field. */
+ public VkVideoDecodeH264SessionParametersCreateInfoKHR sType$Default() { return sType(KHRVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR); }
/** Sets the specified value to the {@link #pNext} field. */
- public VkVideoDecodeH264SessionParametersCreateInfoEXT pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
+ public VkVideoDecodeH264SessionParametersCreateInfoKHR pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
/** Sets the specified value to the {@link #maxStdSPSCount} field. */
- public VkVideoDecodeH264SessionParametersCreateInfoEXT maxStdSPSCount(@NativeType("uint32_t") int value) { nmaxStdSPSCount(address(), value); return this; }
+ public VkVideoDecodeH264SessionParametersCreateInfoKHR maxStdSPSCount(@NativeType("uint32_t") int value) { nmaxStdSPSCount(address(), value); return this; }
/** Sets the specified value to the {@link #maxStdPPSCount} field. */
- public VkVideoDecodeH264SessionParametersCreateInfoEXT maxStdPPSCount(@NativeType("uint32_t") int value) { nmaxStdPPSCount(address(), value); return this; }
- /** Sets the address of the specified {@link VkVideoDecodeH264SessionParametersAddInfoEXT} to the {@link #pParametersAddInfo} field. */
- public VkVideoDecodeH264SessionParametersCreateInfoEXT pParametersAddInfo(@Nullable @NativeType("VkVideoDecodeH264SessionParametersAddInfoEXT const *") VkVideoDecodeH264SessionParametersAddInfoEXT value) { npParametersAddInfo(address(), value); return this; }
+ public VkVideoDecodeH264SessionParametersCreateInfoKHR maxStdPPSCount(@NativeType("uint32_t") int value) { nmaxStdPPSCount(address(), value); return this; }
+ /** Sets the address of the specified {@link VkVideoDecodeH264SessionParametersAddInfoKHR} to the {@link #pParametersAddInfo} field. */
+ public VkVideoDecodeH264SessionParametersCreateInfoKHR pParametersAddInfo(@Nullable @NativeType("VkVideoDecodeH264SessionParametersAddInfoKHR const *") VkVideoDecodeH264SessionParametersAddInfoKHR value) { npParametersAddInfo(address(), value); return this; }
/** Initializes this struct with the specified values. */
- public VkVideoDecodeH264SessionParametersCreateInfoEXT set(
+ public VkVideoDecodeH264SessionParametersCreateInfoKHR set(
int sType,
long pNext,
int maxStdSPSCount,
int maxStdPPSCount,
- @Nullable VkVideoDecodeH264SessionParametersAddInfoEXT pParametersAddInfo
+ @Nullable VkVideoDecodeH264SessionParametersAddInfoKHR pParametersAddInfo
) {
sType(sType);
pNext(pNext);
@@ -142,145 +142,145 @@ public VkVideoDecodeH264SessionParametersCreateInfoEXT set(
*
* @return this struct
*/
- public VkVideoDecodeH264SessionParametersCreateInfoEXT set(VkVideoDecodeH264SessionParametersCreateInfoEXT src) {
+ public VkVideoDecodeH264SessionParametersCreateInfoKHR set(VkVideoDecodeH264SessionParametersCreateInfoKHR src) {
memCopy(src.address(), address(), SIZEOF);
return this;
}
// -----------------------------------
- /** Returns a new {@code VkVideoDecodeH264SessionParametersCreateInfoEXT} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH264SessionParametersCreateInfoEXT malloc() {
- return wrap(VkVideoDecodeH264SessionParametersCreateInfoEXT.class, nmemAllocChecked(SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH264SessionParametersCreateInfoKHR} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH264SessionParametersCreateInfoKHR malloc() {
+ return wrap(VkVideoDecodeH264SessionParametersCreateInfoKHR.class, nmemAllocChecked(SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH264SessionParametersCreateInfoEXT} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH264SessionParametersCreateInfoEXT calloc() {
- return wrap(VkVideoDecodeH264SessionParametersCreateInfoEXT.class, nmemCallocChecked(1, SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH264SessionParametersCreateInfoKHR} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH264SessionParametersCreateInfoKHR calloc() {
+ return wrap(VkVideoDecodeH264SessionParametersCreateInfoKHR.class, nmemCallocChecked(1, SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH264SessionParametersCreateInfoEXT} instance allocated with {@link BufferUtils}. */
- public static VkVideoDecodeH264SessionParametersCreateInfoEXT create() {
+ /** Returns a new {@code VkVideoDecodeH264SessionParametersCreateInfoKHR} instance allocated with {@link BufferUtils}. */
+ public static VkVideoDecodeH264SessionParametersCreateInfoKHR create() {
ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
- return wrap(VkVideoDecodeH264SessionParametersCreateInfoEXT.class, memAddress(container), container);
+ return wrap(VkVideoDecodeH264SessionParametersCreateInfoKHR.class, memAddress(container), container);
}
- /** Returns a new {@code VkVideoDecodeH264SessionParametersCreateInfoEXT} instance for the specified memory address. */
- public static VkVideoDecodeH264SessionParametersCreateInfoEXT create(long address) {
- return wrap(VkVideoDecodeH264SessionParametersCreateInfoEXT.class, address);
+ /** Returns a new {@code VkVideoDecodeH264SessionParametersCreateInfoKHR} instance for the specified memory address. */
+ public static VkVideoDecodeH264SessionParametersCreateInfoKHR create(long address) {
+ return wrap(VkVideoDecodeH264SessionParametersCreateInfoKHR.class, address);
}
/** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH264SessionParametersCreateInfoEXT createSafe(long address) {
- return address == NULL ? null : wrap(VkVideoDecodeH264SessionParametersCreateInfoEXT.class, address);
+ public static VkVideoDecodeH264SessionParametersCreateInfoKHR createSafe(long address) {
+ return address == NULL ? null : wrap(VkVideoDecodeH264SessionParametersCreateInfoKHR.class, address);
}
/**
- * Returns a new {@link VkVideoDecodeH264SessionParametersCreateInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH264SessionParametersCreateInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264SessionParametersCreateInfoEXT.Buffer malloc(int capacity) {
+ public static VkVideoDecodeH264SessionParametersCreateInfoKHR.Buffer malloc(int capacity) {
return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH264SessionParametersCreateInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH264SessionParametersCreateInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264SessionParametersCreateInfoEXT.Buffer calloc(int capacity) {
+ public static VkVideoDecodeH264SessionParametersCreateInfoKHR.Buffer calloc(int capacity) {
return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH264SessionParametersCreateInfoEXT.Buffer} instance allocated with {@link BufferUtils}.
+ * Returns a new {@link VkVideoDecodeH264SessionParametersCreateInfoKHR.Buffer} instance allocated with {@link BufferUtils}.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264SessionParametersCreateInfoEXT.Buffer create(int capacity) {
+ public static VkVideoDecodeH264SessionParametersCreateInfoKHR.Buffer create(int capacity) {
ByteBuffer container = __create(capacity, SIZEOF);
return wrap(Buffer.class, memAddress(container), capacity, container);
}
/**
- * Create a {@link VkVideoDecodeH264SessionParametersCreateInfoEXT.Buffer} instance at the specified memory.
+ * Create a {@link VkVideoDecodeH264SessionParametersCreateInfoKHR.Buffer} instance at the specified memory.
*
* @param address the memory address
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264SessionParametersCreateInfoEXT.Buffer create(long address, int capacity) {
+ public static VkVideoDecodeH264SessionParametersCreateInfoKHR.Buffer create(long address, int capacity) {
return wrap(Buffer.class, address, capacity);
}
/** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH264SessionParametersCreateInfoEXT.Buffer createSafe(long address, int capacity) {
+ public static VkVideoDecodeH264SessionParametersCreateInfoKHR.Buffer createSafe(long address, int capacity) {
return address == NULL ? null : wrap(Buffer.class, address, capacity);
}
/**
- * Returns a new {@code VkVideoDecodeH264SessionParametersCreateInfoEXT} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@code VkVideoDecodeH264SessionParametersCreateInfoKHR} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH264SessionParametersCreateInfoEXT malloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH264SessionParametersCreateInfoEXT.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ public static VkVideoDecodeH264SessionParametersCreateInfoKHR malloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH264SessionParametersCreateInfoKHR.class, stack.nmalloc(ALIGNOF, SIZEOF));
}
/**
- * Returns a new {@code VkVideoDecodeH264SessionParametersCreateInfoEXT} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@code VkVideoDecodeH264SessionParametersCreateInfoKHR} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH264SessionParametersCreateInfoEXT calloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH264SessionParametersCreateInfoEXT.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ public static VkVideoDecodeH264SessionParametersCreateInfoKHR calloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH264SessionParametersCreateInfoKHR.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
}
/**
- * Returns a new {@link VkVideoDecodeH264SessionParametersCreateInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@link VkVideoDecodeH264SessionParametersCreateInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264SessionParametersCreateInfoEXT.Buffer malloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH264SessionParametersCreateInfoKHR.Buffer malloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH264SessionParametersCreateInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@link VkVideoDecodeH264SessionParametersCreateInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH264SessionParametersCreateInfoEXT.Buffer calloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH264SessionParametersCreateInfoKHR.Buffer calloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
}
// -----------------------------------
/** Unsafe version of {@link #sType}. */
- public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264SessionParametersCreateInfoEXT.STYPE); }
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264SessionParametersCreateInfoKHR.STYPE); }
/** Unsafe version of {@link #pNext}. */
- public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH264SessionParametersCreateInfoEXT.PNEXT); }
+ public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH264SessionParametersCreateInfoKHR.PNEXT); }
/** Unsafe version of {@link #maxStdSPSCount}. */
- public static int nmaxStdSPSCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264SessionParametersCreateInfoEXT.MAXSTDSPSCOUNT); }
+ public static int nmaxStdSPSCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264SessionParametersCreateInfoKHR.MAXSTDSPSCOUNT); }
/** Unsafe version of {@link #maxStdPPSCount}. */
- public static int nmaxStdPPSCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264SessionParametersCreateInfoEXT.MAXSTDPPSCOUNT); }
+ public static int nmaxStdPPSCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH264SessionParametersCreateInfoKHR.MAXSTDPPSCOUNT); }
/** Unsafe version of {@link #pParametersAddInfo}. */
- @Nullable public static VkVideoDecodeH264SessionParametersAddInfoEXT npParametersAddInfo(long struct) { return VkVideoDecodeH264SessionParametersAddInfoEXT.createSafe(memGetAddress(struct + VkVideoDecodeH264SessionParametersCreateInfoEXT.PPARAMETERSADDINFO)); }
+ @Nullable public static VkVideoDecodeH264SessionParametersAddInfoKHR npParametersAddInfo(long struct) { return VkVideoDecodeH264SessionParametersAddInfoKHR.createSafe(memGetAddress(struct + VkVideoDecodeH264SessionParametersCreateInfoKHR.PPARAMETERSADDINFO)); }
/** Unsafe version of {@link #sType(int) sType}. */
- public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264SessionParametersCreateInfoEXT.STYPE, value); }
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264SessionParametersCreateInfoKHR.STYPE, value); }
/** Unsafe version of {@link #pNext(long) pNext}. */
- public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH264SessionParametersCreateInfoEXT.PNEXT, value); }
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH264SessionParametersCreateInfoKHR.PNEXT, value); }
/** Unsafe version of {@link #maxStdSPSCount(int) maxStdSPSCount}. */
- public static void nmaxStdSPSCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264SessionParametersCreateInfoEXT.MAXSTDSPSCOUNT, value); }
+ public static void nmaxStdSPSCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264SessionParametersCreateInfoKHR.MAXSTDSPSCOUNT, value); }
/** Unsafe version of {@link #maxStdPPSCount(int) maxStdPPSCount}. */
- public static void nmaxStdPPSCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264SessionParametersCreateInfoEXT.MAXSTDPPSCOUNT, value); }
- /** Unsafe version of {@link #pParametersAddInfo(VkVideoDecodeH264SessionParametersAddInfoEXT) pParametersAddInfo}. */
- public static void npParametersAddInfo(long struct, @Nullable VkVideoDecodeH264SessionParametersAddInfoEXT value) { memPutAddress(struct + VkVideoDecodeH264SessionParametersCreateInfoEXT.PPARAMETERSADDINFO, memAddressSafe(value)); }
+ public static void nmaxStdPPSCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH264SessionParametersCreateInfoKHR.MAXSTDPPSCOUNT, value); }
+ /** Unsafe version of {@link #pParametersAddInfo(VkVideoDecodeH264SessionParametersAddInfoKHR) pParametersAddInfo}. */
+ public static void npParametersAddInfo(long struct, @Nullable VkVideoDecodeH264SessionParametersAddInfoKHR value) { memPutAddress(struct + VkVideoDecodeH264SessionParametersCreateInfoKHR.PPARAMETERSADDINFO, memAddressSafe(value)); }
/**
* Validates pointer members that should not be {@code NULL}.
@@ -288,25 +288,25 @@ public static VkVideoDecodeH264SessionParametersCreateInfoEXT.Buffer calloc(int
* @param struct the struct to validate
*/
public static void validate(long struct) {
- long pParametersAddInfo = memGetAddress(struct + VkVideoDecodeH264SessionParametersCreateInfoEXT.PPARAMETERSADDINFO);
+ long pParametersAddInfo = memGetAddress(struct + VkVideoDecodeH264SessionParametersCreateInfoKHR.PPARAMETERSADDINFO);
if (pParametersAddInfo != NULL) {
- VkVideoDecodeH264SessionParametersAddInfoEXT.validate(pParametersAddInfo);
+ VkVideoDecodeH264SessionParametersAddInfoKHR.validate(pParametersAddInfo);
}
}
// -----------------------------------
- /** An array of {@link VkVideoDecodeH264SessionParametersCreateInfoEXT} structs. */
- public static class Buffer extends StructBuffer implements NativeResource {
+ /** An array of {@link VkVideoDecodeH264SessionParametersCreateInfoKHR} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
- private static final VkVideoDecodeH264SessionParametersCreateInfoEXT ELEMENT_FACTORY = VkVideoDecodeH264SessionParametersCreateInfoEXT.create(-1L);
+ private static final VkVideoDecodeH264SessionParametersCreateInfoKHR ELEMENT_FACTORY = VkVideoDecodeH264SessionParametersCreateInfoKHR.create(-1L);
/**
- * Creates a new {@code VkVideoDecodeH264SessionParametersCreateInfoEXT.Buffer} instance backed by the specified container.
+ * Creates a new {@code VkVideoDecodeH264SessionParametersCreateInfoKHR.Buffer} instance backed by the specified container.
*
* Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
* will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
- * by {@link VkVideoDecodeH264SessionParametersCreateInfoEXT#SIZEOF}, and its mark will be undefined.
+ * by {@link VkVideoDecodeH264SessionParametersCreateInfoKHR#SIZEOF}, and its mark will be undefined.
*
* The created buffer instance holds a strong reference to the container object.
*/
@@ -328,39 +328,39 @@ protected Buffer self() {
}
@Override
- protected VkVideoDecodeH264SessionParametersCreateInfoEXT getElementFactory() {
+ protected VkVideoDecodeH264SessionParametersCreateInfoKHR getElementFactory() {
return ELEMENT_FACTORY;
}
- /** @return the value of the {@link VkVideoDecodeH264SessionParametersCreateInfoEXT#sType} field. */
+ /** @return the value of the {@link VkVideoDecodeH264SessionParametersCreateInfoKHR#sType} field. */
@NativeType("VkStructureType")
- public int sType() { return VkVideoDecodeH264SessionParametersCreateInfoEXT.nsType(address()); }
- /** @return the value of the {@link VkVideoDecodeH264SessionParametersCreateInfoEXT#pNext} field. */
+ public int sType() { return VkVideoDecodeH264SessionParametersCreateInfoKHR.nsType(address()); }
+ /** @return the value of the {@link VkVideoDecodeH264SessionParametersCreateInfoKHR#pNext} field. */
@NativeType("void const *")
- public long pNext() { return VkVideoDecodeH264SessionParametersCreateInfoEXT.npNext(address()); }
- /** @return the value of the {@link VkVideoDecodeH264SessionParametersCreateInfoEXT#maxStdSPSCount} field. */
+ public long pNext() { return VkVideoDecodeH264SessionParametersCreateInfoKHR.npNext(address()); }
+ /** @return the value of the {@link VkVideoDecodeH264SessionParametersCreateInfoKHR#maxStdSPSCount} field. */
@NativeType("uint32_t")
- public int maxStdSPSCount() { return VkVideoDecodeH264SessionParametersCreateInfoEXT.nmaxStdSPSCount(address()); }
- /** @return the value of the {@link VkVideoDecodeH264SessionParametersCreateInfoEXT#maxStdPPSCount} field. */
+ public int maxStdSPSCount() { return VkVideoDecodeH264SessionParametersCreateInfoKHR.nmaxStdSPSCount(address()); }
+ /** @return the value of the {@link VkVideoDecodeH264SessionParametersCreateInfoKHR#maxStdPPSCount} field. */
@NativeType("uint32_t")
- public int maxStdPPSCount() { return VkVideoDecodeH264SessionParametersCreateInfoEXT.nmaxStdPPSCount(address()); }
- /** @return a {@link VkVideoDecodeH264SessionParametersAddInfoEXT} view of the struct pointed to by the {@link VkVideoDecodeH264SessionParametersCreateInfoEXT#pParametersAddInfo} field. */
+ public int maxStdPPSCount() { return VkVideoDecodeH264SessionParametersCreateInfoKHR.nmaxStdPPSCount(address()); }
+ /** @return a {@link VkVideoDecodeH264SessionParametersAddInfoKHR} view of the struct pointed to by the {@link VkVideoDecodeH264SessionParametersCreateInfoKHR#pParametersAddInfo} field. */
@Nullable
- @NativeType("VkVideoDecodeH264SessionParametersAddInfoEXT const *")
- public VkVideoDecodeH264SessionParametersAddInfoEXT pParametersAddInfo() { return VkVideoDecodeH264SessionParametersCreateInfoEXT.npParametersAddInfo(address()); }
-
- /** Sets the specified value to the {@link VkVideoDecodeH264SessionParametersCreateInfoEXT#sType} field. */
- public VkVideoDecodeH264SessionParametersCreateInfoEXT.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH264SessionParametersCreateInfoEXT.nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT} value to the {@link VkVideoDecodeH264SessionParametersCreateInfoEXT#sType} field. */
- public VkVideoDecodeH264SessionParametersCreateInfoEXT.Buffer sType$Default() { return sType(EXTVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT); }
- /** Sets the specified value to the {@link VkVideoDecodeH264SessionParametersCreateInfoEXT#pNext} field. */
- public VkVideoDecodeH264SessionParametersCreateInfoEXT.Buffer pNext(@NativeType("void const *") long value) { VkVideoDecodeH264SessionParametersCreateInfoEXT.npNext(address(), value); return this; }
- /** Sets the specified value to the {@link VkVideoDecodeH264SessionParametersCreateInfoEXT#maxStdSPSCount} field. */
- public VkVideoDecodeH264SessionParametersCreateInfoEXT.Buffer maxStdSPSCount(@NativeType("uint32_t") int value) { VkVideoDecodeH264SessionParametersCreateInfoEXT.nmaxStdSPSCount(address(), value); return this; }
- /** Sets the specified value to the {@link VkVideoDecodeH264SessionParametersCreateInfoEXT#maxStdPPSCount} field. */
- public VkVideoDecodeH264SessionParametersCreateInfoEXT.Buffer maxStdPPSCount(@NativeType("uint32_t") int value) { VkVideoDecodeH264SessionParametersCreateInfoEXT.nmaxStdPPSCount(address(), value); return this; }
- /** Sets the address of the specified {@link VkVideoDecodeH264SessionParametersAddInfoEXT} to the {@link VkVideoDecodeH264SessionParametersCreateInfoEXT#pParametersAddInfo} field. */
- public VkVideoDecodeH264SessionParametersCreateInfoEXT.Buffer pParametersAddInfo(@Nullable @NativeType("VkVideoDecodeH264SessionParametersAddInfoEXT const *") VkVideoDecodeH264SessionParametersAddInfoEXT value) { VkVideoDecodeH264SessionParametersCreateInfoEXT.npParametersAddInfo(address(), value); return this; }
+ @NativeType("VkVideoDecodeH264SessionParametersAddInfoKHR const *")
+ public VkVideoDecodeH264SessionParametersAddInfoKHR pParametersAddInfo() { return VkVideoDecodeH264SessionParametersCreateInfoKHR.npParametersAddInfo(address()); }
+
+ /** Sets the specified value to the {@link VkVideoDecodeH264SessionParametersCreateInfoKHR#sType} field. */
+ public VkVideoDecodeH264SessionParametersCreateInfoKHR.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH264SessionParametersCreateInfoKHR.nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH264#VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR} value to the {@link VkVideoDecodeH264SessionParametersCreateInfoKHR#sType} field. */
+ public VkVideoDecodeH264SessionParametersCreateInfoKHR.Buffer sType$Default() { return sType(KHRVideoDecodeH264.VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR); }
+ /** Sets the specified value to the {@link VkVideoDecodeH264SessionParametersCreateInfoKHR#pNext} field. */
+ public VkVideoDecodeH264SessionParametersCreateInfoKHR.Buffer pNext(@NativeType("void const *") long value) { VkVideoDecodeH264SessionParametersCreateInfoKHR.npNext(address(), value); return this; }
+ /** Sets the specified value to the {@link VkVideoDecodeH264SessionParametersCreateInfoKHR#maxStdSPSCount} field. */
+ public VkVideoDecodeH264SessionParametersCreateInfoKHR.Buffer maxStdSPSCount(@NativeType("uint32_t") int value) { VkVideoDecodeH264SessionParametersCreateInfoKHR.nmaxStdSPSCount(address(), value); return this; }
+ /** Sets the specified value to the {@link VkVideoDecodeH264SessionParametersCreateInfoKHR#maxStdPPSCount} field. */
+ public VkVideoDecodeH264SessionParametersCreateInfoKHR.Buffer maxStdPPSCount(@NativeType("uint32_t") int value) { VkVideoDecodeH264SessionParametersCreateInfoKHR.nmaxStdPPSCount(address(), value); return this; }
+ /** Sets the address of the specified {@link VkVideoDecodeH264SessionParametersAddInfoKHR} to the {@link VkVideoDecodeH264SessionParametersCreateInfoKHR#pParametersAddInfo} field. */
+ public VkVideoDecodeH264SessionParametersCreateInfoKHR.Buffer pParametersAddInfo(@Nullable @NativeType("VkVideoDecodeH264SessionParametersAddInfoKHR const *") VkVideoDecodeH264SessionParametersAddInfoKHR value) { VkVideoDecodeH264SessionParametersCreateInfoKHR.npParametersAddInfo(address(), value); return this; }
}
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265CapabilitiesEXT.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265CapabilitiesKHR.java
similarity index 61%
rename from modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265CapabilitiesEXT.java
rename to modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265CapabilitiesKHR.java
index 7a1356bb34..8cc79e38f4 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265CapabilitiesEXT.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265CapabilitiesKHR.java
@@ -18,24 +18,24 @@
import org.lwjgl.vulkan.video.*;
/**
- * Structure specifies H.265 decode capabilities parameters when decoding a frame.
+ * Structure describing H.265 decode capabilities.
*
* Valid Usage (Implicit)
*
*
- * - {@code sType} must be {@link EXTVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT}
+ * - {@code sType} must be {@link KHRVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR}
*
*
* Layout
*
*
- * struct VkVideoDecodeH265CapabilitiesEXT {
+ * struct VkVideoDecodeH265CapabilitiesKHR {
* VkStructureType {@link #sType};
* void * {@link #pNext};
- * StdVideoH265LevelIdc maxLevelIdc;
+ * StdVideoH265LevelIdc {@link #maxLevelIdc};
* }
*/
-public class VkVideoDecodeH265CapabilitiesEXT extends Struct implements NativeResource {
+public class VkVideoDecodeH265CapabilitiesKHR extends Struct implements NativeResource {
/** The struct size in bytes. */
public static final int SIZEOF;
@@ -65,12 +65,12 @@ public class VkVideoDecodeH265CapabilitiesEXT extends Struct implements NativeRe
}
/**
- * Creates a {@code VkVideoDecodeH265CapabilitiesEXT} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * Creates a {@code VkVideoDecodeH265CapabilitiesKHR} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
* visible to the struct instance and vice versa.
*
* The created instance holds a strong reference to the container object.
*/
- public VkVideoDecodeH265CapabilitiesEXT(ByteBuffer container) {
+ public VkVideoDecodeH265CapabilitiesKHR(ByteBuffer container) {
super(memAddress(container), __checkContainer(container, SIZEOF));
}
@@ -83,19 +83,19 @@ public VkVideoDecodeH265CapabilitiesEXT(ByteBuffer container) {
/** {@code NULL} or a pointer to a structure extending this structure. */
@NativeType("void *")
public long pNext() { return npNext(address()); }
- /** @return the value of the {@code maxLevelIdc} field. */
+ /** a {@code StdVideoH265LevelIdc} value specifying the maximum H.265 level supported by the profile, as defined in section A.4 of the ITU-T H.265 Specification. */
@NativeType("StdVideoH265LevelIdc")
public int maxLevelIdc() { return nmaxLevelIdc(address()); }
/** Sets the specified value to the {@link #sType} field. */
- public VkVideoDecodeH265CapabilitiesEXT sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT} value to the {@link #sType} field. */
- public VkVideoDecodeH265CapabilitiesEXT sType$Default() { return sType(EXTVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT); }
+ public VkVideoDecodeH265CapabilitiesKHR sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR} value to the {@link #sType} field. */
+ public VkVideoDecodeH265CapabilitiesKHR sType$Default() { return sType(KHRVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR); }
/** Sets the specified value to the {@link #pNext} field. */
- public VkVideoDecodeH265CapabilitiesEXT pNext(@NativeType("void *") long value) { npNext(address(), value); return this; }
+ public VkVideoDecodeH265CapabilitiesKHR pNext(@NativeType("void *") long value) { npNext(address(), value); return this; }
/** Initializes this struct with the specified values. */
- public VkVideoDecodeH265CapabilitiesEXT set(
+ public VkVideoDecodeH265CapabilitiesKHR set(
int sType,
long pNext
) {
@@ -112,149 +112,149 @@ public VkVideoDecodeH265CapabilitiesEXT set(
*
* @return this struct
*/
- public VkVideoDecodeH265CapabilitiesEXT set(VkVideoDecodeH265CapabilitiesEXT src) {
+ public VkVideoDecodeH265CapabilitiesKHR set(VkVideoDecodeH265CapabilitiesKHR src) {
memCopy(src.address(), address(), SIZEOF);
return this;
}
// -----------------------------------
- /** Returns a new {@code VkVideoDecodeH265CapabilitiesEXT} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH265CapabilitiesEXT malloc() {
- return wrap(VkVideoDecodeH265CapabilitiesEXT.class, nmemAllocChecked(SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH265CapabilitiesKHR} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH265CapabilitiesKHR malloc() {
+ return wrap(VkVideoDecodeH265CapabilitiesKHR.class, nmemAllocChecked(SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH265CapabilitiesEXT} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH265CapabilitiesEXT calloc() {
- return wrap(VkVideoDecodeH265CapabilitiesEXT.class, nmemCallocChecked(1, SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH265CapabilitiesKHR} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH265CapabilitiesKHR calloc() {
+ return wrap(VkVideoDecodeH265CapabilitiesKHR.class, nmemCallocChecked(1, SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH265CapabilitiesEXT} instance allocated with {@link BufferUtils}. */
- public static VkVideoDecodeH265CapabilitiesEXT create() {
+ /** Returns a new {@code VkVideoDecodeH265CapabilitiesKHR} instance allocated with {@link BufferUtils}. */
+ public static VkVideoDecodeH265CapabilitiesKHR create() {
ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
- return wrap(VkVideoDecodeH265CapabilitiesEXT.class, memAddress(container), container);
+ return wrap(VkVideoDecodeH265CapabilitiesKHR.class, memAddress(container), container);
}
- /** Returns a new {@code VkVideoDecodeH265CapabilitiesEXT} instance for the specified memory address. */
- public static VkVideoDecodeH265CapabilitiesEXT create(long address) {
- return wrap(VkVideoDecodeH265CapabilitiesEXT.class, address);
+ /** Returns a new {@code VkVideoDecodeH265CapabilitiesKHR} instance for the specified memory address. */
+ public static VkVideoDecodeH265CapabilitiesKHR create(long address) {
+ return wrap(VkVideoDecodeH265CapabilitiesKHR.class, address);
}
/** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH265CapabilitiesEXT createSafe(long address) {
- return address == NULL ? null : wrap(VkVideoDecodeH265CapabilitiesEXT.class, address);
+ public static VkVideoDecodeH265CapabilitiesKHR createSafe(long address) {
+ return address == NULL ? null : wrap(VkVideoDecodeH265CapabilitiesKHR.class, address);
}
/**
- * Returns a new {@link VkVideoDecodeH265CapabilitiesEXT.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH265CapabilitiesKHR.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265CapabilitiesEXT.Buffer malloc(int capacity) {
+ public static VkVideoDecodeH265CapabilitiesKHR.Buffer malloc(int capacity) {
return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH265CapabilitiesEXT.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH265CapabilitiesKHR.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265CapabilitiesEXT.Buffer calloc(int capacity) {
+ public static VkVideoDecodeH265CapabilitiesKHR.Buffer calloc(int capacity) {
return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH265CapabilitiesEXT.Buffer} instance allocated with {@link BufferUtils}.
+ * Returns a new {@link VkVideoDecodeH265CapabilitiesKHR.Buffer} instance allocated with {@link BufferUtils}.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265CapabilitiesEXT.Buffer create(int capacity) {
+ public static VkVideoDecodeH265CapabilitiesKHR.Buffer create(int capacity) {
ByteBuffer container = __create(capacity, SIZEOF);
return wrap(Buffer.class, memAddress(container), capacity, container);
}
/**
- * Create a {@link VkVideoDecodeH265CapabilitiesEXT.Buffer} instance at the specified memory.
+ * Create a {@link VkVideoDecodeH265CapabilitiesKHR.Buffer} instance at the specified memory.
*
* @param address the memory address
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265CapabilitiesEXT.Buffer create(long address, int capacity) {
+ public static VkVideoDecodeH265CapabilitiesKHR.Buffer create(long address, int capacity) {
return wrap(Buffer.class, address, capacity);
}
/** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH265CapabilitiesEXT.Buffer createSafe(long address, int capacity) {
+ public static VkVideoDecodeH265CapabilitiesKHR.Buffer createSafe(long address, int capacity) {
return address == NULL ? null : wrap(Buffer.class, address, capacity);
}
/**
- * Returns a new {@code VkVideoDecodeH265CapabilitiesEXT} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@code VkVideoDecodeH265CapabilitiesKHR} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH265CapabilitiesEXT malloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH265CapabilitiesEXT.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ public static VkVideoDecodeH265CapabilitiesKHR malloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH265CapabilitiesKHR.class, stack.nmalloc(ALIGNOF, SIZEOF));
}
/**
- * Returns a new {@code VkVideoDecodeH265CapabilitiesEXT} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@code VkVideoDecodeH265CapabilitiesKHR} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH265CapabilitiesEXT calloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH265CapabilitiesEXT.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ public static VkVideoDecodeH265CapabilitiesKHR calloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH265CapabilitiesKHR.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
}
/**
- * Returns a new {@link VkVideoDecodeH265CapabilitiesEXT.Buffer} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@link VkVideoDecodeH265CapabilitiesKHR.Buffer} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265CapabilitiesEXT.Buffer malloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH265CapabilitiesKHR.Buffer malloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH265CapabilitiesEXT.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@link VkVideoDecodeH265CapabilitiesKHR.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265CapabilitiesEXT.Buffer calloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH265CapabilitiesKHR.Buffer calloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
}
// -----------------------------------
/** Unsafe version of {@link #sType}. */
- public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265CapabilitiesEXT.STYPE); }
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265CapabilitiesKHR.STYPE); }
/** Unsafe version of {@link #pNext}. */
- public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH265CapabilitiesEXT.PNEXT); }
+ public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH265CapabilitiesKHR.PNEXT); }
/** Unsafe version of {@link #maxLevelIdc}. */
- public static int nmaxLevelIdc(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265CapabilitiesEXT.MAXLEVELIDC); }
+ public static int nmaxLevelIdc(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265CapabilitiesKHR.MAXLEVELIDC); }
/** Unsafe version of {@link #sType(int) sType}. */
- public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265CapabilitiesEXT.STYPE, value); }
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265CapabilitiesKHR.STYPE, value); }
/** Unsafe version of {@link #pNext(long) pNext}. */
- public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH265CapabilitiesEXT.PNEXT, value); }
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH265CapabilitiesKHR.PNEXT, value); }
// -----------------------------------
- /** An array of {@link VkVideoDecodeH265CapabilitiesEXT} structs. */
- public static class Buffer extends StructBuffer implements NativeResource {
+ /** An array of {@link VkVideoDecodeH265CapabilitiesKHR} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
- private static final VkVideoDecodeH265CapabilitiesEXT ELEMENT_FACTORY = VkVideoDecodeH265CapabilitiesEXT.create(-1L);
+ private static final VkVideoDecodeH265CapabilitiesKHR ELEMENT_FACTORY = VkVideoDecodeH265CapabilitiesKHR.create(-1L);
/**
- * Creates a new {@code VkVideoDecodeH265CapabilitiesEXT.Buffer} instance backed by the specified container.
+ * Creates a new {@code VkVideoDecodeH265CapabilitiesKHR.Buffer} instance backed by the specified container.
*
* Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
* will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
- * by {@link VkVideoDecodeH265CapabilitiesEXT#SIZEOF}, and its mark will be undefined.
+ * by {@link VkVideoDecodeH265CapabilitiesKHR#SIZEOF}, and its mark will be undefined.
*
* The created buffer instance holds a strong reference to the container object.
*/
@@ -276,26 +276,26 @@ protected Buffer self() {
}
@Override
- protected VkVideoDecodeH265CapabilitiesEXT getElementFactory() {
+ protected VkVideoDecodeH265CapabilitiesKHR getElementFactory() {
return ELEMENT_FACTORY;
}
- /** @return the value of the {@link VkVideoDecodeH265CapabilitiesEXT#sType} field. */
+ /** @return the value of the {@link VkVideoDecodeH265CapabilitiesKHR#sType} field. */
@NativeType("VkStructureType")
- public int sType() { return VkVideoDecodeH265CapabilitiesEXT.nsType(address()); }
- /** @return the value of the {@link VkVideoDecodeH265CapabilitiesEXT#pNext} field. */
+ public int sType() { return VkVideoDecodeH265CapabilitiesKHR.nsType(address()); }
+ /** @return the value of the {@link VkVideoDecodeH265CapabilitiesKHR#pNext} field. */
@NativeType("void *")
- public long pNext() { return VkVideoDecodeH265CapabilitiesEXT.npNext(address()); }
- /** @return the value of the {@code maxLevelIdc} field. */
+ public long pNext() { return VkVideoDecodeH265CapabilitiesKHR.npNext(address()); }
+ /** @return the value of the {@link VkVideoDecodeH265CapabilitiesKHR#maxLevelIdc} field. */
@NativeType("StdVideoH265LevelIdc")
- public int maxLevelIdc() { return VkVideoDecodeH265CapabilitiesEXT.nmaxLevelIdc(address()); }
-
- /** Sets the specified value to the {@link VkVideoDecodeH265CapabilitiesEXT#sType} field. */
- public VkVideoDecodeH265CapabilitiesEXT.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH265CapabilitiesEXT.nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT} value to the {@link VkVideoDecodeH265CapabilitiesEXT#sType} field. */
- public VkVideoDecodeH265CapabilitiesEXT.Buffer sType$Default() { return sType(EXTVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT); }
- /** Sets the specified value to the {@link VkVideoDecodeH265CapabilitiesEXT#pNext} field. */
- public VkVideoDecodeH265CapabilitiesEXT.Buffer pNext(@NativeType("void *") long value) { VkVideoDecodeH265CapabilitiesEXT.npNext(address(), value); return this; }
+ public int maxLevelIdc() { return VkVideoDecodeH265CapabilitiesKHR.nmaxLevelIdc(address()); }
+
+ /** Sets the specified value to the {@link VkVideoDecodeH265CapabilitiesKHR#sType} field. */
+ public VkVideoDecodeH265CapabilitiesKHR.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH265CapabilitiesKHR.nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR} value to the {@link VkVideoDecodeH265CapabilitiesKHR#sType} field. */
+ public VkVideoDecodeH265CapabilitiesKHR.Buffer sType$Default() { return sType(KHRVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR); }
+ /** Sets the specified value to the {@link VkVideoDecodeH265CapabilitiesKHR#pNext} field. */
+ public VkVideoDecodeH265CapabilitiesKHR.Buffer pNext(@NativeType("void *") long value) { VkVideoDecodeH265CapabilitiesKHR.npNext(address(), value); return this; }
}
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265DpbSlotInfoEXT.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265DpbSlotInfoKHR.java
similarity index 54%
rename from modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265DpbSlotInfoEXT.java
rename to modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265DpbSlotInfoKHR.java
index a6331f0333..0055c59f1d 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265DpbSlotInfoEXT.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265DpbSlotInfoKHR.java
@@ -21,23 +21,54 @@
/**
* Structure specifies H.265 DPB information when decoding a frame.
*
+ * Description
+ *
+ * This structure is specified in the {@code pNext} chain of {@link VkVideoDecodeInfoKHR}{@code ::pSetupReferenceSlot}, if not {@code NULL}, and the {@code pNext} chain of the elements of {@link VkVideoDecodeInfoKHR}{@code ::pReferenceSlots} to specify the codec-specific reference picture information for an H.265 decode operation.
+ *
+ *
+ * - Active Reference Picture Information
+ *
+ * - The image subregion used is determined according to the H.265 Decode Picture Data Access section.
+ * - The reference picture is associated with the DPB slot index specified in the {@code slotIndex} member of the corresponding element of {@link VkVideoDecodeInfoKHR}{@code ::pReferenceSlots}.
+ * - The reference picture is associated with the H.265 reference information provided in {@code pStdReferenceInfo}.
+ *
+ *
+ *
+ *
+ * - Reconstructed Picture Information
+ *
+ * - The image subregion used is determined according to the H.265 Decode Picture Data Access section.
+ * - The reconstructed picture is used to activate the DPB slot with the index specified in {@link VkVideoDecodeInfoKHR}{@code ::pSetupReferenceSlot→slotIndex}.
+ * - The reconstructed picture is associated with the H.265 reference information provided in {@code pStdReferenceInfo}.
+ *
+ *
+ *
+ *
+ * - Std Reference Information
+ *
+ * - {@code flags.used_for_long_term_reference} is used to indicate whether the picture is marked as “used for long-term reference” as defined in section 8.3.2 of the ITU-T H.265 Specification;
+ * - {@code flags.unused_for_reference} is used to indicate whether the picture is marked as “unused for reference” as defined in section 8.3.2 of the ITU-T H.265 Specification;
+ * - all other members are interpreted as defined in section 8.3 of the ITU-T H.265 Specification.
+ *
+ *
+ *
* Valid Usage (Implicit)
*
*
- * - {@code sType} must be {@link EXTVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT}
+ * - {@code sType} must be {@link KHRVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR}
* - {@code pStdReferenceInfo} must be a valid pointer to a valid {@code StdVideoDecodeH265ReferenceInfo} value
*
*
* Layout
*
*
- * struct VkVideoDecodeH265DpbSlotInfoEXT {
+ * struct VkVideoDecodeH265DpbSlotInfoKHR {
* VkStructureType {@link #sType};
* void const * {@link #pNext};
* {@link StdVideoDecodeH265ReferenceInfo StdVideoDecodeH265ReferenceInfo} const * {@link #pStdReferenceInfo};
* }
*/
-public class VkVideoDecodeH265DpbSlotInfoEXT extends Struct implements NativeResource {
+public class VkVideoDecodeH265DpbSlotInfoKHR extends Struct implements NativeResource {
/** The struct size in bytes. */
public static final int SIZEOF;
@@ -67,12 +98,12 @@ public class VkVideoDecodeH265DpbSlotInfoEXT extends Struct implements NativeRes
}
/**
- * Creates a {@code VkVideoDecodeH265DpbSlotInfoEXT} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * Creates a {@code VkVideoDecodeH265DpbSlotInfoKHR} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
* visible to the struct instance and vice versa.
*
* The created instance holds a strong reference to the container object.
*/
- public VkVideoDecodeH265DpbSlotInfoEXT(ByteBuffer container) {
+ public VkVideoDecodeH265DpbSlotInfoKHR(ByteBuffer container) {
super(memAddress(container), __checkContainer(container, SIZEOF));
}
@@ -85,21 +116,21 @@ public VkVideoDecodeH265DpbSlotInfoEXT(ByteBuffer container) {
/** {@code NULL} or a pointer to a structure extending this structure. */
@NativeType("void const *")
public long pNext() { return npNext(address()); }
- /** a pointer to a {@code StdVideoDecodeH265ReferenceInfo} structure specifying the codec standard specific picture reference information from the H.264 specification. */
+ /** a pointer to a {@code StdVideoDecodeH265ReferenceInfo} structure specifying reference picture information described in section 8.3 of the ITU-T H.265 Specification. */
@NativeType("StdVideoDecodeH265ReferenceInfo const *")
public StdVideoDecodeH265ReferenceInfo pStdReferenceInfo() { return npStdReferenceInfo(address()); }
/** Sets the specified value to the {@link #sType} field. */
- public VkVideoDecodeH265DpbSlotInfoEXT sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT} value to the {@link #sType} field. */
- public VkVideoDecodeH265DpbSlotInfoEXT sType$Default() { return sType(EXTVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT); }
+ public VkVideoDecodeH265DpbSlotInfoKHR sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR} value to the {@link #sType} field. */
+ public VkVideoDecodeH265DpbSlotInfoKHR sType$Default() { return sType(KHRVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR); }
/** Sets the specified value to the {@link #pNext} field. */
- public VkVideoDecodeH265DpbSlotInfoEXT pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
+ public VkVideoDecodeH265DpbSlotInfoKHR pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
/** Sets the address of the specified {@link StdVideoDecodeH265ReferenceInfo} to the {@link #pStdReferenceInfo} field. */
- public VkVideoDecodeH265DpbSlotInfoEXT pStdReferenceInfo(@NativeType("StdVideoDecodeH265ReferenceInfo const *") StdVideoDecodeH265ReferenceInfo value) { npStdReferenceInfo(address(), value); return this; }
+ public VkVideoDecodeH265DpbSlotInfoKHR pStdReferenceInfo(@NativeType("StdVideoDecodeH265ReferenceInfo const *") StdVideoDecodeH265ReferenceInfo value) { npStdReferenceInfo(address(), value); return this; }
/** Initializes this struct with the specified values. */
- public VkVideoDecodeH265DpbSlotInfoEXT set(
+ public VkVideoDecodeH265DpbSlotInfoKHR set(
int sType,
long pNext,
StdVideoDecodeH265ReferenceInfo pStdReferenceInfo
@@ -118,137 +149,137 @@ public VkVideoDecodeH265DpbSlotInfoEXT set(
*
* @return this struct
*/
- public VkVideoDecodeH265DpbSlotInfoEXT set(VkVideoDecodeH265DpbSlotInfoEXT src) {
+ public VkVideoDecodeH265DpbSlotInfoKHR set(VkVideoDecodeH265DpbSlotInfoKHR src) {
memCopy(src.address(), address(), SIZEOF);
return this;
}
// -----------------------------------
- /** Returns a new {@code VkVideoDecodeH265DpbSlotInfoEXT} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH265DpbSlotInfoEXT malloc() {
- return wrap(VkVideoDecodeH265DpbSlotInfoEXT.class, nmemAllocChecked(SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH265DpbSlotInfoKHR} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH265DpbSlotInfoKHR malloc() {
+ return wrap(VkVideoDecodeH265DpbSlotInfoKHR.class, nmemAllocChecked(SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH265DpbSlotInfoEXT} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH265DpbSlotInfoEXT calloc() {
- return wrap(VkVideoDecodeH265DpbSlotInfoEXT.class, nmemCallocChecked(1, SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH265DpbSlotInfoKHR} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH265DpbSlotInfoKHR calloc() {
+ return wrap(VkVideoDecodeH265DpbSlotInfoKHR.class, nmemCallocChecked(1, SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH265DpbSlotInfoEXT} instance allocated with {@link BufferUtils}. */
- public static VkVideoDecodeH265DpbSlotInfoEXT create() {
+ /** Returns a new {@code VkVideoDecodeH265DpbSlotInfoKHR} instance allocated with {@link BufferUtils}. */
+ public static VkVideoDecodeH265DpbSlotInfoKHR create() {
ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
- return wrap(VkVideoDecodeH265DpbSlotInfoEXT.class, memAddress(container), container);
+ return wrap(VkVideoDecodeH265DpbSlotInfoKHR.class, memAddress(container), container);
}
- /** Returns a new {@code VkVideoDecodeH265DpbSlotInfoEXT} instance for the specified memory address. */
- public static VkVideoDecodeH265DpbSlotInfoEXT create(long address) {
- return wrap(VkVideoDecodeH265DpbSlotInfoEXT.class, address);
+ /** Returns a new {@code VkVideoDecodeH265DpbSlotInfoKHR} instance for the specified memory address. */
+ public static VkVideoDecodeH265DpbSlotInfoKHR create(long address) {
+ return wrap(VkVideoDecodeH265DpbSlotInfoKHR.class, address);
}
/** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH265DpbSlotInfoEXT createSafe(long address) {
- return address == NULL ? null : wrap(VkVideoDecodeH265DpbSlotInfoEXT.class, address);
+ public static VkVideoDecodeH265DpbSlotInfoKHR createSafe(long address) {
+ return address == NULL ? null : wrap(VkVideoDecodeH265DpbSlotInfoKHR.class, address);
}
/**
- * Returns a new {@link VkVideoDecodeH265DpbSlotInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH265DpbSlotInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265DpbSlotInfoEXT.Buffer malloc(int capacity) {
+ public static VkVideoDecodeH265DpbSlotInfoKHR.Buffer malloc(int capacity) {
return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH265DpbSlotInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH265DpbSlotInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265DpbSlotInfoEXT.Buffer calloc(int capacity) {
+ public static VkVideoDecodeH265DpbSlotInfoKHR.Buffer calloc(int capacity) {
return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH265DpbSlotInfoEXT.Buffer} instance allocated with {@link BufferUtils}.
+ * Returns a new {@link VkVideoDecodeH265DpbSlotInfoKHR.Buffer} instance allocated with {@link BufferUtils}.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265DpbSlotInfoEXT.Buffer create(int capacity) {
+ public static VkVideoDecodeH265DpbSlotInfoKHR.Buffer create(int capacity) {
ByteBuffer container = __create(capacity, SIZEOF);
return wrap(Buffer.class, memAddress(container), capacity, container);
}
/**
- * Create a {@link VkVideoDecodeH265DpbSlotInfoEXT.Buffer} instance at the specified memory.
+ * Create a {@link VkVideoDecodeH265DpbSlotInfoKHR.Buffer} instance at the specified memory.
*
* @param address the memory address
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265DpbSlotInfoEXT.Buffer create(long address, int capacity) {
+ public static VkVideoDecodeH265DpbSlotInfoKHR.Buffer create(long address, int capacity) {
return wrap(Buffer.class, address, capacity);
}
/** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH265DpbSlotInfoEXT.Buffer createSafe(long address, int capacity) {
+ public static VkVideoDecodeH265DpbSlotInfoKHR.Buffer createSafe(long address, int capacity) {
return address == NULL ? null : wrap(Buffer.class, address, capacity);
}
/**
- * Returns a new {@code VkVideoDecodeH265DpbSlotInfoEXT} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@code VkVideoDecodeH265DpbSlotInfoKHR} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH265DpbSlotInfoEXT malloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH265DpbSlotInfoEXT.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ public static VkVideoDecodeH265DpbSlotInfoKHR malloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH265DpbSlotInfoKHR.class, stack.nmalloc(ALIGNOF, SIZEOF));
}
/**
- * Returns a new {@code VkVideoDecodeH265DpbSlotInfoEXT} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@code VkVideoDecodeH265DpbSlotInfoKHR} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH265DpbSlotInfoEXT calloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH265DpbSlotInfoEXT.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ public static VkVideoDecodeH265DpbSlotInfoKHR calloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH265DpbSlotInfoKHR.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
}
/**
- * Returns a new {@link VkVideoDecodeH265DpbSlotInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@link VkVideoDecodeH265DpbSlotInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265DpbSlotInfoEXT.Buffer malloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH265DpbSlotInfoKHR.Buffer malloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH265DpbSlotInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@link VkVideoDecodeH265DpbSlotInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265DpbSlotInfoEXT.Buffer calloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH265DpbSlotInfoKHR.Buffer calloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
}
// -----------------------------------
/** Unsafe version of {@link #sType}. */
- public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265DpbSlotInfoEXT.STYPE); }
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265DpbSlotInfoKHR.STYPE); }
/** Unsafe version of {@link #pNext}. */
- public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH265DpbSlotInfoEXT.PNEXT); }
+ public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH265DpbSlotInfoKHR.PNEXT); }
/** Unsafe version of {@link #pStdReferenceInfo}. */
- public static StdVideoDecodeH265ReferenceInfo npStdReferenceInfo(long struct) { return StdVideoDecodeH265ReferenceInfo.create(memGetAddress(struct + VkVideoDecodeH265DpbSlotInfoEXT.PSTDREFERENCEINFO)); }
+ public static StdVideoDecodeH265ReferenceInfo npStdReferenceInfo(long struct) { return StdVideoDecodeH265ReferenceInfo.create(memGetAddress(struct + VkVideoDecodeH265DpbSlotInfoKHR.PSTDREFERENCEINFO)); }
/** Unsafe version of {@link #sType(int) sType}. */
- public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265DpbSlotInfoEXT.STYPE, value); }
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265DpbSlotInfoKHR.STYPE, value); }
/** Unsafe version of {@link #pNext(long) pNext}. */
- public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH265DpbSlotInfoEXT.PNEXT, value); }
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH265DpbSlotInfoKHR.PNEXT, value); }
/** Unsafe version of {@link #pStdReferenceInfo(StdVideoDecodeH265ReferenceInfo) pStdReferenceInfo}. */
- public static void npStdReferenceInfo(long struct, StdVideoDecodeH265ReferenceInfo value) { memPutAddress(struct + VkVideoDecodeH265DpbSlotInfoEXT.PSTDREFERENCEINFO, value.address()); }
+ public static void npStdReferenceInfo(long struct, StdVideoDecodeH265ReferenceInfo value) { memPutAddress(struct + VkVideoDecodeH265DpbSlotInfoKHR.PSTDREFERENCEINFO, value.address()); }
/**
* Validates pointer members that should not be {@code NULL}.
@@ -256,22 +287,22 @@ public static VkVideoDecodeH265DpbSlotInfoEXT.Buffer calloc(int capacity, Memory
* @param struct the struct to validate
*/
public static void validate(long struct) {
- check(memGetAddress(struct + VkVideoDecodeH265DpbSlotInfoEXT.PSTDREFERENCEINFO));
+ check(memGetAddress(struct + VkVideoDecodeH265DpbSlotInfoKHR.PSTDREFERENCEINFO));
}
// -----------------------------------
- /** An array of {@link VkVideoDecodeH265DpbSlotInfoEXT} structs. */
- public static class Buffer extends StructBuffer implements NativeResource {
+ /** An array of {@link VkVideoDecodeH265DpbSlotInfoKHR} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
- private static final VkVideoDecodeH265DpbSlotInfoEXT ELEMENT_FACTORY = VkVideoDecodeH265DpbSlotInfoEXT.create(-1L);
+ private static final VkVideoDecodeH265DpbSlotInfoKHR ELEMENT_FACTORY = VkVideoDecodeH265DpbSlotInfoKHR.create(-1L);
/**
- * Creates a new {@code VkVideoDecodeH265DpbSlotInfoEXT.Buffer} instance backed by the specified container.
+ * Creates a new {@code VkVideoDecodeH265DpbSlotInfoKHR.Buffer} instance backed by the specified container.
*
* Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
* will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
- * by {@link VkVideoDecodeH265DpbSlotInfoEXT#SIZEOF}, and its mark will be undefined.
+ * by {@link VkVideoDecodeH265DpbSlotInfoKHR#SIZEOF}, and its mark will be undefined.
*
* The created buffer instance holds a strong reference to the container object.
*/
@@ -293,28 +324,28 @@ protected Buffer self() {
}
@Override
- protected VkVideoDecodeH265DpbSlotInfoEXT getElementFactory() {
+ protected VkVideoDecodeH265DpbSlotInfoKHR getElementFactory() {
return ELEMENT_FACTORY;
}
- /** @return the value of the {@link VkVideoDecodeH265DpbSlotInfoEXT#sType} field. */
+ /** @return the value of the {@link VkVideoDecodeH265DpbSlotInfoKHR#sType} field. */
@NativeType("VkStructureType")
- public int sType() { return VkVideoDecodeH265DpbSlotInfoEXT.nsType(address()); }
- /** @return the value of the {@link VkVideoDecodeH265DpbSlotInfoEXT#pNext} field. */
+ public int sType() { return VkVideoDecodeH265DpbSlotInfoKHR.nsType(address()); }
+ /** @return the value of the {@link VkVideoDecodeH265DpbSlotInfoKHR#pNext} field. */
@NativeType("void const *")
- public long pNext() { return VkVideoDecodeH265DpbSlotInfoEXT.npNext(address()); }
- /** @return a {@link StdVideoDecodeH265ReferenceInfo} view of the struct pointed to by the {@link VkVideoDecodeH265DpbSlotInfoEXT#pStdReferenceInfo} field. */
+ public long pNext() { return VkVideoDecodeH265DpbSlotInfoKHR.npNext(address()); }
+ /** @return a {@link StdVideoDecodeH265ReferenceInfo} view of the struct pointed to by the {@link VkVideoDecodeH265DpbSlotInfoKHR#pStdReferenceInfo} field. */
@NativeType("StdVideoDecodeH265ReferenceInfo const *")
- public StdVideoDecodeH265ReferenceInfo pStdReferenceInfo() { return VkVideoDecodeH265DpbSlotInfoEXT.npStdReferenceInfo(address()); }
-
- /** Sets the specified value to the {@link VkVideoDecodeH265DpbSlotInfoEXT#sType} field. */
- public VkVideoDecodeH265DpbSlotInfoEXT.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH265DpbSlotInfoEXT.nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT} value to the {@link VkVideoDecodeH265DpbSlotInfoEXT#sType} field. */
- public VkVideoDecodeH265DpbSlotInfoEXT.Buffer sType$Default() { return sType(EXTVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT); }
- /** Sets the specified value to the {@link VkVideoDecodeH265DpbSlotInfoEXT#pNext} field. */
- public VkVideoDecodeH265DpbSlotInfoEXT.Buffer pNext(@NativeType("void const *") long value) { VkVideoDecodeH265DpbSlotInfoEXT.npNext(address(), value); return this; }
- /** Sets the address of the specified {@link StdVideoDecodeH265ReferenceInfo} to the {@link VkVideoDecodeH265DpbSlotInfoEXT#pStdReferenceInfo} field. */
- public VkVideoDecodeH265DpbSlotInfoEXT.Buffer pStdReferenceInfo(@NativeType("StdVideoDecodeH265ReferenceInfo const *") StdVideoDecodeH265ReferenceInfo value) { VkVideoDecodeH265DpbSlotInfoEXT.npStdReferenceInfo(address(), value); return this; }
+ public StdVideoDecodeH265ReferenceInfo pStdReferenceInfo() { return VkVideoDecodeH265DpbSlotInfoKHR.npStdReferenceInfo(address()); }
+
+ /** Sets the specified value to the {@link VkVideoDecodeH265DpbSlotInfoKHR#sType} field. */
+ public VkVideoDecodeH265DpbSlotInfoKHR.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH265DpbSlotInfoKHR.nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR} value to the {@link VkVideoDecodeH265DpbSlotInfoKHR#sType} field. */
+ public VkVideoDecodeH265DpbSlotInfoKHR.Buffer sType$Default() { return sType(KHRVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR); }
+ /** Sets the specified value to the {@link VkVideoDecodeH265DpbSlotInfoKHR#pNext} field. */
+ public VkVideoDecodeH265DpbSlotInfoKHR.Buffer pNext(@NativeType("void const *") long value) { VkVideoDecodeH265DpbSlotInfoKHR.npNext(address(), value); return this; }
+ /** Sets the address of the specified {@link StdVideoDecodeH265ReferenceInfo} to the {@link VkVideoDecodeH265DpbSlotInfoKHR#pStdReferenceInfo} field. */
+ public VkVideoDecodeH265DpbSlotInfoKHR.Buffer pStdReferenceInfo(@NativeType("StdVideoDecodeH265ReferenceInfo const *") StdVideoDecodeH265ReferenceInfo value) { VkVideoDecodeH265DpbSlotInfoKHR.npStdReferenceInfo(address(), value); return this; }
}
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265PictureInfoEXT.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265PictureInfoKHR.java
similarity index 52%
rename from modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265PictureInfoEXT.java
rename to modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265PictureInfoKHR.java
index c01c568d99..abe864b45d 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265PictureInfoEXT.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265PictureInfoKHR.java
@@ -21,10 +21,44 @@
/**
* Structure specifies H.265 picture information when decoding a frame.
*
+ * Description
+ *
+ * This structure is specified in the {@code pNext} chain of the {@link VkVideoDecodeInfoKHR} structure passed to {@link KHRVideoDecodeQueue#vkCmdDecodeVideoKHR CmdDecodeVideoKHR} to specify the codec-specific picture information for an H.265 decode operation.
+ *
+ *
+ * - Decode Output Picture Information
+ *
+ *
+ *
+ *
+ * - Std Picture Information
+ *
+ * - {@code reserved} is used only for padding purposes and is otherwise ignored;
+ * - {@code flags.IrapPicFlag} as defined in section 3.73 of the ITU-T H.265 Specification;
+ * - {@code flags.IdrPicFlag} as defined in section 3.67 of the ITU-T H.265 Specification;
+ * - {@code flags.IsReference} as defined in section 3.132 of the ITU-T H.265 Specification;
+ * - {@code sps_video_parameter_set_id}, {@code pps_seq_parameter_set_id}, and {@code pps_pic_parameter_set_id} are used to identify the active parameter sets, as described below;
+ * - {@code PicOrderCntVal} as defined in section 8.3.1 of the ITU-T H.265 Specification;
+ * - {@code NumBitsForSTRefPicSetInSlice} is the number of bits used in {@code st_ref_pic_set} when {@code short_term_ref_pic_set_sps_flag} is 0, or 0 otherwise, as defined in sections 7.4.7 and 7.4.8 of the ITU-T H.265 Specification;
+ * - {@code NumDeltaPocsOfRefRpsIdx} is the value of {@code NumDeltaPocs[RefRpsIdx]} when {@code short_term_ref_pic_set_sps_flag} is 1, or 0 otherwise, as defined in sections 7.4.7 and 7.4.8 of the ITU-T H.265 Specification;
+ * - {@code RefPicSetStCurrBefore}, {@code RefPicSetStCurrAfter}, and {@code RefPicSetLtCurr} are interpreted as defined in section 8.3.2 of the ITU-T H.265 Specification where each element of these arrays either identifies an active reference picture using its DPB slot index or contains the value 0xFF to indicate "no reference picture";
+ * - all other members are interpreted as defined in section 8.3.2 of the ITU-T H.265 Specification.
+ *
+ * - Active Parameter Sets
+ *
+ * - The active VPS is the VPS identified by the key specified in {@code StdVideoDecodeH265PictureInfo}{@code ::sps_video_parameter_set_id}.
+ * - The active SPS is the SPS identified by the key specified by the pair constructed from {@code StdVideoDecodeH265PictureInfo}{@code ::sps_video_parameter_set_id} and {@code StdVideoDecodeH265PictureInfo}{@code ::pps_seq_parameter_set_id}.
+ * - The active PPS is the PPS identified by the key specified by the triplet constructed from {@code StdVideoDecodeH265PictureInfo}{@code ::sps_video_parameter_set_id}, {@code StdVideoDecodeH265PictureInfo}{@code ::pps_seq_parameter_set_id}, and {@code StdVideoDecodeH265PictureInfo}{@code ::pps_pic_parameter_set_id}.
+ *
+ *
+ *
* Valid Usage (Implicit)
*
*
- * - {@code sType} must be {@link EXTVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT}
+ * - {@code sType} must be {@link KHRVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR}
* - {@code pStdPictureInfo} must be a valid pointer to a {@code StdVideoDecodeH265PictureInfo} value
* - {@code pSliceSegmentOffsets} must be a valid pointer to an array of {@code sliceSegmentCount} {@code uint32_t} values
* - {@code sliceSegmentCount} must be greater than 0
@@ -33,7 +67,7 @@
* Layout
*
*
- * struct VkVideoDecodeH265PictureInfoEXT {
+ * struct VkVideoDecodeH265PictureInfoKHR {
* VkStructureType {@link #sType};
* void const * {@link #pNext};
* {@link StdVideoDecodeH265PictureInfo StdVideoDecodeH265PictureInfo} * {@link #pStdPictureInfo};
@@ -41,7 +75,7 @@
* uint32_t const * {@link #pSliceSegmentOffsets};
* }
*/
-public class VkVideoDecodeH265PictureInfoEXT extends Struct implements NativeResource {
+public class VkVideoDecodeH265PictureInfoKHR extends Struct implements NativeResource {
/** The struct size in bytes. */
public static final int SIZEOF;
@@ -77,12 +111,12 @@ public class VkVideoDecodeH265PictureInfoEXT extends Struct implements NativeRes
}
/**
- * Creates a {@code VkVideoDecodeH265PictureInfoEXT} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * Creates a {@code VkVideoDecodeH265PictureInfoKHR} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
* visible to the struct instance and vice versa.
*
* The created instance holds a strong reference to the container object.
*/
- public VkVideoDecodeH265PictureInfoEXT(ByteBuffer container) {
+ public VkVideoDecodeH265PictureInfoKHR(ByteBuffer container) {
super(memAddress(container), __checkContainer(container, SIZEOF));
}
@@ -95,29 +129,29 @@ public VkVideoDecodeH265PictureInfoEXT(ByteBuffer container) {
/** {@code NULL} or a pointer to a structure extending this structure. */
@NativeType("void const *")
public long pNext() { return npNext(address()); }
- /** a pointer to a {@code StdVideoDecodeH265PictureInfo} structure specifying codec standard specific picture information from the H.265 specification. */
+ /** a pointer to a {@code StdVideoDecodeH265PictureInfo} structure specifying H.265 picture information. */
@NativeType("StdVideoDecodeH265PictureInfo *")
public StdVideoDecodeH265PictureInfo pStdPictureInfo() { return npStdPictureInfo(address()); }
- /** the number of slice segments in this picture. */
+ /** the number of elements in {@code pSliceSegmentOffsets}. */
@NativeType("uint32_t")
public int sliceSegmentCount() { return nsliceSegmentCount(address()); }
- /** a pointer to an array of {@code sliceSegmentCount} offsets indicating the start offset of each slice segment within the bitstream buffer. */
+ /** a pointer to an array of {@code sliceSegmentCount} offsets specifying the start offset of the slice segments of the picture within the video bitstream buffer range specified in {@link VkVideoDecodeInfoKHR}. */
@NativeType("uint32_t const *")
public IntBuffer pSliceSegmentOffsets() { return npSliceSegmentOffsets(address()); }
/** Sets the specified value to the {@link #sType} field. */
- public VkVideoDecodeH265PictureInfoEXT sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT} value to the {@link #sType} field. */
- public VkVideoDecodeH265PictureInfoEXT sType$Default() { return sType(EXTVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT); }
+ public VkVideoDecodeH265PictureInfoKHR sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR} value to the {@link #sType} field. */
+ public VkVideoDecodeH265PictureInfoKHR sType$Default() { return sType(KHRVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR); }
/** Sets the specified value to the {@link #pNext} field. */
- public VkVideoDecodeH265PictureInfoEXT pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
+ public VkVideoDecodeH265PictureInfoKHR pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
/** Sets the address of the specified {@link StdVideoDecodeH265PictureInfo} to the {@link #pStdPictureInfo} field. */
- public VkVideoDecodeH265PictureInfoEXT pStdPictureInfo(@NativeType("StdVideoDecodeH265PictureInfo *") StdVideoDecodeH265PictureInfo value) { npStdPictureInfo(address(), value); return this; }
+ public VkVideoDecodeH265PictureInfoKHR pStdPictureInfo(@NativeType("StdVideoDecodeH265PictureInfo *") StdVideoDecodeH265PictureInfo value) { npStdPictureInfo(address(), value); return this; }
/** Sets the address of the specified {@link IntBuffer} to the {@link #pSliceSegmentOffsets} field. */
- public VkVideoDecodeH265PictureInfoEXT pSliceSegmentOffsets(@NativeType("uint32_t const *") IntBuffer value) { npSliceSegmentOffsets(address(), value); return this; }
+ public VkVideoDecodeH265PictureInfoKHR pSliceSegmentOffsets(@NativeType("uint32_t const *") IntBuffer value) { npSliceSegmentOffsets(address(), value); return this; }
/** Initializes this struct with the specified values. */
- public VkVideoDecodeH265PictureInfoEXT set(
+ public VkVideoDecodeH265PictureInfoKHR set(
int sType,
long pNext,
StdVideoDecodeH265PictureInfo pStdPictureInfo,
@@ -138,145 +172,145 @@ public VkVideoDecodeH265PictureInfoEXT set(
*
* @return this struct
*/
- public VkVideoDecodeH265PictureInfoEXT set(VkVideoDecodeH265PictureInfoEXT src) {
+ public VkVideoDecodeH265PictureInfoKHR set(VkVideoDecodeH265PictureInfoKHR src) {
memCopy(src.address(), address(), SIZEOF);
return this;
}
// -----------------------------------
- /** Returns a new {@code VkVideoDecodeH265PictureInfoEXT} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH265PictureInfoEXT malloc() {
- return wrap(VkVideoDecodeH265PictureInfoEXT.class, nmemAllocChecked(SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH265PictureInfoKHR} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH265PictureInfoKHR malloc() {
+ return wrap(VkVideoDecodeH265PictureInfoKHR.class, nmemAllocChecked(SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH265PictureInfoEXT} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH265PictureInfoEXT calloc() {
- return wrap(VkVideoDecodeH265PictureInfoEXT.class, nmemCallocChecked(1, SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH265PictureInfoKHR} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH265PictureInfoKHR calloc() {
+ return wrap(VkVideoDecodeH265PictureInfoKHR.class, nmemCallocChecked(1, SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH265PictureInfoEXT} instance allocated with {@link BufferUtils}. */
- public static VkVideoDecodeH265PictureInfoEXT create() {
+ /** Returns a new {@code VkVideoDecodeH265PictureInfoKHR} instance allocated with {@link BufferUtils}. */
+ public static VkVideoDecodeH265PictureInfoKHR create() {
ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
- return wrap(VkVideoDecodeH265PictureInfoEXT.class, memAddress(container), container);
+ return wrap(VkVideoDecodeH265PictureInfoKHR.class, memAddress(container), container);
}
- /** Returns a new {@code VkVideoDecodeH265PictureInfoEXT} instance for the specified memory address. */
- public static VkVideoDecodeH265PictureInfoEXT create(long address) {
- return wrap(VkVideoDecodeH265PictureInfoEXT.class, address);
+ /** Returns a new {@code VkVideoDecodeH265PictureInfoKHR} instance for the specified memory address. */
+ public static VkVideoDecodeH265PictureInfoKHR create(long address) {
+ return wrap(VkVideoDecodeH265PictureInfoKHR.class, address);
}
/** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH265PictureInfoEXT createSafe(long address) {
- return address == NULL ? null : wrap(VkVideoDecodeH265PictureInfoEXT.class, address);
+ public static VkVideoDecodeH265PictureInfoKHR createSafe(long address) {
+ return address == NULL ? null : wrap(VkVideoDecodeH265PictureInfoKHR.class, address);
}
/**
- * Returns a new {@link VkVideoDecodeH265PictureInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH265PictureInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265PictureInfoEXT.Buffer malloc(int capacity) {
+ public static VkVideoDecodeH265PictureInfoKHR.Buffer malloc(int capacity) {
return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH265PictureInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH265PictureInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265PictureInfoEXT.Buffer calloc(int capacity) {
+ public static VkVideoDecodeH265PictureInfoKHR.Buffer calloc(int capacity) {
return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH265PictureInfoEXT.Buffer} instance allocated with {@link BufferUtils}.
+ * Returns a new {@link VkVideoDecodeH265PictureInfoKHR.Buffer} instance allocated with {@link BufferUtils}.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265PictureInfoEXT.Buffer create(int capacity) {
+ public static VkVideoDecodeH265PictureInfoKHR.Buffer create(int capacity) {
ByteBuffer container = __create(capacity, SIZEOF);
return wrap(Buffer.class, memAddress(container), capacity, container);
}
/**
- * Create a {@link VkVideoDecodeH265PictureInfoEXT.Buffer} instance at the specified memory.
+ * Create a {@link VkVideoDecodeH265PictureInfoKHR.Buffer} instance at the specified memory.
*
* @param address the memory address
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265PictureInfoEXT.Buffer create(long address, int capacity) {
+ public static VkVideoDecodeH265PictureInfoKHR.Buffer create(long address, int capacity) {
return wrap(Buffer.class, address, capacity);
}
/** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH265PictureInfoEXT.Buffer createSafe(long address, int capacity) {
+ public static VkVideoDecodeH265PictureInfoKHR.Buffer createSafe(long address, int capacity) {
return address == NULL ? null : wrap(Buffer.class, address, capacity);
}
/**
- * Returns a new {@code VkVideoDecodeH265PictureInfoEXT} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@code VkVideoDecodeH265PictureInfoKHR} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH265PictureInfoEXT malloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH265PictureInfoEXT.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ public static VkVideoDecodeH265PictureInfoKHR malloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH265PictureInfoKHR.class, stack.nmalloc(ALIGNOF, SIZEOF));
}
/**
- * Returns a new {@code VkVideoDecodeH265PictureInfoEXT} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@code VkVideoDecodeH265PictureInfoKHR} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH265PictureInfoEXT calloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH265PictureInfoEXT.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ public static VkVideoDecodeH265PictureInfoKHR calloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH265PictureInfoKHR.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
}
/**
- * Returns a new {@link VkVideoDecodeH265PictureInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@link VkVideoDecodeH265PictureInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265PictureInfoEXT.Buffer malloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH265PictureInfoKHR.Buffer malloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH265PictureInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@link VkVideoDecodeH265PictureInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265PictureInfoEXT.Buffer calloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH265PictureInfoKHR.Buffer calloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
}
// -----------------------------------
/** Unsafe version of {@link #sType}. */
- public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265PictureInfoEXT.STYPE); }
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265PictureInfoKHR.STYPE); }
/** Unsafe version of {@link #pNext}. */
- public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH265PictureInfoEXT.PNEXT); }
+ public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH265PictureInfoKHR.PNEXT); }
/** Unsafe version of {@link #pStdPictureInfo}. */
- public static StdVideoDecodeH265PictureInfo npStdPictureInfo(long struct) { return StdVideoDecodeH265PictureInfo.create(memGetAddress(struct + VkVideoDecodeH265PictureInfoEXT.PSTDPICTUREINFO)); }
+ public static StdVideoDecodeH265PictureInfo npStdPictureInfo(long struct) { return StdVideoDecodeH265PictureInfo.create(memGetAddress(struct + VkVideoDecodeH265PictureInfoKHR.PSTDPICTUREINFO)); }
/** Unsafe version of {@link #sliceSegmentCount}. */
- public static int nsliceSegmentCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265PictureInfoEXT.SLICESEGMENTCOUNT); }
+ public static int nsliceSegmentCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265PictureInfoKHR.SLICESEGMENTCOUNT); }
/** Unsafe version of {@link #pSliceSegmentOffsets() pSliceSegmentOffsets}. */
- public static IntBuffer npSliceSegmentOffsets(long struct) { return memIntBuffer(memGetAddress(struct + VkVideoDecodeH265PictureInfoEXT.PSLICESEGMENTOFFSETS), nsliceSegmentCount(struct)); }
+ public static IntBuffer npSliceSegmentOffsets(long struct) { return memIntBuffer(memGetAddress(struct + VkVideoDecodeH265PictureInfoKHR.PSLICESEGMENTOFFSETS), nsliceSegmentCount(struct)); }
/** Unsafe version of {@link #sType(int) sType}. */
- public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265PictureInfoEXT.STYPE, value); }
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265PictureInfoKHR.STYPE, value); }
/** Unsafe version of {@link #pNext(long) pNext}. */
- public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH265PictureInfoEXT.PNEXT, value); }
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH265PictureInfoKHR.PNEXT, value); }
/** Unsafe version of {@link #pStdPictureInfo(StdVideoDecodeH265PictureInfo) pStdPictureInfo}. */
- public static void npStdPictureInfo(long struct, StdVideoDecodeH265PictureInfo value) { memPutAddress(struct + VkVideoDecodeH265PictureInfoEXT.PSTDPICTUREINFO, value.address()); }
+ public static void npStdPictureInfo(long struct, StdVideoDecodeH265PictureInfo value) { memPutAddress(struct + VkVideoDecodeH265PictureInfoKHR.PSTDPICTUREINFO, value.address()); }
/** Sets the specified value to the {@code sliceSegmentCount} field of the specified {@code struct}. */
- public static void nsliceSegmentCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265PictureInfoEXT.SLICESEGMENTCOUNT, value); }
+ public static void nsliceSegmentCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265PictureInfoKHR.SLICESEGMENTCOUNT, value); }
/** Unsafe version of {@link #pSliceSegmentOffsets(IntBuffer) pSliceSegmentOffsets}. */
- public static void npSliceSegmentOffsets(long struct, IntBuffer value) { memPutAddress(struct + VkVideoDecodeH265PictureInfoEXT.PSLICESEGMENTOFFSETS, memAddress(value)); nsliceSegmentCount(struct, value.remaining()); }
+ public static void npSliceSegmentOffsets(long struct, IntBuffer value) { memPutAddress(struct + VkVideoDecodeH265PictureInfoKHR.PSLICESEGMENTOFFSETS, memAddress(value)); nsliceSegmentCount(struct, value.remaining()); }
/**
* Validates pointer members that should not be {@code NULL}.
@@ -284,23 +318,23 @@ public static VkVideoDecodeH265PictureInfoEXT.Buffer calloc(int capacity, Memory
* @param struct the struct to validate
*/
public static void validate(long struct) {
- check(memGetAddress(struct + VkVideoDecodeH265PictureInfoEXT.PSTDPICTUREINFO));
- check(memGetAddress(struct + VkVideoDecodeH265PictureInfoEXT.PSLICESEGMENTOFFSETS));
+ check(memGetAddress(struct + VkVideoDecodeH265PictureInfoKHR.PSTDPICTUREINFO));
+ check(memGetAddress(struct + VkVideoDecodeH265PictureInfoKHR.PSLICESEGMENTOFFSETS));
}
// -----------------------------------
- /** An array of {@link VkVideoDecodeH265PictureInfoEXT} structs. */
- public static class Buffer extends StructBuffer implements NativeResource {
+ /** An array of {@link VkVideoDecodeH265PictureInfoKHR} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
- private static final VkVideoDecodeH265PictureInfoEXT ELEMENT_FACTORY = VkVideoDecodeH265PictureInfoEXT.create(-1L);
+ private static final VkVideoDecodeH265PictureInfoKHR ELEMENT_FACTORY = VkVideoDecodeH265PictureInfoKHR.create(-1L);
/**
- * Creates a new {@code VkVideoDecodeH265PictureInfoEXT.Buffer} instance backed by the specified container.
+ * Creates a new {@code VkVideoDecodeH265PictureInfoKHR.Buffer} instance backed by the specified container.
*
* Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
* will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
- * by {@link VkVideoDecodeH265PictureInfoEXT#SIZEOF}, and its mark will be undefined.
+ * by {@link VkVideoDecodeH265PictureInfoKHR#SIZEOF}, and its mark will be undefined.
*
* The created buffer instance holds a strong reference to the container object.
*/
@@ -322,36 +356,36 @@ protected Buffer self() {
}
@Override
- protected VkVideoDecodeH265PictureInfoEXT getElementFactory() {
+ protected VkVideoDecodeH265PictureInfoKHR getElementFactory() {
return ELEMENT_FACTORY;
}
- /** @return the value of the {@link VkVideoDecodeH265PictureInfoEXT#sType} field. */
+ /** @return the value of the {@link VkVideoDecodeH265PictureInfoKHR#sType} field. */
@NativeType("VkStructureType")
- public int sType() { return VkVideoDecodeH265PictureInfoEXT.nsType(address()); }
- /** @return the value of the {@link VkVideoDecodeH265PictureInfoEXT#pNext} field. */
+ public int sType() { return VkVideoDecodeH265PictureInfoKHR.nsType(address()); }
+ /** @return the value of the {@link VkVideoDecodeH265PictureInfoKHR#pNext} field. */
@NativeType("void const *")
- public long pNext() { return VkVideoDecodeH265PictureInfoEXT.npNext(address()); }
- /** @return a {@link StdVideoDecodeH265PictureInfo} view of the struct pointed to by the {@link VkVideoDecodeH265PictureInfoEXT#pStdPictureInfo} field. */
+ public long pNext() { return VkVideoDecodeH265PictureInfoKHR.npNext(address()); }
+ /** @return a {@link StdVideoDecodeH265PictureInfo} view of the struct pointed to by the {@link VkVideoDecodeH265PictureInfoKHR#pStdPictureInfo} field. */
@NativeType("StdVideoDecodeH265PictureInfo *")
- public StdVideoDecodeH265PictureInfo pStdPictureInfo() { return VkVideoDecodeH265PictureInfoEXT.npStdPictureInfo(address()); }
- /** @return the value of the {@link VkVideoDecodeH265PictureInfoEXT#sliceSegmentCount} field. */
+ public StdVideoDecodeH265PictureInfo pStdPictureInfo() { return VkVideoDecodeH265PictureInfoKHR.npStdPictureInfo(address()); }
+ /** @return the value of the {@link VkVideoDecodeH265PictureInfoKHR#sliceSegmentCount} field. */
@NativeType("uint32_t")
- public int sliceSegmentCount() { return VkVideoDecodeH265PictureInfoEXT.nsliceSegmentCount(address()); }
- /** @return a {@link IntBuffer} view of the data pointed to by the {@link VkVideoDecodeH265PictureInfoEXT#pSliceSegmentOffsets} field. */
+ public int sliceSegmentCount() { return VkVideoDecodeH265PictureInfoKHR.nsliceSegmentCount(address()); }
+ /** @return a {@link IntBuffer} view of the data pointed to by the {@link VkVideoDecodeH265PictureInfoKHR#pSliceSegmentOffsets} field. */
@NativeType("uint32_t const *")
- public IntBuffer pSliceSegmentOffsets() { return VkVideoDecodeH265PictureInfoEXT.npSliceSegmentOffsets(address()); }
-
- /** Sets the specified value to the {@link VkVideoDecodeH265PictureInfoEXT#sType} field. */
- public VkVideoDecodeH265PictureInfoEXT.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH265PictureInfoEXT.nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT} value to the {@link VkVideoDecodeH265PictureInfoEXT#sType} field. */
- public VkVideoDecodeH265PictureInfoEXT.Buffer sType$Default() { return sType(EXTVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT); }
- /** Sets the specified value to the {@link VkVideoDecodeH265PictureInfoEXT#pNext} field. */
- public VkVideoDecodeH265PictureInfoEXT.Buffer pNext(@NativeType("void const *") long value) { VkVideoDecodeH265PictureInfoEXT.npNext(address(), value); return this; }
- /** Sets the address of the specified {@link StdVideoDecodeH265PictureInfo} to the {@link VkVideoDecodeH265PictureInfoEXT#pStdPictureInfo} field. */
- public VkVideoDecodeH265PictureInfoEXT.Buffer pStdPictureInfo(@NativeType("StdVideoDecodeH265PictureInfo *") StdVideoDecodeH265PictureInfo value) { VkVideoDecodeH265PictureInfoEXT.npStdPictureInfo(address(), value); return this; }
- /** Sets the address of the specified {@link IntBuffer} to the {@link VkVideoDecodeH265PictureInfoEXT#pSliceSegmentOffsets} field. */
- public VkVideoDecodeH265PictureInfoEXT.Buffer pSliceSegmentOffsets(@NativeType("uint32_t const *") IntBuffer value) { VkVideoDecodeH265PictureInfoEXT.npSliceSegmentOffsets(address(), value); return this; }
+ public IntBuffer pSliceSegmentOffsets() { return VkVideoDecodeH265PictureInfoKHR.npSliceSegmentOffsets(address()); }
+
+ /** Sets the specified value to the {@link VkVideoDecodeH265PictureInfoKHR#sType} field. */
+ public VkVideoDecodeH265PictureInfoKHR.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH265PictureInfoKHR.nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR} value to the {@link VkVideoDecodeH265PictureInfoKHR#sType} field. */
+ public VkVideoDecodeH265PictureInfoKHR.Buffer sType$Default() { return sType(KHRVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR); }
+ /** Sets the specified value to the {@link VkVideoDecodeH265PictureInfoKHR#pNext} field. */
+ public VkVideoDecodeH265PictureInfoKHR.Buffer pNext(@NativeType("void const *") long value) { VkVideoDecodeH265PictureInfoKHR.npNext(address(), value); return this; }
+ /** Sets the address of the specified {@link StdVideoDecodeH265PictureInfo} to the {@link VkVideoDecodeH265PictureInfoKHR#pStdPictureInfo} field. */
+ public VkVideoDecodeH265PictureInfoKHR.Buffer pStdPictureInfo(@NativeType("StdVideoDecodeH265PictureInfo *") StdVideoDecodeH265PictureInfo value) { VkVideoDecodeH265PictureInfoKHR.npStdPictureInfo(address(), value); return this; }
+ /** Sets the address of the specified {@link IntBuffer} to the {@link VkVideoDecodeH265PictureInfoKHR#pSliceSegmentOffsets} field. */
+ public VkVideoDecodeH265PictureInfoKHR.Buffer pSliceSegmentOffsets(@NativeType("uint32_t const *") IntBuffer value) { VkVideoDecodeH265PictureInfoKHR.npSliceSegmentOffsets(address(), value); return this; }
}
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265ProfileInfoEXT.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265ProfileInfoKHR.java
similarity index 63%
rename from modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265ProfileInfoEXT.java
rename to modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265ProfileInfoKHR.java
index 42620e5157..a0f981f86f 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265ProfileInfoEXT.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265ProfileInfoKHR.java
@@ -23,19 +23,19 @@
* Valid Usage (Implicit)
*
*
- * - {@code sType} must be {@link EXTVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_EXT}
+ * - {@code sType} must be {@link KHRVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR}
*
*
* Layout
*
*
- * struct VkVideoDecodeH265ProfileInfoEXT {
+ * struct VkVideoDecodeH265ProfileInfoKHR {
* VkStructureType {@link #sType};
* void const * {@link #pNext};
* StdVideoH265ProfileIdc {@link #stdProfileIdc};
* }
*/
-public class VkVideoDecodeH265ProfileInfoEXT extends Struct implements NativeResource {
+public class VkVideoDecodeH265ProfileInfoKHR extends Struct implements NativeResource {
/** The struct size in bytes. */
public static final int SIZEOF;
@@ -65,12 +65,12 @@ public class VkVideoDecodeH265ProfileInfoEXT extends Struct implements NativeRes
}
/**
- * Creates a {@code VkVideoDecodeH265ProfileInfoEXT} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * Creates a {@code VkVideoDecodeH265ProfileInfoKHR} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
* visible to the struct instance and vice versa.
*
* The created instance holds a strong reference to the container object.
*/
- public VkVideoDecodeH265ProfileInfoEXT(ByteBuffer container) {
+ public VkVideoDecodeH265ProfileInfoKHR(ByteBuffer container) {
super(memAddress(container), __checkContainer(container, SIZEOF));
}
@@ -83,21 +83,21 @@ public VkVideoDecodeH265ProfileInfoEXT(ByteBuffer container) {
/** {@code NULL} or a pointer to a structure extending this structure. */
@NativeType("void const *")
public long pNext() { return npNext(address()); }
- /** a {@code StdVideoH265ProfileIdc} value specifying the H.265 codec profile IDC. */
+ /** a {@code StdVideoH265ProfileIdc} value specifying the H.265 codec profile IDC, as defined in section A3 of the ITU-T H.265 Specification. */
@NativeType("StdVideoH265ProfileIdc")
public int stdProfileIdc() { return nstdProfileIdc(address()); }
/** Sets the specified value to the {@link #sType} field. */
- public VkVideoDecodeH265ProfileInfoEXT sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_EXT} value to the {@link #sType} field. */
- public VkVideoDecodeH265ProfileInfoEXT sType$Default() { return sType(EXTVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_EXT); }
+ public VkVideoDecodeH265ProfileInfoKHR sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR} value to the {@link #sType} field. */
+ public VkVideoDecodeH265ProfileInfoKHR sType$Default() { return sType(KHRVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR); }
/** Sets the specified value to the {@link #pNext} field. */
- public VkVideoDecodeH265ProfileInfoEXT pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
+ public VkVideoDecodeH265ProfileInfoKHR pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
/** Sets the specified value to the {@link #stdProfileIdc} field. */
- public VkVideoDecodeH265ProfileInfoEXT stdProfileIdc(@NativeType("StdVideoH265ProfileIdc") int value) { nstdProfileIdc(address(), value); return this; }
+ public VkVideoDecodeH265ProfileInfoKHR stdProfileIdc(@NativeType("StdVideoH265ProfileIdc") int value) { nstdProfileIdc(address(), value); return this; }
/** Initializes this struct with the specified values. */
- public VkVideoDecodeH265ProfileInfoEXT set(
+ public VkVideoDecodeH265ProfileInfoKHR set(
int sType,
long pNext,
int stdProfileIdc
@@ -116,151 +116,151 @@ public VkVideoDecodeH265ProfileInfoEXT set(
*
* @return this struct
*/
- public VkVideoDecodeH265ProfileInfoEXT set(VkVideoDecodeH265ProfileInfoEXT src) {
+ public VkVideoDecodeH265ProfileInfoKHR set(VkVideoDecodeH265ProfileInfoKHR src) {
memCopy(src.address(), address(), SIZEOF);
return this;
}
// -----------------------------------
- /** Returns a new {@code VkVideoDecodeH265ProfileInfoEXT} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH265ProfileInfoEXT malloc() {
- return wrap(VkVideoDecodeH265ProfileInfoEXT.class, nmemAllocChecked(SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH265ProfileInfoKHR} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH265ProfileInfoKHR malloc() {
+ return wrap(VkVideoDecodeH265ProfileInfoKHR.class, nmemAllocChecked(SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH265ProfileInfoEXT} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH265ProfileInfoEXT calloc() {
- return wrap(VkVideoDecodeH265ProfileInfoEXT.class, nmemCallocChecked(1, SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH265ProfileInfoKHR} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH265ProfileInfoKHR calloc() {
+ return wrap(VkVideoDecodeH265ProfileInfoKHR.class, nmemCallocChecked(1, SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH265ProfileInfoEXT} instance allocated with {@link BufferUtils}. */
- public static VkVideoDecodeH265ProfileInfoEXT create() {
+ /** Returns a new {@code VkVideoDecodeH265ProfileInfoKHR} instance allocated with {@link BufferUtils}. */
+ public static VkVideoDecodeH265ProfileInfoKHR create() {
ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
- return wrap(VkVideoDecodeH265ProfileInfoEXT.class, memAddress(container), container);
+ return wrap(VkVideoDecodeH265ProfileInfoKHR.class, memAddress(container), container);
}
- /** Returns a new {@code VkVideoDecodeH265ProfileInfoEXT} instance for the specified memory address. */
- public static VkVideoDecodeH265ProfileInfoEXT create(long address) {
- return wrap(VkVideoDecodeH265ProfileInfoEXT.class, address);
+ /** Returns a new {@code VkVideoDecodeH265ProfileInfoKHR} instance for the specified memory address. */
+ public static VkVideoDecodeH265ProfileInfoKHR create(long address) {
+ return wrap(VkVideoDecodeH265ProfileInfoKHR.class, address);
}
/** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH265ProfileInfoEXT createSafe(long address) {
- return address == NULL ? null : wrap(VkVideoDecodeH265ProfileInfoEXT.class, address);
+ public static VkVideoDecodeH265ProfileInfoKHR createSafe(long address) {
+ return address == NULL ? null : wrap(VkVideoDecodeH265ProfileInfoKHR.class, address);
}
/**
- * Returns a new {@link VkVideoDecodeH265ProfileInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH265ProfileInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265ProfileInfoEXT.Buffer malloc(int capacity) {
+ public static VkVideoDecodeH265ProfileInfoKHR.Buffer malloc(int capacity) {
return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH265ProfileInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH265ProfileInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265ProfileInfoEXT.Buffer calloc(int capacity) {
+ public static VkVideoDecodeH265ProfileInfoKHR.Buffer calloc(int capacity) {
return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH265ProfileInfoEXT.Buffer} instance allocated with {@link BufferUtils}.
+ * Returns a new {@link VkVideoDecodeH265ProfileInfoKHR.Buffer} instance allocated with {@link BufferUtils}.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265ProfileInfoEXT.Buffer create(int capacity) {
+ public static VkVideoDecodeH265ProfileInfoKHR.Buffer create(int capacity) {
ByteBuffer container = __create(capacity, SIZEOF);
return wrap(Buffer.class, memAddress(container), capacity, container);
}
/**
- * Create a {@link VkVideoDecodeH265ProfileInfoEXT.Buffer} instance at the specified memory.
+ * Create a {@link VkVideoDecodeH265ProfileInfoKHR.Buffer} instance at the specified memory.
*
* @param address the memory address
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265ProfileInfoEXT.Buffer create(long address, int capacity) {
+ public static VkVideoDecodeH265ProfileInfoKHR.Buffer create(long address, int capacity) {
return wrap(Buffer.class, address, capacity);
}
/** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH265ProfileInfoEXT.Buffer createSafe(long address, int capacity) {
+ public static VkVideoDecodeH265ProfileInfoKHR.Buffer createSafe(long address, int capacity) {
return address == NULL ? null : wrap(Buffer.class, address, capacity);
}
/**
- * Returns a new {@code VkVideoDecodeH265ProfileInfoEXT} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@code VkVideoDecodeH265ProfileInfoKHR} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH265ProfileInfoEXT malloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH265ProfileInfoEXT.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ public static VkVideoDecodeH265ProfileInfoKHR malloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH265ProfileInfoKHR.class, stack.nmalloc(ALIGNOF, SIZEOF));
}
/**
- * Returns a new {@code VkVideoDecodeH265ProfileInfoEXT} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@code VkVideoDecodeH265ProfileInfoKHR} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH265ProfileInfoEXT calloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH265ProfileInfoEXT.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ public static VkVideoDecodeH265ProfileInfoKHR calloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH265ProfileInfoKHR.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
}
/**
- * Returns a new {@link VkVideoDecodeH265ProfileInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@link VkVideoDecodeH265ProfileInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265ProfileInfoEXT.Buffer malloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH265ProfileInfoKHR.Buffer malloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH265ProfileInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@link VkVideoDecodeH265ProfileInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265ProfileInfoEXT.Buffer calloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH265ProfileInfoKHR.Buffer calloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
}
// -----------------------------------
/** Unsafe version of {@link #sType}. */
- public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265ProfileInfoEXT.STYPE); }
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265ProfileInfoKHR.STYPE); }
/** Unsafe version of {@link #pNext}. */
- public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH265ProfileInfoEXT.PNEXT); }
+ public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH265ProfileInfoKHR.PNEXT); }
/** Unsafe version of {@link #stdProfileIdc}. */
- public static int nstdProfileIdc(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265ProfileInfoEXT.STDPROFILEIDC); }
+ public static int nstdProfileIdc(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265ProfileInfoKHR.STDPROFILEIDC); }
/** Unsafe version of {@link #sType(int) sType}. */
- public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265ProfileInfoEXT.STYPE, value); }
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265ProfileInfoKHR.STYPE, value); }
/** Unsafe version of {@link #pNext(long) pNext}. */
- public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH265ProfileInfoEXT.PNEXT, value); }
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH265ProfileInfoKHR.PNEXT, value); }
/** Unsafe version of {@link #stdProfileIdc(int) stdProfileIdc}. */
- public static void nstdProfileIdc(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265ProfileInfoEXT.STDPROFILEIDC, value); }
+ public static void nstdProfileIdc(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265ProfileInfoKHR.STDPROFILEIDC, value); }
// -----------------------------------
- /** An array of {@link VkVideoDecodeH265ProfileInfoEXT} structs. */
- public static class Buffer extends StructBuffer implements NativeResource {
+ /** An array of {@link VkVideoDecodeH265ProfileInfoKHR} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
- private static final VkVideoDecodeH265ProfileInfoEXT ELEMENT_FACTORY = VkVideoDecodeH265ProfileInfoEXT.create(-1L);
+ private static final VkVideoDecodeH265ProfileInfoKHR ELEMENT_FACTORY = VkVideoDecodeH265ProfileInfoKHR.create(-1L);
/**
- * Creates a new {@code VkVideoDecodeH265ProfileInfoEXT.Buffer} instance backed by the specified container.
+ * Creates a new {@code VkVideoDecodeH265ProfileInfoKHR.Buffer} instance backed by the specified container.
*
* Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
* will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
- * by {@link VkVideoDecodeH265ProfileInfoEXT#SIZEOF}, and its mark will be undefined.
+ * by {@link VkVideoDecodeH265ProfileInfoKHR#SIZEOF}, and its mark will be undefined.
*
* The created buffer instance holds a strong reference to the container object.
*/
@@ -282,28 +282,28 @@ protected Buffer self() {
}
@Override
- protected VkVideoDecodeH265ProfileInfoEXT getElementFactory() {
+ protected VkVideoDecodeH265ProfileInfoKHR getElementFactory() {
return ELEMENT_FACTORY;
}
- /** @return the value of the {@link VkVideoDecodeH265ProfileInfoEXT#sType} field. */
+ /** @return the value of the {@link VkVideoDecodeH265ProfileInfoKHR#sType} field. */
@NativeType("VkStructureType")
- public int sType() { return VkVideoDecodeH265ProfileInfoEXT.nsType(address()); }
- /** @return the value of the {@link VkVideoDecodeH265ProfileInfoEXT#pNext} field. */
+ public int sType() { return VkVideoDecodeH265ProfileInfoKHR.nsType(address()); }
+ /** @return the value of the {@link VkVideoDecodeH265ProfileInfoKHR#pNext} field. */
@NativeType("void const *")
- public long pNext() { return VkVideoDecodeH265ProfileInfoEXT.npNext(address()); }
- /** @return the value of the {@link VkVideoDecodeH265ProfileInfoEXT#stdProfileIdc} field. */
+ public long pNext() { return VkVideoDecodeH265ProfileInfoKHR.npNext(address()); }
+ /** @return the value of the {@link VkVideoDecodeH265ProfileInfoKHR#stdProfileIdc} field. */
@NativeType("StdVideoH265ProfileIdc")
- public int stdProfileIdc() { return VkVideoDecodeH265ProfileInfoEXT.nstdProfileIdc(address()); }
-
- /** Sets the specified value to the {@link VkVideoDecodeH265ProfileInfoEXT#sType} field. */
- public VkVideoDecodeH265ProfileInfoEXT.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH265ProfileInfoEXT.nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_EXT} value to the {@link VkVideoDecodeH265ProfileInfoEXT#sType} field. */
- public VkVideoDecodeH265ProfileInfoEXT.Buffer sType$Default() { return sType(EXTVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_EXT); }
- /** Sets the specified value to the {@link VkVideoDecodeH265ProfileInfoEXT#pNext} field. */
- public VkVideoDecodeH265ProfileInfoEXT.Buffer pNext(@NativeType("void const *") long value) { VkVideoDecodeH265ProfileInfoEXT.npNext(address(), value); return this; }
- /** Sets the specified value to the {@link VkVideoDecodeH265ProfileInfoEXT#stdProfileIdc} field. */
- public VkVideoDecodeH265ProfileInfoEXT.Buffer stdProfileIdc(@NativeType("StdVideoH265ProfileIdc") int value) { VkVideoDecodeH265ProfileInfoEXT.nstdProfileIdc(address(), value); return this; }
+ public int stdProfileIdc() { return VkVideoDecodeH265ProfileInfoKHR.nstdProfileIdc(address()); }
+
+ /** Sets the specified value to the {@link VkVideoDecodeH265ProfileInfoKHR#sType} field. */
+ public VkVideoDecodeH265ProfileInfoKHR.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH265ProfileInfoKHR.nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR} value to the {@link VkVideoDecodeH265ProfileInfoKHR#sType} field. */
+ public VkVideoDecodeH265ProfileInfoKHR.Buffer sType$Default() { return sType(KHRVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR); }
+ /** Sets the specified value to the {@link VkVideoDecodeH265ProfileInfoKHR#pNext} field. */
+ public VkVideoDecodeH265ProfileInfoKHR.Buffer pNext(@NativeType("void const *") long value) { VkVideoDecodeH265ProfileInfoKHR.npNext(address(), value); return this; }
+ /** Sets the specified value to the {@link VkVideoDecodeH265ProfileInfoKHR#stdProfileIdc} field. */
+ public VkVideoDecodeH265ProfileInfoKHR.Buffer stdProfileIdc(@NativeType("StdVideoH265ProfileIdc") int value) { VkVideoDecodeH265ProfileInfoKHR.nstdProfileIdc(address(), value); return this; }
}
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265SessionParametersAddInfoEXT.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265SessionParametersAddInfoKHR.java
similarity index 64%
rename from modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265SessionParametersAddInfoEXT.java
rename to modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265SessionParametersAddInfoKHR.java
index ff716e22ca..5e5c818321 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265SessionParametersAddInfoEXT.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265SessionParametersAddInfoKHR.java
@@ -21,23 +21,27 @@
/**
* Structure specifies H.265 decoder parameter set information.
*
+ * Description
+ *
+ * This structure can be specified in the following places:
+ *
+ *
+ * - In the {@code pParametersAddInfo} member of the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR} structure specified in the {@code pNext} chain of {@link VkVideoSessionParametersCreateInfoKHR} used to create a video session parameters object. In this case, if the video codec operation the video session parameters object is created with is {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then it defines the set of initial parameters to add to the created object (see Creating Video Session Parameters).
+ * - In the {@code pNext} chain of {@link VkVideoSessionParametersUpdateInfoKHR}. In this case, if the video codec operation the video session parameters object to be updated was created with is {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then it defines the set of parameters to add to it (see Updating Video Session Parameters).
+ *
+ *
* Valid Usage
*
*
- * - The values of {@code stdVPSCount}, {@code stdSPSCount} and {@code stdPPSCount} must be less than or equal to the values of {@code maxStdVPSCount}, {@code maxStdSPSCount} and {@code maxStdPPSCount}, respectively
- * - When the {@code maxStdVPSCount} number of parameters of type StdVideoH265VideoParameterSet in the Video Session Parameters object is reached, no additional parameters of that type can be added to the object. {@link VK10#VK_ERROR_TOO_MANY_OBJECTS ERROR_TOO_MANY_OBJECTS} will be returned if an attempt is made to add additional data to this object at this point
- * - When the {@code maxStdSPSCount} number of parameters of type StdVideoH265SequenceParameterSet in the Video Session Parameters object is reached, no additional parameters of that type can be added to the object. {@link VK10#VK_ERROR_TOO_MANY_OBJECTS ERROR_TOO_MANY_OBJECTS} will be returned if an attempt is made to add additional data to this object at this point
- * - When the {@code maxStdPPSCount} number of parameters of type StdVideoH265PictureParameterSet in the Video Session Parameters object is reached, no additional parameters of that type can be added to the object. {@link VK10#VK_ERROR_TOO_MANY_OBJECTS ERROR_TOO_MANY_OBJECTS} will be returned if an attempt is made to add additional data to this object at this point
- * - Each entry to be added must have a unique, to the rest of the parameter array entries and the existing parameters in the Video Session Parameters Object that is being updated, VPS-SPS-PPS IDs
- * - Parameter entries that already exist in Video Session Parameters object with a particular VPS-SPS-PPS IDs cannot be replaced nor updated
- * - When creating a new object using a Video Session Parameters as a template, the array’s parameters with the same VPS-SPS-PPS IDs as the ones from the template take precedence
- * - VPS/SPS/PPS parameters must comply with the limits specified in {@link VkVideoSessionCreateInfoKHR} during Video Session creation
+ * - The {@code vps_video_parameter_set_id} member of each {@code StdVideoH265VideoParameterSet} structure specified in the elements of {@code pStdVPSs} must be unique within {@code pStdVPSs}
+ * - The pair constructed from the {@code sps_video_parameter_set_id} and {@code sps_seq_parameter_set_id} members of each {@code StdVideoH265SequenceParameterSet} structure specified in the elements of {@code pStdSPSs} must be unique within {@code pStdSPSs}
+ * - The triplet constructed from the {@code sps_video_parameter_set_id}, {@code pps_seq_parameter_set_id}, and {@code pps_pic_parameter_set_id} members of each {@code StdVideoH265PictureParameterSet} structure specified in the elements of {@code pStdPPSs} must be unique within {@code pStdPPSs}
*
*
* Valid Usage (Implicit)
*
*
- * - {@code sType} must be {@link EXTVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT}
+ * - {@code sType} must be {@link KHRVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR}
* - If {@code stdVPSCount} is not 0, {@code pStdVPSs} must be a valid pointer to an array of {@code stdVPSCount} {@code StdVideoH265VideoParameterSet} values
* - If {@code stdSPSCount} is not 0, {@code pStdSPSs} must be a valid pointer to an array of {@code stdSPSCount} {@code StdVideoH265SequenceParameterSet} values
* - If {@code stdPPSCount} is not 0, {@code pStdPPSs} must be a valid pointer to an array of {@code stdPPSCount} {@code StdVideoH265PictureParameterSet} values
@@ -45,12 +49,12 @@
*
* See Also
*
- * {@link VkVideoDecodeH265SessionParametersCreateInfoEXT}
+ * {@link VkVideoDecodeH265SessionParametersCreateInfoKHR}
*
* Layout
*
*
- * struct VkVideoDecodeH265SessionParametersAddInfoEXT {
+ * struct VkVideoDecodeH265SessionParametersAddInfoKHR {
* VkStructureType {@link #sType};
* void const * {@link #pNext};
* uint32_t {@link #stdVPSCount};
@@ -61,7 +65,7 @@
* {@link StdVideoH265PictureParameterSet StdVideoH265PictureParameterSet} const * {@link #pStdPPSs};
* }
*/
-public class VkVideoDecodeH265SessionParametersAddInfoEXT extends Struct implements NativeResource {
+public class VkVideoDecodeH265SessionParametersAddInfoKHR extends Struct implements NativeResource {
/** The struct size in bytes. */
public static final int SIZEOF;
@@ -106,12 +110,12 @@ public class VkVideoDecodeH265SessionParametersAddInfoEXT extends Struct impleme
}
/**
- * Creates a {@code VkVideoDecodeH265SessionParametersAddInfoEXT} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * Creates a {@code VkVideoDecodeH265SessionParametersAddInfoKHR} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
* visible to the struct instance and vice versa.
*
* The created instance holds a strong reference to the container object.
*/
- public VkVideoDecodeH265SessionParametersAddInfoEXT(ByteBuffer container) {
+ public VkVideoDecodeH265SessionParametersAddInfoKHR(ByteBuffer container) {
super(memAddress(container), __checkContainer(container, SIZEOF));
}
@@ -124,43 +128,43 @@ public VkVideoDecodeH265SessionParametersAddInfoEXT(ByteBuffer container) {
/** {@code NULL} or a pointer to a structure extending this structure. */
@NativeType("void const *")
public long pNext() { return npNext(address()); }
- /** the number of VPS elements in {@code pStdVPSs}. */
+ /** the number of elements in the {@code pStdVPSs} array. */
@NativeType("uint32_t")
public int stdVPSCount() { return nstdVPSCount(address()); }
- /** a pointer to an array of {@code stdVPSCount} {@code StdVideoH265VideoParameterSet} structures representing H.265 video parameter sets. */
+ /** a pointer to an array of {@code StdVideoH265VideoParameterSet} structures describing the H.265 VPS entries to add. */
@Nullable
@NativeType("StdVideoH265VideoParameterSet const *")
public StdVideoH265VideoParameterSet.Buffer pStdVPSs() { return npStdVPSs(address()); }
- /** the number of SPS elements in the {@code pStdSPSs}. Its value must be less than or equal to the value of {@code maxStdSPSCount}. */
+ /** the number of elements in the {@code pStdSPSs} array. */
@NativeType("uint32_t")
public int stdSPSCount() { return nstdSPSCount(address()); }
- /** a pointer to an array of {@code StdVideoH265SequenceParameterSet} structures representing H.265 sequence parameter sets. Each element of the array must have a unique H.265 VPS-SPS ID pair. */
+ /** a pointer to an array of {@code StdVideoH265SequenceParameterSet} structures describing the H.265 SPS entries to add. */
@Nullable
@NativeType("StdVideoH265SequenceParameterSet const *")
public StdVideoH265SequenceParameterSet.Buffer pStdSPSs() { return npStdSPSs(address()); }
- /** the number of PPS provided in {@code pStdPPSs}. Its value must be less than or equal to the value of {@code maxStdPPSCount}. */
+ /** the number of elements in the {@code pStdPPSs} array. */
@NativeType("uint32_t")
public int stdPPSCount() { return nstdPPSCount(address()); }
- /** a pointer to an array of {@code StdVideoH265PictureParameterSet} structures representing H.265 picture parameter sets. Each element of the array entry must have a unique H.265 VPS-SPS-PPS ID tuple. */
+ /** a pointer to an array of {@code StdVideoH265PictureParameterSet} structures describing the H.265 PPS entries to add. */
@Nullable
@NativeType("StdVideoH265PictureParameterSet const *")
public StdVideoH265PictureParameterSet.Buffer pStdPPSs() { return npStdPPSs(address()); }
/** Sets the specified value to the {@link #sType} field. */
- public VkVideoDecodeH265SessionParametersAddInfoEXT sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT} value to the {@link #sType} field. */
- public VkVideoDecodeH265SessionParametersAddInfoEXT sType$Default() { return sType(EXTVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT); }
+ public VkVideoDecodeH265SessionParametersAddInfoKHR sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR} value to the {@link #sType} field. */
+ public VkVideoDecodeH265SessionParametersAddInfoKHR sType$Default() { return sType(KHRVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR); }
/** Sets the specified value to the {@link #pNext} field. */
- public VkVideoDecodeH265SessionParametersAddInfoEXT pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
+ public VkVideoDecodeH265SessionParametersAddInfoKHR pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
/** Sets the address of the specified {@link StdVideoH265VideoParameterSet.Buffer} to the {@link #pStdVPSs} field. */
- public VkVideoDecodeH265SessionParametersAddInfoEXT pStdVPSs(@Nullable @NativeType("StdVideoH265VideoParameterSet const *") StdVideoH265VideoParameterSet.Buffer value) { npStdVPSs(address(), value); return this; }
+ public VkVideoDecodeH265SessionParametersAddInfoKHR pStdVPSs(@Nullable @NativeType("StdVideoH265VideoParameterSet const *") StdVideoH265VideoParameterSet.Buffer value) { npStdVPSs(address(), value); return this; }
/** Sets the address of the specified {@link StdVideoH265SequenceParameterSet.Buffer} to the {@link #pStdSPSs} field. */
- public VkVideoDecodeH265SessionParametersAddInfoEXT pStdSPSs(@Nullable @NativeType("StdVideoH265SequenceParameterSet const *") StdVideoH265SequenceParameterSet.Buffer value) { npStdSPSs(address(), value); return this; }
+ public VkVideoDecodeH265SessionParametersAddInfoKHR pStdSPSs(@Nullable @NativeType("StdVideoH265SequenceParameterSet const *") StdVideoH265SequenceParameterSet.Buffer value) { npStdSPSs(address(), value); return this; }
/** Sets the address of the specified {@link StdVideoH265PictureParameterSet.Buffer} to the {@link #pStdPPSs} field. */
- public VkVideoDecodeH265SessionParametersAddInfoEXT pStdPPSs(@Nullable @NativeType("StdVideoH265PictureParameterSet const *") StdVideoH265PictureParameterSet.Buffer value) { npStdPPSs(address(), value); return this; }
+ public VkVideoDecodeH265SessionParametersAddInfoKHR pStdPPSs(@Nullable @NativeType("StdVideoH265PictureParameterSet const *") StdVideoH265PictureParameterSet.Buffer value) { npStdPPSs(address(), value); return this; }
/** Initializes this struct with the specified values. */
- public VkVideoDecodeH265SessionParametersAddInfoEXT set(
+ public VkVideoDecodeH265SessionParametersAddInfoKHR set(
int sType,
long pNext,
@Nullable StdVideoH265VideoParameterSet.Buffer pStdVPSs,
@@ -183,157 +187,157 @@ public VkVideoDecodeH265SessionParametersAddInfoEXT set(
*
* @return this struct
*/
- public VkVideoDecodeH265SessionParametersAddInfoEXT set(VkVideoDecodeH265SessionParametersAddInfoEXT src) {
+ public VkVideoDecodeH265SessionParametersAddInfoKHR set(VkVideoDecodeH265SessionParametersAddInfoKHR src) {
memCopy(src.address(), address(), SIZEOF);
return this;
}
// -----------------------------------
- /** Returns a new {@code VkVideoDecodeH265SessionParametersAddInfoEXT} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH265SessionParametersAddInfoEXT malloc() {
- return wrap(VkVideoDecodeH265SessionParametersAddInfoEXT.class, nmemAllocChecked(SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH265SessionParametersAddInfoKHR} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH265SessionParametersAddInfoKHR malloc() {
+ return wrap(VkVideoDecodeH265SessionParametersAddInfoKHR.class, nmemAllocChecked(SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH265SessionParametersAddInfoEXT} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH265SessionParametersAddInfoEXT calloc() {
- return wrap(VkVideoDecodeH265SessionParametersAddInfoEXT.class, nmemCallocChecked(1, SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH265SessionParametersAddInfoKHR} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH265SessionParametersAddInfoKHR calloc() {
+ return wrap(VkVideoDecodeH265SessionParametersAddInfoKHR.class, nmemCallocChecked(1, SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH265SessionParametersAddInfoEXT} instance allocated with {@link BufferUtils}. */
- public static VkVideoDecodeH265SessionParametersAddInfoEXT create() {
+ /** Returns a new {@code VkVideoDecodeH265SessionParametersAddInfoKHR} instance allocated with {@link BufferUtils}. */
+ public static VkVideoDecodeH265SessionParametersAddInfoKHR create() {
ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
- return wrap(VkVideoDecodeH265SessionParametersAddInfoEXT.class, memAddress(container), container);
+ return wrap(VkVideoDecodeH265SessionParametersAddInfoKHR.class, memAddress(container), container);
}
- /** Returns a new {@code VkVideoDecodeH265SessionParametersAddInfoEXT} instance for the specified memory address. */
- public static VkVideoDecodeH265SessionParametersAddInfoEXT create(long address) {
- return wrap(VkVideoDecodeH265SessionParametersAddInfoEXT.class, address);
+ /** Returns a new {@code VkVideoDecodeH265SessionParametersAddInfoKHR} instance for the specified memory address. */
+ public static VkVideoDecodeH265SessionParametersAddInfoKHR create(long address) {
+ return wrap(VkVideoDecodeH265SessionParametersAddInfoKHR.class, address);
}
/** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH265SessionParametersAddInfoEXT createSafe(long address) {
- return address == NULL ? null : wrap(VkVideoDecodeH265SessionParametersAddInfoEXT.class, address);
+ public static VkVideoDecodeH265SessionParametersAddInfoKHR createSafe(long address) {
+ return address == NULL ? null : wrap(VkVideoDecodeH265SessionParametersAddInfoKHR.class, address);
}
/**
- * Returns a new {@link VkVideoDecodeH265SessionParametersAddInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH265SessionParametersAddInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265SessionParametersAddInfoEXT.Buffer malloc(int capacity) {
+ public static VkVideoDecodeH265SessionParametersAddInfoKHR.Buffer malloc(int capacity) {
return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH265SessionParametersAddInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH265SessionParametersAddInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265SessionParametersAddInfoEXT.Buffer calloc(int capacity) {
+ public static VkVideoDecodeH265SessionParametersAddInfoKHR.Buffer calloc(int capacity) {
return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH265SessionParametersAddInfoEXT.Buffer} instance allocated with {@link BufferUtils}.
+ * Returns a new {@link VkVideoDecodeH265SessionParametersAddInfoKHR.Buffer} instance allocated with {@link BufferUtils}.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265SessionParametersAddInfoEXT.Buffer create(int capacity) {
+ public static VkVideoDecodeH265SessionParametersAddInfoKHR.Buffer create(int capacity) {
ByteBuffer container = __create(capacity, SIZEOF);
return wrap(Buffer.class, memAddress(container), capacity, container);
}
/**
- * Create a {@link VkVideoDecodeH265SessionParametersAddInfoEXT.Buffer} instance at the specified memory.
+ * Create a {@link VkVideoDecodeH265SessionParametersAddInfoKHR.Buffer} instance at the specified memory.
*
* @param address the memory address
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265SessionParametersAddInfoEXT.Buffer create(long address, int capacity) {
+ public static VkVideoDecodeH265SessionParametersAddInfoKHR.Buffer create(long address, int capacity) {
return wrap(Buffer.class, address, capacity);
}
/** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH265SessionParametersAddInfoEXT.Buffer createSafe(long address, int capacity) {
+ public static VkVideoDecodeH265SessionParametersAddInfoKHR.Buffer createSafe(long address, int capacity) {
return address == NULL ? null : wrap(Buffer.class, address, capacity);
}
/**
- * Returns a new {@code VkVideoDecodeH265SessionParametersAddInfoEXT} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@code VkVideoDecodeH265SessionParametersAddInfoKHR} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH265SessionParametersAddInfoEXT malloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH265SessionParametersAddInfoEXT.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ public static VkVideoDecodeH265SessionParametersAddInfoKHR malloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH265SessionParametersAddInfoKHR.class, stack.nmalloc(ALIGNOF, SIZEOF));
}
/**
- * Returns a new {@code VkVideoDecodeH265SessionParametersAddInfoEXT} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@code VkVideoDecodeH265SessionParametersAddInfoKHR} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH265SessionParametersAddInfoEXT calloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH265SessionParametersAddInfoEXT.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ public static VkVideoDecodeH265SessionParametersAddInfoKHR calloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH265SessionParametersAddInfoKHR.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
}
/**
- * Returns a new {@link VkVideoDecodeH265SessionParametersAddInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@link VkVideoDecodeH265SessionParametersAddInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265SessionParametersAddInfoEXT.Buffer malloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH265SessionParametersAddInfoKHR.Buffer malloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH265SessionParametersAddInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@link VkVideoDecodeH265SessionParametersAddInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265SessionParametersAddInfoEXT.Buffer calloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH265SessionParametersAddInfoKHR.Buffer calloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
}
// -----------------------------------
/** Unsafe version of {@link #sType}. */
- public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265SessionParametersAddInfoEXT.STYPE); }
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265SessionParametersAddInfoKHR.STYPE); }
/** Unsafe version of {@link #pNext}. */
- public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH265SessionParametersAddInfoEXT.PNEXT); }
+ public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH265SessionParametersAddInfoKHR.PNEXT); }
/** Unsafe version of {@link #stdVPSCount}. */
- public static int nstdVPSCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265SessionParametersAddInfoEXT.STDVPSCOUNT); }
+ public static int nstdVPSCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265SessionParametersAddInfoKHR.STDVPSCOUNT); }
/** Unsafe version of {@link #pStdVPSs}. */
- @Nullable public static StdVideoH265VideoParameterSet.Buffer npStdVPSs(long struct) { return StdVideoH265VideoParameterSet.createSafe(memGetAddress(struct + VkVideoDecodeH265SessionParametersAddInfoEXT.PSTDVPSS), nstdVPSCount(struct)); }
+ @Nullable public static StdVideoH265VideoParameterSet.Buffer npStdVPSs(long struct) { return StdVideoH265VideoParameterSet.createSafe(memGetAddress(struct + VkVideoDecodeH265SessionParametersAddInfoKHR.PSTDVPSS), nstdVPSCount(struct)); }
/** Unsafe version of {@link #stdSPSCount}. */
- public static int nstdSPSCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265SessionParametersAddInfoEXT.STDSPSCOUNT); }
+ public static int nstdSPSCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265SessionParametersAddInfoKHR.STDSPSCOUNT); }
/** Unsafe version of {@link #pStdSPSs}. */
- @Nullable public static StdVideoH265SequenceParameterSet.Buffer npStdSPSs(long struct) { return StdVideoH265SequenceParameterSet.createSafe(memGetAddress(struct + VkVideoDecodeH265SessionParametersAddInfoEXT.PSTDSPSS), nstdSPSCount(struct)); }
+ @Nullable public static StdVideoH265SequenceParameterSet.Buffer npStdSPSs(long struct) { return StdVideoH265SequenceParameterSet.createSafe(memGetAddress(struct + VkVideoDecodeH265SessionParametersAddInfoKHR.PSTDSPSS), nstdSPSCount(struct)); }
/** Unsafe version of {@link #stdPPSCount}. */
- public static int nstdPPSCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265SessionParametersAddInfoEXT.STDPPSCOUNT); }
+ public static int nstdPPSCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265SessionParametersAddInfoKHR.STDPPSCOUNT); }
/** Unsafe version of {@link #pStdPPSs}. */
- @Nullable public static StdVideoH265PictureParameterSet.Buffer npStdPPSs(long struct) { return StdVideoH265PictureParameterSet.createSafe(memGetAddress(struct + VkVideoDecodeH265SessionParametersAddInfoEXT.PSTDPPSS), nstdPPSCount(struct)); }
+ @Nullable public static StdVideoH265PictureParameterSet.Buffer npStdPPSs(long struct) { return StdVideoH265PictureParameterSet.createSafe(memGetAddress(struct + VkVideoDecodeH265SessionParametersAddInfoKHR.PSTDPPSS), nstdPPSCount(struct)); }
/** Unsafe version of {@link #sType(int) sType}. */
- public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265SessionParametersAddInfoEXT.STYPE, value); }
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265SessionParametersAddInfoKHR.STYPE, value); }
/** Unsafe version of {@link #pNext(long) pNext}. */
- public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH265SessionParametersAddInfoEXT.PNEXT, value); }
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH265SessionParametersAddInfoKHR.PNEXT, value); }
/** Sets the specified value to the {@code stdVPSCount} field of the specified {@code struct}. */
- public static void nstdVPSCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265SessionParametersAddInfoEXT.STDVPSCOUNT, value); }
+ public static void nstdVPSCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265SessionParametersAddInfoKHR.STDVPSCOUNT, value); }
/** Unsafe version of {@link #pStdVPSs(StdVideoH265VideoParameterSet.Buffer) pStdVPSs}. */
- public static void npStdVPSs(long struct, @Nullable StdVideoH265VideoParameterSet.Buffer value) { memPutAddress(struct + VkVideoDecodeH265SessionParametersAddInfoEXT.PSTDVPSS, memAddressSafe(value)); nstdVPSCount(struct, value == null ? 0 : value.remaining()); }
+ public static void npStdVPSs(long struct, @Nullable StdVideoH265VideoParameterSet.Buffer value) { memPutAddress(struct + VkVideoDecodeH265SessionParametersAddInfoKHR.PSTDVPSS, memAddressSafe(value)); nstdVPSCount(struct, value == null ? 0 : value.remaining()); }
/** Sets the specified value to the {@code stdSPSCount} field of the specified {@code struct}. */
- public static void nstdSPSCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265SessionParametersAddInfoEXT.STDSPSCOUNT, value); }
+ public static void nstdSPSCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265SessionParametersAddInfoKHR.STDSPSCOUNT, value); }
/** Unsafe version of {@link #pStdSPSs(StdVideoH265SequenceParameterSet.Buffer) pStdSPSs}. */
- public static void npStdSPSs(long struct, @Nullable StdVideoH265SequenceParameterSet.Buffer value) { memPutAddress(struct + VkVideoDecodeH265SessionParametersAddInfoEXT.PSTDSPSS, memAddressSafe(value)); nstdSPSCount(struct, value == null ? 0 : value.remaining()); }
+ public static void npStdSPSs(long struct, @Nullable StdVideoH265SequenceParameterSet.Buffer value) { memPutAddress(struct + VkVideoDecodeH265SessionParametersAddInfoKHR.PSTDSPSS, memAddressSafe(value)); nstdSPSCount(struct, value == null ? 0 : value.remaining()); }
/** Sets the specified value to the {@code stdPPSCount} field of the specified {@code struct}. */
- public static void nstdPPSCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265SessionParametersAddInfoEXT.STDPPSCOUNT, value); }
+ public static void nstdPPSCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265SessionParametersAddInfoKHR.STDPPSCOUNT, value); }
/** Unsafe version of {@link #pStdPPSs(StdVideoH265PictureParameterSet.Buffer) pStdPPSs}. */
- public static void npStdPPSs(long struct, @Nullable StdVideoH265PictureParameterSet.Buffer value) { memPutAddress(struct + VkVideoDecodeH265SessionParametersAddInfoEXT.PSTDPPSS, memAddressSafe(value)); nstdPPSCount(struct, value == null ? 0 : value.remaining()); }
+ public static void npStdPPSs(long struct, @Nullable StdVideoH265PictureParameterSet.Buffer value) { memPutAddress(struct + VkVideoDecodeH265SessionParametersAddInfoKHR.PSTDPPSS, memAddressSafe(value)); nstdPPSCount(struct, value == null ? 0 : value.remaining()); }
/**
* Validates pointer members that should not be {@code NULL}.
@@ -343,19 +347,19 @@ public static VkVideoDecodeH265SessionParametersAddInfoEXT.Buffer calloc(int cap
public static void validate(long struct) {
int stdVPSCount = nstdVPSCount(struct);
if (stdVPSCount != 0) {
- long pStdVPSs = memGetAddress(struct + VkVideoDecodeH265SessionParametersAddInfoEXT.PSTDVPSS);
+ long pStdVPSs = memGetAddress(struct + VkVideoDecodeH265SessionParametersAddInfoKHR.PSTDVPSS);
check(pStdVPSs);
validate(pStdVPSs, stdVPSCount, StdVideoH265VideoParameterSet.SIZEOF, StdVideoH265VideoParameterSet::validate);
}
int stdSPSCount = nstdSPSCount(struct);
if (stdSPSCount != 0) {
- long pStdSPSs = memGetAddress(struct + VkVideoDecodeH265SessionParametersAddInfoEXT.PSTDSPSS);
+ long pStdSPSs = memGetAddress(struct + VkVideoDecodeH265SessionParametersAddInfoKHR.PSTDSPSS);
check(pStdSPSs);
validate(pStdSPSs, stdSPSCount, StdVideoH265SequenceParameterSet.SIZEOF, StdVideoH265SequenceParameterSet::validate);
}
int stdPPSCount = nstdPPSCount(struct);
if (stdPPSCount != 0) {
- long pStdPPSs = memGetAddress(struct + VkVideoDecodeH265SessionParametersAddInfoEXT.PSTDPPSS);
+ long pStdPPSs = memGetAddress(struct + VkVideoDecodeH265SessionParametersAddInfoKHR.PSTDPPSS);
check(pStdPPSs);
validate(pStdPPSs, stdPPSCount, StdVideoH265PictureParameterSet.SIZEOF, StdVideoH265PictureParameterSet::validate);
}
@@ -363,17 +367,17 @@ public static void validate(long struct) {
// -----------------------------------
- /** An array of {@link VkVideoDecodeH265SessionParametersAddInfoEXT} structs. */
- public static class Buffer extends StructBuffer implements NativeResource {
+ /** An array of {@link VkVideoDecodeH265SessionParametersAddInfoKHR} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
- private static final VkVideoDecodeH265SessionParametersAddInfoEXT ELEMENT_FACTORY = VkVideoDecodeH265SessionParametersAddInfoEXT.create(-1L);
+ private static final VkVideoDecodeH265SessionParametersAddInfoKHR ELEMENT_FACTORY = VkVideoDecodeH265SessionParametersAddInfoKHR.create(-1L);
/**
- * Creates a new {@code VkVideoDecodeH265SessionParametersAddInfoEXT.Buffer} instance backed by the specified container.
+ * Creates a new {@code VkVideoDecodeH265SessionParametersAddInfoKHR.Buffer} instance backed by the specified container.
*
* Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
* will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
- * by {@link VkVideoDecodeH265SessionParametersAddInfoEXT#SIZEOF}, and its mark will be undefined.
+ * by {@link VkVideoDecodeH265SessionParametersAddInfoKHR#SIZEOF}, and its mark will be undefined.
*
* The created buffer instance holds a strong reference to the container object.
*/
@@ -395,50 +399,50 @@ protected Buffer self() {
}
@Override
- protected VkVideoDecodeH265SessionParametersAddInfoEXT getElementFactory() {
+ protected VkVideoDecodeH265SessionParametersAddInfoKHR getElementFactory() {
return ELEMENT_FACTORY;
}
- /** @return the value of the {@link VkVideoDecodeH265SessionParametersAddInfoEXT#sType} field. */
+ /** @return the value of the {@link VkVideoDecodeH265SessionParametersAddInfoKHR#sType} field. */
@NativeType("VkStructureType")
- public int sType() { return VkVideoDecodeH265SessionParametersAddInfoEXT.nsType(address()); }
- /** @return the value of the {@link VkVideoDecodeH265SessionParametersAddInfoEXT#pNext} field. */
+ public int sType() { return VkVideoDecodeH265SessionParametersAddInfoKHR.nsType(address()); }
+ /** @return the value of the {@link VkVideoDecodeH265SessionParametersAddInfoKHR#pNext} field. */
@NativeType("void const *")
- public long pNext() { return VkVideoDecodeH265SessionParametersAddInfoEXT.npNext(address()); }
- /** @return the value of the {@link VkVideoDecodeH265SessionParametersAddInfoEXT#stdVPSCount} field. */
+ public long pNext() { return VkVideoDecodeH265SessionParametersAddInfoKHR.npNext(address()); }
+ /** @return the value of the {@link VkVideoDecodeH265SessionParametersAddInfoKHR#stdVPSCount} field. */
@NativeType("uint32_t")
- public int stdVPSCount() { return VkVideoDecodeH265SessionParametersAddInfoEXT.nstdVPSCount(address()); }
- /** @return a {@link StdVideoH265VideoParameterSet.Buffer} view of the struct array pointed to by the {@link VkVideoDecodeH265SessionParametersAddInfoEXT#pStdVPSs} field. */
+ public int stdVPSCount() { return VkVideoDecodeH265SessionParametersAddInfoKHR.nstdVPSCount(address()); }
+ /** @return a {@link StdVideoH265VideoParameterSet.Buffer} view of the struct array pointed to by the {@link VkVideoDecodeH265SessionParametersAddInfoKHR#pStdVPSs} field. */
@Nullable
@NativeType("StdVideoH265VideoParameterSet const *")
- public StdVideoH265VideoParameterSet.Buffer pStdVPSs() { return VkVideoDecodeH265SessionParametersAddInfoEXT.npStdVPSs(address()); }
- /** @return the value of the {@link VkVideoDecodeH265SessionParametersAddInfoEXT#stdSPSCount} field. */
+ public StdVideoH265VideoParameterSet.Buffer pStdVPSs() { return VkVideoDecodeH265SessionParametersAddInfoKHR.npStdVPSs(address()); }
+ /** @return the value of the {@link VkVideoDecodeH265SessionParametersAddInfoKHR#stdSPSCount} field. */
@NativeType("uint32_t")
- public int stdSPSCount() { return VkVideoDecodeH265SessionParametersAddInfoEXT.nstdSPSCount(address()); }
- /** @return a {@link StdVideoH265SequenceParameterSet.Buffer} view of the struct array pointed to by the {@link VkVideoDecodeH265SessionParametersAddInfoEXT#pStdSPSs} field. */
+ public int stdSPSCount() { return VkVideoDecodeH265SessionParametersAddInfoKHR.nstdSPSCount(address()); }
+ /** @return a {@link StdVideoH265SequenceParameterSet.Buffer} view of the struct array pointed to by the {@link VkVideoDecodeH265SessionParametersAddInfoKHR#pStdSPSs} field. */
@Nullable
@NativeType("StdVideoH265SequenceParameterSet const *")
- public StdVideoH265SequenceParameterSet.Buffer pStdSPSs() { return VkVideoDecodeH265SessionParametersAddInfoEXT.npStdSPSs(address()); }
- /** @return the value of the {@link VkVideoDecodeH265SessionParametersAddInfoEXT#stdPPSCount} field. */
+ public StdVideoH265SequenceParameterSet.Buffer pStdSPSs() { return VkVideoDecodeH265SessionParametersAddInfoKHR.npStdSPSs(address()); }
+ /** @return the value of the {@link VkVideoDecodeH265SessionParametersAddInfoKHR#stdPPSCount} field. */
@NativeType("uint32_t")
- public int stdPPSCount() { return VkVideoDecodeH265SessionParametersAddInfoEXT.nstdPPSCount(address()); }
- /** @return a {@link StdVideoH265PictureParameterSet.Buffer} view of the struct array pointed to by the {@link VkVideoDecodeH265SessionParametersAddInfoEXT#pStdPPSs} field. */
+ public int stdPPSCount() { return VkVideoDecodeH265SessionParametersAddInfoKHR.nstdPPSCount(address()); }
+ /** @return a {@link StdVideoH265PictureParameterSet.Buffer} view of the struct array pointed to by the {@link VkVideoDecodeH265SessionParametersAddInfoKHR#pStdPPSs} field. */
@Nullable
@NativeType("StdVideoH265PictureParameterSet const *")
- public StdVideoH265PictureParameterSet.Buffer pStdPPSs() { return VkVideoDecodeH265SessionParametersAddInfoEXT.npStdPPSs(address()); }
-
- /** Sets the specified value to the {@link VkVideoDecodeH265SessionParametersAddInfoEXT#sType} field. */
- public VkVideoDecodeH265SessionParametersAddInfoEXT.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH265SessionParametersAddInfoEXT.nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT} value to the {@link VkVideoDecodeH265SessionParametersAddInfoEXT#sType} field. */
- public VkVideoDecodeH265SessionParametersAddInfoEXT.Buffer sType$Default() { return sType(EXTVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT); }
- /** Sets the specified value to the {@link VkVideoDecodeH265SessionParametersAddInfoEXT#pNext} field. */
- public VkVideoDecodeH265SessionParametersAddInfoEXT.Buffer pNext(@NativeType("void const *") long value) { VkVideoDecodeH265SessionParametersAddInfoEXT.npNext(address(), value); return this; }
- /** Sets the address of the specified {@link StdVideoH265VideoParameterSet.Buffer} to the {@link VkVideoDecodeH265SessionParametersAddInfoEXT#pStdVPSs} field. */
- public VkVideoDecodeH265SessionParametersAddInfoEXT.Buffer pStdVPSs(@Nullable @NativeType("StdVideoH265VideoParameterSet const *") StdVideoH265VideoParameterSet.Buffer value) { VkVideoDecodeH265SessionParametersAddInfoEXT.npStdVPSs(address(), value); return this; }
- /** Sets the address of the specified {@link StdVideoH265SequenceParameterSet.Buffer} to the {@link VkVideoDecodeH265SessionParametersAddInfoEXT#pStdSPSs} field. */
- public VkVideoDecodeH265SessionParametersAddInfoEXT.Buffer pStdSPSs(@Nullable @NativeType("StdVideoH265SequenceParameterSet const *") StdVideoH265SequenceParameterSet.Buffer value) { VkVideoDecodeH265SessionParametersAddInfoEXT.npStdSPSs(address(), value); return this; }
- /** Sets the address of the specified {@link StdVideoH265PictureParameterSet.Buffer} to the {@link VkVideoDecodeH265SessionParametersAddInfoEXT#pStdPPSs} field. */
- public VkVideoDecodeH265SessionParametersAddInfoEXT.Buffer pStdPPSs(@Nullable @NativeType("StdVideoH265PictureParameterSet const *") StdVideoH265PictureParameterSet.Buffer value) { VkVideoDecodeH265SessionParametersAddInfoEXT.npStdPPSs(address(), value); return this; }
+ public StdVideoH265PictureParameterSet.Buffer pStdPPSs() { return VkVideoDecodeH265SessionParametersAddInfoKHR.npStdPPSs(address()); }
+
+ /** Sets the specified value to the {@link VkVideoDecodeH265SessionParametersAddInfoKHR#sType} field. */
+ public VkVideoDecodeH265SessionParametersAddInfoKHR.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH265SessionParametersAddInfoKHR.nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR} value to the {@link VkVideoDecodeH265SessionParametersAddInfoKHR#sType} field. */
+ public VkVideoDecodeH265SessionParametersAddInfoKHR.Buffer sType$Default() { return sType(KHRVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR); }
+ /** Sets the specified value to the {@link VkVideoDecodeH265SessionParametersAddInfoKHR#pNext} field. */
+ public VkVideoDecodeH265SessionParametersAddInfoKHR.Buffer pNext(@NativeType("void const *") long value) { VkVideoDecodeH265SessionParametersAddInfoKHR.npNext(address(), value); return this; }
+ /** Sets the address of the specified {@link StdVideoH265VideoParameterSet.Buffer} to the {@link VkVideoDecodeH265SessionParametersAddInfoKHR#pStdVPSs} field. */
+ public VkVideoDecodeH265SessionParametersAddInfoKHR.Buffer pStdVPSs(@Nullable @NativeType("StdVideoH265VideoParameterSet const *") StdVideoH265VideoParameterSet.Buffer value) { VkVideoDecodeH265SessionParametersAddInfoKHR.npStdVPSs(address(), value); return this; }
+ /** Sets the address of the specified {@link StdVideoH265SequenceParameterSet.Buffer} to the {@link VkVideoDecodeH265SessionParametersAddInfoKHR#pStdSPSs} field. */
+ public VkVideoDecodeH265SessionParametersAddInfoKHR.Buffer pStdSPSs(@Nullable @NativeType("StdVideoH265SequenceParameterSet const *") StdVideoH265SequenceParameterSet.Buffer value) { VkVideoDecodeH265SessionParametersAddInfoKHR.npStdSPSs(address(), value); return this; }
+ /** Sets the address of the specified {@link StdVideoH265PictureParameterSet.Buffer} to the {@link VkVideoDecodeH265SessionParametersAddInfoKHR#pStdPPSs} field. */
+ public VkVideoDecodeH265SessionParametersAddInfoKHR.Buffer pStdPPSs(@Nullable @NativeType("StdVideoH265PictureParameterSet const *") StdVideoH265PictureParameterSet.Buffer value) { VkVideoDecodeH265SessionParametersAddInfoKHR.npStdPPSs(address(), value); return this; }
}
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265SessionParametersCreateInfoEXT.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265SessionParametersCreateInfoKHR.java
similarity index 58%
rename from modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265SessionParametersCreateInfoEXT.java
rename to modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265SessionParametersCreateInfoKHR.java
index 308477b350..ada43893ec 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265SessionParametersCreateInfoEXT.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeH265SessionParametersCreateInfoKHR.java
@@ -18,36 +18,30 @@
/**
* Structure specifies H.265 decoder parameter set information.
*
- * Description
- *
- * When a {@code VkVideoSessionParametersKHR} object contains {@code maxStdVPSCount} {@code StdVideoH265VideoParameterSet} entries, no additional {@code StdVideoH265VideoParameterSet} entries can be added to it, and {@link VK10#VK_ERROR_TOO_MANY_OBJECTS ERROR_TOO_MANY_OBJECTS} will be returned if an attempt is made to add these entries. When a {@code VkVideoSessionParametersKHR} object contains {@code maxStdSPSCount} {@code StdVideoH265SequenceParameterSet} entries, no additional {@code StdVideoH265SequenceParameterSet} entries can be added to it, and {@link VK10#VK_ERROR_TOO_MANY_OBJECTS ERROR_TOO_MANY_OBJECTS} will be returned if an attempt is made to add these entries. When a {@code VkVideoSessionParametersKHR} object contains {@code maxStdPPSCount} {@code StdVideoH265PictureParameterSet} entries, no additional {@code StdVideoH265PictureParameterSet} entries can be added to it, and {@link VK10#VK_ERROR_TOO_MANY_OBJECTS ERROR_TOO_MANY_OBJECTS} will be returned if an attempt is made to add these entries.
- *
- * The provided H.265 VPS/SPS/PPS parameters must be within the limits specified during decoder creation for the decoder specified in {@link VkVideoSessionParametersCreateInfoKHR}.
- *
* Valid Usage (Implicit)
*
*
- * - {@code sType} must be {@link EXTVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT}
- * - If {@code pParametersAddInfo} is not {@code NULL}, {@code pParametersAddInfo} must be a valid pointer to a valid {@link VkVideoDecodeH265SessionParametersAddInfoEXT} structure
+ * - {@code sType} must be {@link KHRVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR}
+ * - If {@code pParametersAddInfo} is not {@code NULL}, {@code pParametersAddInfo} must be a valid pointer to a valid {@link VkVideoDecodeH265SessionParametersAddInfoKHR} structure
*
*
* See Also
*
- * {@link VkVideoDecodeH265SessionParametersAddInfoEXT}
+ * {@link VkVideoDecodeH265SessionParametersAddInfoKHR}
*
* Layout
*
*
- * struct VkVideoDecodeH265SessionParametersCreateInfoEXT {
+ * struct VkVideoDecodeH265SessionParametersCreateInfoKHR {
* VkStructureType {@link #sType};
* void const * {@link #pNext};
* uint32_t {@link #maxStdVPSCount};
* uint32_t {@link #maxStdSPSCount};
* uint32_t {@link #maxStdPPSCount};
- * {@link VkVideoDecodeH265SessionParametersAddInfoEXT VkVideoDecodeH265SessionParametersAddInfoEXT} const * {@link #pParametersAddInfo};
+ * {@link VkVideoDecodeH265SessionParametersAddInfoKHR VkVideoDecodeH265SessionParametersAddInfoKHR} const * {@link #pParametersAddInfo};
* }
*/
-public class VkVideoDecodeH265SessionParametersCreateInfoEXT extends Struct implements NativeResource {
+public class VkVideoDecodeH265SessionParametersCreateInfoKHR extends Struct implements NativeResource {
/** The struct size in bytes. */
public static final int SIZEOF;
@@ -86,12 +80,12 @@ public class VkVideoDecodeH265SessionParametersCreateInfoEXT extends Struct impl
}
/**
- * Creates a {@code VkVideoDecodeH265SessionParametersCreateInfoEXT} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * Creates a {@code VkVideoDecodeH265SessionParametersCreateInfoKHR} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
* visible to the struct instance and vice versa.
*
* The created instance holds a strong reference to the container object.
*/
- public VkVideoDecodeH265SessionParametersCreateInfoEXT(ByteBuffer container) {
+ public VkVideoDecodeH265SessionParametersCreateInfoKHR(ByteBuffer container) {
super(memAddress(container), __checkContainer(container, SIZEOF));
}
@@ -104,43 +98,43 @@ public VkVideoDecodeH265SessionParametersCreateInfoEXT(ByteBuffer container) {
/** {@code NULL} or a pointer to a structure extending this structure. */
@NativeType("void const *")
public long pNext() { return npNext(address()); }
- /** the maximum number of entries of type {@code StdVideoH265VideoParameterSet} within {@code VkVideoSessionParametersKHR}. */
+ /** the maximum number of H.265 VPS entries the created {@code VkVideoSessionParametersKHR} can contain. */
@NativeType("uint32_t")
public int maxStdVPSCount() { return nmaxStdVPSCount(address()); }
- /** the maximum number of SPS parameters that the {@code VkVideoSessionParametersKHR} can contain. */
+ /** the maximum number of H.265 SPS entries the created {@code VkVideoSessionParametersKHR} can contain. */
@NativeType("uint32_t")
public int maxStdSPSCount() { return nmaxStdSPSCount(address()); }
- /** the maximum number of PPS parameters that the {@code VkVideoSessionParametersKHR} can contain. */
+ /** the maximum number of H.265 PPS entries the created {@code VkVideoSessionParametersKHR} can contain. */
@NativeType("uint32_t")
public int maxStdPPSCount() { return nmaxStdPPSCount(address()); }
- /** {@code NULL} or a pointer to a {@link VkVideoDecodeH265SessionParametersAddInfoEXT} structure specifying H.265 parameters to add upon object creation. */
+ /** {@code NULL} or a pointer to a {@link VkVideoDecodeH265SessionParametersAddInfoKHR} structure specifying H.265 parameters to add upon object creation. */
@Nullable
- @NativeType("VkVideoDecodeH265SessionParametersAddInfoEXT const *")
- public VkVideoDecodeH265SessionParametersAddInfoEXT pParametersAddInfo() { return npParametersAddInfo(address()); }
+ @NativeType("VkVideoDecodeH265SessionParametersAddInfoKHR const *")
+ public VkVideoDecodeH265SessionParametersAddInfoKHR pParametersAddInfo() { return npParametersAddInfo(address()); }
/** Sets the specified value to the {@link #sType} field. */
- public VkVideoDecodeH265SessionParametersCreateInfoEXT sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT} value to the {@link #sType} field. */
- public VkVideoDecodeH265SessionParametersCreateInfoEXT sType$Default() { return sType(EXTVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT); }
+ public VkVideoDecodeH265SessionParametersCreateInfoKHR sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR} value to the {@link #sType} field. */
+ public VkVideoDecodeH265SessionParametersCreateInfoKHR sType$Default() { return sType(KHRVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR); }
/** Sets the specified value to the {@link #pNext} field. */
- public VkVideoDecodeH265SessionParametersCreateInfoEXT pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
+ public VkVideoDecodeH265SessionParametersCreateInfoKHR pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
/** Sets the specified value to the {@link #maxStdVPSCount} field. */
- public VkVideoDecodeH265SessionParametersCreateInfoEXT maxStdVPSCount(@NativeType("uint32_t") int value) { nmaxStdVPSCount(address(), value); return this; }
+ public VkVideoDecodeH265SessionParametersCreateInfoKHR maxStdVPSCount(@NativeType("uint32_t") int value) { nmaxStdVPSCount(address(), value); return this; }
/** Sets the specified value to the {@link #maxStdSPSCount} field. */
- public VkVideoDecodeH265SessionParametersCreateInfoEXT maxStdSPSCount(@NativeType("uint32_t") int value) { nmaxStdSPSCount(address(), value); return this; }
+ public VkVideoDecodeH265SessionParametersCreateInfoKHR maxStdSPSCount(@NativeType("uint32_t") int value) { nmaxStdSPSCount(address(), value); return this; }
/** Sets the specified value to the {@link #maxStdPPSCount} field. */
- public VkVideoDecodeH265SessionParametersCreateInfoEXT maxStdPPSCount(@NativeType("uint32_t") int value) { nmaxStdPPSCount(address(), value); return this; }
- /** Sets the address of the specified {@link VkVideoDecodeH265SessionParametersAddInfoEXT} to the {@link #pParametersAddInfo} field. */
- public VkVideoDecodeH265SessionParametersCreateInfoEXT pParametersAddInfo(@Nullable @NativeType("VkVideoDecodeH265SessionParametersAddInfoEXT const *") VkVideoDecodeH265SessionParametersAddInfoEXT value) { npParametersAddInfo(address(), value); return this; }
+ public VkVideoDecodeH265SessionParametersCreateInfoKHR maxStdPPSCount(@NativeType("uint32_t") int value) { nmaxStdPPSCount(address(), value); return this; }
+ /** Sets the address of the specified {@link VkVideoDecodeH265SessionParametersAddInfoKHR} to the {@link #pParametersAddInfo} field. */
+ public VkVideoDecodeH265SessionParametersCreateInfoKHR pParametersAddInfo(@Nullable @NativeType("VkVideoDecodeH265SessionParametersAddInfoKHR const *") VkVideoDecodeH265SessionParametersAddInfoKHR value) { npParametersAddInfo(address(), value); return this; }
/** Initializes this struct with the specified values. */
- public VkVideoDecodeH265SessionParametersCreateInfoEXT set(
+ public VkVideoDecodeH265SessionParametersCreateInfoKHR set(
int sType,
long pNext,
int maxStdVPSCount,
int maxStdSPSCount,
int maxStdPPSCount,
- @Nullable VkVideoDecodeH265SessionParametersAddInfoEXT pParametersAddInfo
+ @Nullable VkVideoDecodeH265SessionParametersAddInfoKHR pParametersAddInfo
) {
sType(sType);
pNext(pNext);
@@ -159,149 +153,149 @@ public VkVideoDecodeH265SessionParametersCreateInfoEXT set(
*
* @return this struct
*/
- public VkVideoDecodeH265SessionParametersCreateInfoEXT set(VkVideoDecodeH265SessionParametersCreateInfoEXT src) {
+ public VkVideoDecodeH265SessionParametersCreateInfoKHR set(VkVideoDecodeH265SessionParametersCreateInfoKHR src) {
memCopy(src.address(), address(), SIZEOF);
return this;
}
// -----------------------------------
- /** Returns a new {@code VkVideoDecodeH265SessionParametersCreateInfoEXT} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH265SessionParametersCreateInfoEXT malloc() {
- return wrap(VkVideoDecodeH265SessionParametersCreateInfoEXT.class, nmemAllocChecked(SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH265SessionParametersCreateInfoKHR} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH265SessionParametersCreateInfoKHR malloc() {
+ return wrap(VkVideoDecodeH265SessionParametersCreateInfoKHR.class, nmemAllocChecked(SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH265SessionParametersCreateInfoEXT} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
- public static VkVideoDecodeH265SessionParametersCreateInfoEXT calloc() {
- return wrap(VkVideoDecodeH265SessionParametersCreateInfoEXT.class, nmemCallocChecked(1, SIZEOF));
+ /** Returns a new {@code VkVideoDecodeH265SessionParametersCreateInfoKHR} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkVideoDecodeH265SessionParametersCreateInfoKHR calloc() {
+ return wrap(VkVideoDecodeH265SessionParametersCreateInfoKHR.class, nmemCallocChecked(1, SIZEOF));
}
- /** Returns a new {@code VkVideoDecodeH265SessionParametersCreateInfoEXT} instance allocated with {@link BufferUtils}. */
- public static VkVideoDecodeH265SessionParametersCreateInfoEXT create() {
+ /** Returns a new {@code VkVideoDecodeH265SessionParametersCreateInfoKHR} instance allocated with {@link BufferUtils}. */
+ public static VkVideoDecodeH265SessionParametersCreateInfoKHR create() {
ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
- return wrap(VkVideoDecodeH265SessionParametersCreateInfoEXT.class, memAddress(container), container);
+ return wrap(VkVideoDecodeH265SessionParametersCreateInfoKHR.class, memAddress(container), container);
}
- /** Returns a new {@code VkVideoDecodeH265SessionParametersCreateInfoEXT} instance for the specified memory address. */
- public static VkVideoDecodeH265SessionParametersCreateInfoEXT create(long address) {
- return wrap(VkVideoDecodeH265SessionParametersCreateInfoEXT.class, address);
+ /** Returns a new {@code VkVideoDecodeH265SessionParametersCreateInfoKHR} instance for the specified memory address. */
+ public static VkVideoDecodeH265SessionParametersCreateInfoKHR create(long address) {
+ return wrap(VkVideoDecodeH265SessionParametersCreateInfoKHR.class, address);
}
/** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH265SessionParametersCreateInfoEXT createSafe(long address) {
- return address == NULL ? null : wrap(VkVideoDecodeH265SessionParametersCreateInfoEXT.class, address);
+ public static VkVideoDecodeH265SessionParametersCreateInfoKHR createSafe(long address) {
+ return address == NULL ? null : wrap(VkVideoDecodeH265SessionParametersCreateInfoKHR.class, address);
}
/**
- * Returns a new {@link VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH265SessionParametersCreateInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer malloc(int capacity) {
+ public static VkVideoDecodeH265SessionParametersCreateInfoKHR.Buffer malloc(int capacity) {
return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ * Returns a new {@link VkVideoDecodeH265SessionParametersCreateInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer calloc(int capacity) {
+ public static VkVideoDecodeH265SessionParametersCreateInfoKHR.Buffer calloc(int capacity) {
return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer} instance allocated with {@link BufferUtils}.
+ * Returns a new {@link VkVideoDecodeH265SessionParametersCreateInfoKHR.Buffer} instance allocated with {@link BufferUtils}.
*
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer create(int capacity) {
+ public static VkVideoDecodeH265SessionParametersCreateInfoKHR.Buffer create(int capacity) {
ByteBuffer container = __create(capacity, SIZEOF);
return wrap(Buffer.class, memAddress(container), capacity, container);
}
/**
- * Create a {@link VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer} instance at the specified memory.
+ * Create a {@link VkVideoDecodeH265SessionParametersCreateInfoKHR.Buffer} instance at the specified memory.
*
* @param address the memory address
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer create(long address, int capacity) {
+ public static VkVideoDecodeH265SessionParametersCreateInfoKHR.Buffer create(long address, int capacity) {
return wrap(Buffer.class, address, capacity);
}
/** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
@Nullable
- public static VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer createSafe(long address, int capacity) {
+ public static VkVideoDecodeH265SessionParametersCreateInfoKHR.Buffer createSafe(long address, int capacity) {
return address == NULL ? null : wrap(Buffer.class, address, capacity);
}
/**
- * Returns a new {@code VkVideoDecodeH265SessionParametersCreateInfoEXT} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@code VkVideoDecodeH265SessionParametersCreateInfoKHR} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH265SessionParametersCreateInfoEXT malloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH265SessionParametersCreateInfoEXT.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ public static VkVideoDecodeH265SessionParametersCreateInfoKHR malloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH265SessionParametersCreateInfoKHR.class, stack.nmalloc(ALIGNOF, SIZEOF));
}
/**
- * Returns a new {@code VkVideoDecodeH265SessionParametersCreateInfoEXT} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@code VkVideoDecodeH265SessionParametersCreateInfoKHR} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
*/
- public static VkVideoDecodeH265SessionParametersCreateInfoEXT calloc(MemoryStack stack) {
- return wrap(VkVideoDecodeH265SessionParametersCreateInfoEXT.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ public static VkVideoDecodeH265SessionParametersCreateInfoKHR calloc(MemoryStack stack) {
+ return wrap(VkVideoDecodeH265SessionParametersCreateInfoKHR.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
}
/**
- * Returns a new {@link VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack}.
+ * Returns a new {@link VkVideoDecodeH265SessionParametersCreateInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack}.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer malloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH265SessionParametersCreateInfoKHR.Buffer malloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
}
/**
- * Returns a new {@link VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ * Returns a new {@link VkVideoDecodeH265SessionParametersCreateInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
*
* @param stack the stack from which to allocate
* @param capacity the buffer capacity
*/
- public static VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer calloc(int capacity, MemoryStack stack) {
+ public static VkVideoDecodeH265SessionParametersCreateInfoKHR.Buffer calloc(int capacity, MemoryStack stack) {
return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
}
// -----------------------------------
/** Unsafe version of {@link #sType}. */
- public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265SessionParametersCreateInfoEXT.STYPE); }
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265SessionParametersCreateInfoKHR.STYPE); }
/** Unsafe version of {@link #pNext}. */
- public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH265SessionParametersCreateInfoEXT.PNEXT); }
+ public static long npNext(long struct) { return memGetAddress(struct + VkVideoDecodeH265SessionParametersCreateInfoKHR.PNEXT); }
/** Unsafe version of {@link #maxStdVPSCount}. */
- public static int nmaxStdVPSCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265SessionParametersCreateInfoEXT.MAXSTDVPSCOUNT); }
+ public static int nmaxStdVPSCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265SessionParametersCreateInfoKHR.MAXSTDVPSCOUNT); }
/** Unsafe version of {@link #maxStdSPSCount}. */
- public static int nmaxStdSPSCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265SessionParametersCreateInfoEXT.MAXSTDSPSCOUNT); }
+ public static int nmaxStdSPSCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265SessionParametersCreateInfoKHR.MAXSTDSPSCOUNT); }
/** Unsafe version of {@link #maxStdPPSCount}. */
- public static int nmaxStdPPSCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265SessionParametersCreateInfoEXT.MAXSTDPPSCOUNT); }
+ public static int nmaxStdPPSCount(long struct) { return UNSAFE.getInt(null, struct + VkVideoDecodeH265SessionParametersCreateInfoKHR.MAXSTDPPSCOUNT); }
/** Unsafe version of {@link #pParametersAddInfo}. */
- @Nullable public static VkVideoDecodeH265SessionParametersAddInfoEXT npParametersAddInfo(long struct) { return VkVideoDecodeH265SessionParametersAddInfoEXT.createSafe(memGetAddress(struct + VkVideoDecodeH265SessionParametersCreateInfoEXT.PPARAMETERSADDINFO)); }
+ @Nullable public static VkVideoDecodeH265SessionParametersAddInfoKHR npParametersAddInfo(long struct) { return VkVideoDecodeH265SessionParametersAddInfoKHR.createSafe(memGetAddress(struct + VkVideoDecodeH265SessionParametersCreateInfoKHR.PPARAMETERSADDINFO)); }
/** Unsafe version of {@link #sType(int) sType}. */
- public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265SessionParametersCreateInfoEXT.STYPE, value); }
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265SessionParametersCreateInfoKHR.STYPE, value); }
/** Unsafe version of {@link #pNext(long) pNext}. */
- public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH265SessionParametersCreateInfoEXT.PNEXT, value); }
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkVideoDecodeH265SessionParametersCreateInfoKHR.PNEXT, value); }
/** Unsafe version of {@link #maxStdVPSCount(int) maxStdVPSCount}. */
- public static void nmaxStdVPSCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265SessionParametersCreateInfoEXT.MAXSTDVPSCOUNT, value); }
+ public static void nmaxStdVPSCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265SessionParametersCreateInfoKHR.MAXSTDVPSCOUNT, value); }
/** Unsafe version of {@link #maxStdSPSCount(int) maxStdSPSCount}. */
- public static void nmaxStdSPSCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265SessionParametersCreateInfoEXT.MAXSTDSPSCOUNT, value); }
+ public static void nmaxStdSPSCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265SessionParametersCreateInfoKHR.MAXSTDSPSCOUNT, value); }
/** Unsafe version of {@link #maxStdPPSCount(int) maxStdPPSCount}. */
- public static void nmaxStdPPSCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265SessionParametersCreateInfoEXT.MAXSTDPPSCOUNT, value); }
- /** Unsafe version of {@link #pParametersAddInfo(VkVideoDecodeH265SessionParametersAddInfoEXT) pParametersAddInfo}. */
- public static void npParametersAddInfo(long struct, @Nullable VkVideoDecodeH265SessionParametersAddInfoEXT value) { memPutAddress(struct + VkVideoDecodeH265SessionParametersCreateInfoEXT.PPARAMETERSADDINFO, memAddressSafe(value)); }
+ public static void nmaxStdPPSCount(long struct, int value) { UNSAFE.putInt(null, struct + VkVideoDecodeH265SessionParametersCreateInfoKHR.MAXSTDPPSCOUNT, value); }
+ /** Unsafe version of {@link #pParametersAddInfo(VkVideoDecodeH265SessionParametersAddInfoKHR) pParametersAddInfo}. */
+ public static void npParametersAddInfo(long struct, @Nullable VkVideoDecodeH265SessionParametersAddInfoKHR value) { memPutAddress(struct + VkVideoDecodeH265SessionParametersCreateInfoKHR.PPARAMETERSADDINFO, memAddressSafe(value)); }
/**
* Validates pointer members that should not be {@code NULL}.
@@ -309,25 +303,25 @@ public static VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer calloc(int
* @param struct the struct to validate
*/
public static void validate(long struct) {
- long pParametersAddInfo = memGetAddress(struct + VkVideoDecodeH265SessionParametersCreateInfoEXT.PPARAMETERSADDINFO);
+ long pParametersAddInfo = memGetAddress(struct + VkVideoDecodeH265SessionParametersCreateInfoKHR.PPARAMETERSADDINFO);
if (pParametersAddInfo != NULL) {
- VkVideoDecodeH265SessionParametersAddInfoEXT.validate(pParametersAddInfo);
+ VkVideoDecodeH265SessionParametersAddInfoKHR.validate(pParametersAddInfo);
}
}
// -----------------------------------
- /** An array of {@link VkVideoDecodeH265SessionParametersCreateInfoEXT} structs. */
- public static class Buffer extends StructBuffer implements NativeResource {
+ /** An array of {@link VkVideoDecodeH265SessionParametersCreateInfoKHR} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
- private static final VkVideoDecodeH265SessionParametersCreateInfoEXT ELEMENT_FACTORY = VkVideoDecodeH265SessionParametersCreateInfoEXT.create(-1L);
+ private static final VkVideoDecodeH265SessionParametersCreateInfoKHR ELEMENT_FACTORY = VkVideoDecodeH265SessionParametersCreateInfoKHR.create(-1L);
/**
- * Creates a new {@code VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer} instance backed by the specified container.
+ * Creates a new {@code VkVideoDecodeH265SessionParametersCreateInfoKHR.Buffer} instance backed by the specified container.
*
* Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
* will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
- * by {@link VkVideoDecodeH265SessionParametersCreateInfoEXT#SIZEOF}, and its mark will be undefined.
+ * by {@link VkVideoDecodeH265SessionParametersCreateInfoKHR#SIZEOF}, and its mark will be undefined.
*
* The created buffer instance holds a strong reference to the container object.
*/
@@ -349,44 +343,44 @@ protected Buffer self() {
}
@Override
- protected VkVideoDecodeH265SessionParametersCreateInfoEXT getElementFactory() {
+ protected VkVideoDecodeH265SessionParametersCreateInfoKHR getElementFactory() {
return ELEMENT_FACTORY;
}
- /** @return the value of the {@link VkVideoDecodeH265SessionParametersCreateInfoEXT#sType} field. */
+ /** @return the value of the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR#sType} field. */
@NativeType("VkStructureType")
- public int sType() { return VkVideoDecodeH265SessionParametersCreateInfoEXT.nsType(address()); }
- /** @return the value of the {@link VkVideoDecodeH265SessionParametersCreateInfoEXT#pNext} field. */
+ public int sType() { return VkVideoDecodeH265SessionParametersCreateInfoKHR.nsType(address()); }
+ /** @return the value of the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR#pNext} field. */
@NativeType("void const *")
- public long pNext() { return VkVideoDecodeH265SessionParametersCreateInfoEXT.npNext(address()); }
- /** @return the value of the {@link VkVideoDecodeH265SessionParametersCreateInfoEXT#maxStdVPSCount} field. */
+ public long pNext() { return VkVideoDecodeH265SessionParametersCreateInfoKHR.npNext(address()); }
+ /** @return the value of the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR#maxStdVPSCount} field. */
@NativeType("uint32_t")
- public int maxStdVPSCount() { return VkVideoDecodeH265SessionParametersCreateInfoEXT.nmaxStdVPSCount(address()); }
- /** @return the value of the {@link VkVideoDecodeH265SessionParametersCreateInfoEXT#maxStdSPSCount} field. */
+ public int maxStdVPSCount() { return VkVideoDecodeH265SessionParametersCreateInfoKHR.nmaxStdVPSCount(address()); }
+ /** @return the value of the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR#maxStdSPSCount} field. */
@NativeType("uint32_t")
- public int maxStdSPSCount() { return VkVideoDecodeH265SessionParametersCreateInfoEXT.nmaxStdSPSCount(address()); }
- /** @return the value of the {@link VkVideoDecodeH265SessionParametersCreateInfoEXT#maxStdPPSCount} field. */
+ public int maxStdSPSCount() { return VkVideoDecodeH265SessionParametersCreateInfoKHR.nmaxStdSPSCount(address()); }
+ /** @return the value of the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR#maxStdPPSCount} field. */
@NativeType("uint32_t")
- public int maxStdPPSCount() { return VkVideoDecodeH265SessionParametersCreateInfoEXT.nmaxStdPPSCount(address()); }
- /** @return a {@link VkVideoDecodeH265SessionParametersAddInfoEXT} view of the struct pointed to by the {@link VkVideoDecodeH265SessionParametersCreateInfoEXT#pParametersAddInfo} field. */
+ public int maxStdPPSCount() { return VkVideoDecodeH265SessionParametersCreateInfoKHR.nmaxStdPPSCount(address()); }
+ /** @return a {@link VkVideoDecodeH265SessionParametersAddInfoKHR} view of the struct pointed to by the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR#pParametersAddInfo} field. */
@Nullable
- @NativeType("VkVideoDecodeH265SessionParametersAddInfoEXT const *")
- public VkVideoDecodeH265SessionParametersAddInfoEXT pParametersAddInfo() { return VkVideoDecodeH265SessionParametersCreateInfoEXT.npParametersAddInfo(address()); }
-
- /** Sets the specified value to the {@link VkVideoDecodeH265SessionParametersCreateInfoEXT#sType} field. */
- public VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH265SessionParametersCreateInfoEXT.nsType(address(), value); return this; }
- /** Sets the {@link EXTVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT} value to the {@link VkVideoDecodeH265SessionParametersCreateInfoEXT#sType} field. */
- public VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer sType$Default() { return sType(EXTVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT); }
- /** Sets the specified value to the {@link VkVideoDecodeH265SessionParametersCreateInfoEXT#pNext} field. */
- public VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer pNext(@NativeType("void const *") long value) { VkVideoDecodeH265SessionParametersCreateInfoEXT.npNext(address(), value); return this; }
- /** Sets the specified value to the {@link VkVideoDecodeH265SessionParametersCreateInfoEXT#maxStdVPSCount} field. */
- public VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer maxStdVPSCount(@NativeType("uint32_t") int value) { VkVideoDecodeH265SessionParametersCreateInfoEXT.nmaxStdVPSCount(address(), value); return this; }
- /** Sets the specified value to the {@link VkVideoDecodeH265SessionParametersCreateInfoEXT#maxStdSPSCount} field. */
- public VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer maxStdSPSCount(@NativeType("uint32_t") int value) { VkVideoDecodeH265SessionParametersCreateInfoEXT.nmaxStdSPSCount(address(), value); return this; }
- /** Sets the specified value to the {@link VkVideoDecodeH265SessionParametersCreateInfoEXT#maxStdPPSCount} field. */
- public VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer maxStdPPSCount(@NativeType("uint32_t") int value) { VkVideoDecodeH265SessionParametersCreateInfoEXT.nmaxStdPPSCount(address(), value); return this; }
- /** Sets the address of the specified {@link VkVideoDecodeH265SessionParametersAddInfoEXT} to the {@link VkVideoDecodeH265SessionParametersCreateInfoEXT#pParametersAddInfo} field. */
- public VkVideoDecodeH265SessionParametersCreateInfoEXT.Buffer pParametersAddInfo(@Nullable @NativeType("VkVideoDecodeH265SessionParametersAddInfoEXT const *") VkVideoDecodeH265SessionParametersAddInfoEXT value) { VkVideoDecodeH265SessionParametersCreateInfoEXT.npParametersAddInfo(address(), value); return this; }
+ @NativeType("VkVideoDecodeH265SessionParametersAddInfoKHR const *")
+ public VkVideoDecodeH265SessionParametersAddInfoKHR pParametersAddInfo() { return VkVideoDecodeH265SessionParametersCreateInfoKHR.npParametersAddInfo(address()); }
+
+ /** Sets the specified value to the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR#sType} field. */
+ public VkVideoDecodeH265SessionParametersCreateInfoKHR.Buffer sType(@NativeType("VkStructureType") int value) { VkVideoDecodeH265SessionParametersCreateInfoKHR.nsType(address(), value); return this; }
+ /** Sets the {@link KHRVideoDecodeH265#VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR} value to the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR#sType} field. */
+ public VkVideoDecodeH265SessionParametersCreateInfoKHR.Buffer sType$Default() { return sType(KHRVideoDecodeH265.VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR); }
+ /** Sets the specified value to the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR#pNext} field. */
+ public VkVideoDecodeH265SessionParametersCreateInfoKHR.Buffer pNext(@NativeType("void const *") long value) { VkVideoDecodeH265SessionParametersCreateInfoKHR.npNext(address(), value); return this; }
+ /** Sets the specified value to the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR#maxStdVPSCount} field. */
+ public VkVideoDecodeH265SessionParametersCreateInfoKHR.Buffer maxStdVPSCount(@NativeType("uint32_t") int value) { VkVideoDecodeH265SessionParametersCreateInfoKHR.nmaxStdVPSCount(address(), value); return this; }
+ /** Sets the specified value to the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR#maxStdSPSCount} field. */
+ public VkVideoDecodeH265SessionParametersCreateInfoKHR.Buffer maxStdSPSCount(@NativeType("uint32_t") int value) { VkVideoDecodeH265SessionParametersCreateInfoKHR.nmaxStdSPSCount(address(), value); return this; }
+ /** Sets the specified value to the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR#maxStdPPSCount} field. */
+ public VkVideoDecodeH265SessionParametersCreateInfoKHR.Buffer maxStdPPSCount(@NativeType("uint32_t") int value) { VkVideoDecodeH265SessionParametersCreateInfoKHR.nmaxStdPPSCount(address(), value); return this; }
+ /** Sets the address of the specified {@link VkVideoDecodeH265SessionParametersAddInfoKHR} to the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR#pParametersAddInfo} field. */
+ public VkVideoDecodeH265SessionParametersCreateInfoKHR.Buffer pParametersAddInfo(@Nullable @NativeType("VkVideoDecodeH265SessionParametersAddInfoKHR const *") VkVideoDecodeH265SessionParametersAddInfoKHR value) { VkVideoDecodeH265SessionParametersCreateInfoKHR.npParametersAddInfo(address(), value); return this; }
}
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeInfoKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeInfoKHR.java
index 2330151957..135e1e6547 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeInfoKHR.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoDecodeInfoKHR.java
@@ -17,19 +17,25 @@
import static org.lwjgl.system.MemoryStack.*;
/**
- * Structure specifying parameters of decoding a frame.
+ * Structure specifying video decode parameters.
*
- * Description
+ * Valid Usage
*
- * The coded size of the decode operation is specified in {@code codedExtent} of {@code dstPictureResource}.
- *
- * The coded offset of the decode operation is specified in {@code codedOffset} of {@code dstPictureResource}. The purpose of this field is interpreted based on the codec extension. When decoding content in H.264 field mode, {@code codedOffset} specifies the line or picture field’s offset within the image.
+ *
+ * - {@code srcBuffer} must have been created with {@link KHRVideoDecodeQueue#VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR} set
+ * - {@code srcBufferOffset} must be less than the size of {@code srcBuffer}
+ * - {@code srcBufferRange} must be less than or equal to the size of {@code srcBuffer} minus {@code srcBufferOffset}
+ * - If {@code pSetupReferenceSlot} is not {@code NULL}, then its {@code slotIndex} member must not be negative
+ * - If {@code pSetupReferenceSlot} is not {@code NULL}, then its {@code pPictureResource} must not be {@code NULL}
+ * - The {@code slotIndex} member of each element of {@code pReferenceSlots} must not be negative
+ * - The {@code pPictureResource} member of each element of {@code pReferenceSlots} must not be {@code NULL}
+ *
*
* Valid Usage (Implicit)
*
*
* - {@code sType} must be {@link KHRVideoDecodeQueue#VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR}
- * - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of {@link VkVideoDecodeH264PictureInfoEXT} or {@link VkVideoDecodeH265PictureInfoEXT}
+ * - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of {@link VkVideoDecodeH264PictureInfoKHR} or {@link VkVideoDecodeH265PictureInfoKHR}
* - The {@code sType} value of each struct in the {@code pNext} chain must be unique
* - {@code flags} must be 0
* - {@code srcBuffer} must be a valid {@code VkBuffer} handle
@@ -124,31 +130,31 @@ public VkVideoDecodeInfoKHR(ByteBuffer container) {
/** the type of this structure. */
@NativeType("VkStructureType")
public int sType() { return nsType(address()); }
- /** {@code NULL} or a pointer to a structure extending this structure. All the codec specific structures related to each frame(picture parameters, quantization matrix, etc.) must be chained here and pass to decode session with the function call {@link KHRVideoDecodeQueue#vkCmdDecodeVideoKHR CmdDecodeVideoKHR}. */
+ /** {@code NULL} or a pointer to a structure extending this structure. */
@NativeType("void const *")
public long pNext() { return npNext(address()); }
/** reserved for future use. */
@NativeType("VkVideoDecodeFlagsKHR")
public int flags() { return nflags(address()); }
- /** the source buffer that holds the encoded bitstream. */
+ /** the source video bitstream buffer to read the encoded bitstream from. */
@NativeType("VkBuffer")
public long srcBuffer() { return nsrcBuffer(address()); }
- /** the buffer offset where the valid encoded bitstream starts in srcBuffer. It must meet the alignment requirement {@code minBitstreamBufferOffsetAlignment} within {@link VkVideoCapabilitiesKHR} queried with the {@link KHRVideoQueue#vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR} function. */
+ /** the starting offset in bytes from the start of {@code srcBuffer} to read the encoded bitstream from. */
@NativeType("VkDeviceSize")
public long srcBufferOffset() { return nsrcBufferOffset(address()); }
- /** the size of the srcBuffer with valid encoded bitstream, starting from {@code srcBufferOffset}. It must meet the alignment requirement {@code minBitstreamBufferSizeAlignment} within {@link VkVideoCapabilitiesKHR} queried with the {@link KHRVideoQueue#vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR} function. */
+ /** the size in bytes of the encoded bitstream to decode from {@code srcBuffer}, starting from {@code srcBufferOffset}. */
@NativeType("VkDeviceSize")
public long srcBufferRange() { return nsrcBufferRange(address()); }
- /** the destination Decoded Output Picture Resource. */
+ /** the video picture resource to use as the decode output picture. */
public VkVideoPictureResourceInfoKHR dstPictureResource() { return ndstPictureResource(address()); }
- /** {@code NULL} or a pointer to a {@link VkVideoReferenceSlotInfoKHR} structure used for generating a DPB reference slot and Picture Resource. {@code pSetupReferenceSlot→slotIndex} specifies the slot index number to use as a target for producing the DPB data. {@code slotIndex} must reference a valid entry as specified in {@link VkVideoBeginCodingInfoKHR} via the {@code pReferenceSlots} within the {@link KHRVideoQueue#vkCmdBeginVideoCodingKHR CmdBeginVideoCodingKHR} command that established the Vulkan Video Decode Context for this command. */
+ /** {@code NULL} or a pointer to a {@link VkVideoReferenceSlotInfoKHR} structure describing the DPB slot to activate and the video picture resource to use as the reconstructed picture to activate the DPB slot with. */
@Nullable
@NativeType("VkVideoReferenceSlotInfoKHR const *")
public VkVideoReferenceSlotInfoKHR pSetupReferenceSlot() { return npSetupReferenceSlot(address()); }
- /** the number of the DPB Reference Pictures that will be used when this decoding operation is executing. */
+ /** the number of elements in the {@code pReferenceSlots} array. */
@NativeType("uint32_t")
public int referenceSlotCount() { return nreferenceSlotCount(address()); }
- /** a pointer to an array of {@link VkVideoReferenceSlotInfoKHR} structures specifying the DPB Reference pictures that will be used when this decoding operation is executing. */
+ /** a pointer to an array of {@link VkVideoReferenceSlotInfoKHR} structures describing the DPB slots and corresponding reference picture resources to use in this video decode operation (the set of active reference pictures). */
@Nullable
@NativeType("VkVideoReferenceSlotInfoKHR const *")
public VkVideoReferenceSlotInfoKHR.Buffer pReferenceSlots() { return npReferenceSlots(address()); }
@@ -159,10 +165,10 @@ public VkVideoDecodeInfoKHR(ByteBuffer container) {
public VkVideoDecodeInfoKHR sType$Default() { return sType(KHRVideoDecodeQueue.VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR); }
/** Sets the specified value to the {@link #pNext} field. */
public VkVideoDecodeInfoKHR pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
- /** Prepends the specified {@link VkVideoDecodeH264PictureInfoEXT} value to the {@code pNext} chain. */
- public VkVideoDecodeInfoKHR pNext(VkVideoDecodeH264PictureInfoEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
- /** Prepends the specified {@link VkVideoDecodeH265PictureInfoEXT} value to the {@code pNext} chain. */
- public VkVideoDecodeInfoKHR pNext(VkVideoDecodeH265PictureInfoEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkVideoDecodeH264PictureInfoKHR} value to the {@code pNext} chain. */
+ public VkVideoDecodeInfoKHR pNext(VkVideoDecodeH264PictureInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkVideoDecodeH265PictureInfoKHR} value to the {@code pNext} chain. */
+ public VkVideoDecodeInfoKHR pNext(VkVideoDecodeH265PictureInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Sets the specified value to the {@link #flags} field. */
public VkVideoDecodeInfoKHR flags(@NativeType("VkVideoDecodeFlagsKHR") int value) { nflags(address(), value); return this; }
/** Sets the specified value to the {@link #srcBuffer} field. */
@@ -459,10 +465,10 @@ protected VkVideoDecodeInfoKHR getElementFactory() {
public VkVideoDecodeInfoKHR.Buffer sType$Default() { return sType(KHRVideoDecodeQueue.VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR); }
/** Sets the specified value to the {@link VkVideoDecodeInfoKHR#pNext} field. */
public VkVideoDecodeInfoKHR.Buffer pNext(@NativeType("void const *") long value) { VkVideoDecodeInfoKHR.npNext(address(), value); return this; }
- /** Prepends the specified {@link VkVideoDecodeH264PictureInfoEXT} value to the {@code pNext} chain. */
- public VkVideoDecodeInfoKHR.Buffer pNext(VkVideoDecodeH264PictureInfoEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
- /** Prepends the specified {@link VkVideoDecodeH265PictureInfoEXT} value to the {@code pNext} chain. */
- public VkVideoDecodeInfoKHR.Buffer pNext(VkVideoDecodeH265PictureInfoEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkVideoDecodeH264PictureInfoKHR} value to the {@code pNext} chain. */
+ public VkVideoDecodeInfoKHR.Buffer pNext(VkVideoDecodeH264PictureInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkVideoDecodeH265PictureInfoKHR} value to the {@code pNext} chain. */
+ public VkVideoDecodeInfoKHR.Buffer pNext(VkVideoDecodeH265PictureInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Sets the specified value to the {@link VkVideoDecodeInfoKHR#flags} field. */
public VkVideoDecodeInfoKHR.Buffer flags(@NativeType("VkVideoDecodeFlagsKHR") int value) { VkVideoDecodeInfoKHR.nflags(address(), value); return this; }
/** Sets the specified value to the {@link VkVideoDecodeInfoKHR#srcBuffer} field. */
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoEncodeInfoKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoEncodeInfoKHR.java
index 3a0cdcf440..65c70f1e6b 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoEncodeInfoKHR.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoEncodeInfoKHR.java
@@ -28,7 +28,7 @@
* Valid Usage
*
*
- * - The bound video session object must not be in uninitialized state
+ * - The bound video session must not be in uninitialized state at the time the command is executed on the device
*
*
* Valid Usage (Implicit)
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoEncodeRateControlInfoKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoEncodeRateControlInfoKHR.java
index a7afe49b58..009659aef0 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoEncodeRateControlInfoKHR.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoEncodeRateControlInfoKHR.java
@@ -23,7 +23,7 @@
*
* Including this structure in the {@code pNext} chain of {@link VkVideoCodingControlInfoKHR} and including {@link KHRVideoEncodeQueue#VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR} in {@link VkVideoCodingControlInfoKHR}{@code ::flags} will define stream rate control settings for video encoding.
*
- * Additional structures providing codec-specific rate control parameters may need to be included in the {@code pNext} chain of {@link VkVideoCodingControlInfoKHR} depending on the codec profile the bound video session was created with and the parameters specified in {@link VkVideoEncodeRateControlInfoKHR} (see Video Session Control).
+ * Additional structures providing codec-specific rate control parameters may need to be included in the {@code pNext} chain of {@link VkVideoCodingControlInfoKHR} depending on the codec profile the bound video session was created with and the parameters specified in {@link VkVideoEncodeRateControlInfoKHR} (see Video Coding Control).
*
* To ensure that the video session is properly initialized with stream-level rate control settings, the application must call {@link KHRVideoQueue#vkCmdControlVideoCodingKHR CmdControlVideoCodingKHR} with stream-level rate control settings at least once in execution order before the first {@link KHRVideoEncodeQueue#vkCmdEncodeVideoKHR CmdEncodeVideoKHR} command that is executed after video session reset. If not provided, default implementation-specific stream rate control settings will be used.
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoEndCodingInfoKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoEndCodingInfoKHR.java
index f8a4ad2662..d64c6a140d 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoEndCodingInfoKHR.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoEndCodingInfoKHR.java
@@ -16,7 +16,7 @@
import static org.lwjgl.system.MemoryStack.*;
/**
- * Structure specifying the end of decode encode commands sequence.
+ * Structure specifying video coding scope end information.
*
* Valid Usage (Implicit)
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoPictureResourceInfoKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoPictureResourceInfoKHR.java
index 4288f6ce58..5ed223e3bf 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoPictureResourceInfoKHR.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoPictureResourceInfoKHR.java
@@ -16,7 +16,25 @@
import static org.lwjgl.system.MemoryStack.*;
/**
- * Structure specifying the picture resources.
+ * Structure specifying the parameters of a video picture resource.
+ *
+ * Description
+ *
+ * The image subresource referred to by such a structure is defined as the image array layer index specified in {@code baseArrayLayer} relative to the image subresource range the image view specified in {@code imageViewBinding} was created with.
+ *
+ * The meaning of the {@code codedOffset} and {@code codedExtent} depends on the command and context the video picture resource is used in, as well as on the used video profile and corresponding codec-specific semantics, as described later.
+ *
+ * A video picture resource is uniquely defined by the image subresource referred to by an instance of this structure, together with the {@code codedOffset} and {@code codedExtent} members that identify the image subregion within the image subresource referenced corresponding to the video picture resource according to the particular codec-specific semantics.
+ *
+ * Accesses to image data within a video picture resource happen at the granularity indicated by {@link VkVideoCapabilitiesKHR}{@code ::pictureAccessGranularity}, as returned by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR} for the used video profile. As a result, given an effective image subregion corresponding to a video picture resource, the actual image subregion accessed may be larger than that as it may include additional padding texels due to the picture access granularity. Any writes performed by video coding operations to such padding texels will result in undefined texel values.
+ *
+ * Two video picture resources match if they refer to the same image subresource and they specify identical {@code codedOffset} and {@code codedExtent} values.
+ *
+ * Valid Usage
+ *
+ *
+ * - {@code baseArrayLayer} must be less than the {@link VkImageViewCreateInfo}{@code ::subresourceRange.layerCount} specified when the image view {@code imageViewBinding} was created
+ *
*
* Valid Usage (Implicit)
*
@@ -99,14 +117,14 @@ public VkVideoPictureResourceInfoKHR(ByteBuffer container) {
/** {@code NULL} or a pointer to a structure extending this structure. */
@NativeType("void const *")
public long pNext() { return npNext(address()); }
- /** the offset to be used for the picture resource. */
+ /** the offset in texels of the image subregion to use. */
public VkOffset2D codedOffset() { return ncodedOffset(address()); }
- /** the extent to be used for the picture resource. */
+ /** the size in pixels of the coded image data. */
public VkExtent2D codedExtent() { return ncodedExtent(address()); }
- /** the first array layer to be accessed for the Decode or Encode Operations. */
+ /** the array layer of the image view specified in {@code imageViewBinding} to use as the video picture resource. */
@NativeType("uint32_t")
public int baseArrayLayer() { return nbaseArrayLayer(address()); }
- /** a {@code VkImageView} image view representing this picture resource. */
+ /** an image view representing the video picture resource. */
@NativeType("VkImageView")
public long imageViewBinding() { return nimageViewBinding(address()); }
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoProfileInfoKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoProfileInfoKHR.java
index ee60e8b4b5..68b887de76 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoProfileInfoKHR.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoProfileInfoKHR.java
@@ -16,17 +16,21 @@
import static org.lwjgl.system.MemoryStack.*;
/**
- * Structure specifying the codec video profile.
+ * Structure specifying a video profile.
*
* Description
*
- * When a {@link VkVideoProfileInfoKHR} structure is specified through the {@code pProfiles} member of an {@link VkVideoProfileListInfoKHR} structure in the {@code pNext} chain of the input parameter of a query command such as {@link KHRVideoQueue#vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR}, {@link KHRVideoQueue#vkGetPhysicalDeviceVideoFormatPropertiesKHR GetPhysicalDeviceVideoFormatPropertiesKHR}, or {@link VK11#vkGetPhysicalDeviceImageFormatProperties2 GetPhysicalDeviceImageFormatProperties2}, the following error codes indicate specific causes of the failure of the query operation:
+ * Video profiles are provided as input to video capability queries such as {@link KHRVideoQueue#vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR} or {@link KHRVideoQueue#vkGetPhysicalDeviceVideoFormatPropertiesKHR GetPhysicalDeviceVideoFormatPropertiesKHR}, as well as when creating resources to be used by video coding operations such as images, buffers, query pools, and video sessions.
+ *
+ * The full description of a video profile is specified by an instance of this structure, and the codec-specific and auxiliary structures provided in its {@code pNext} chain.
+ *
+ * When this structure is specified as an input parameter to {@link KHRVideoQueue#vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR}, or through the {@code pProfiles} member of an {@link VkVideoProfileListInfoKHR} structure in the {@code pNext} chain of the input parameter of a query command such as {@link KHRVideoQueue#vkGetPhysicalDeviceVideoFormatPropertiesKHR GetPhysicalDeviceVideoFormatPropertiesKHR} or {@link VK11#vkGetPhysicalDeviceImageFormatProperties2 GetPhysicalDeviceImageFormatProperties2}, the following error codes indicate specific causes of the failure of the query operation:
*
*
- * - {@link KHRVideoQueue#VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR} The requested video picture layout (e.g. through the {@code pictureLayout} member of a {@link VkVideoDecodeH264ProfileInfoEXT} structure included in the {@code pNext} chain of {@link VkVideoProfileInfoKHR}) is not supported.
- * - {@link KHRVideoQueue#VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR} A video profile operation specified by {@code videoCodecOperation} is not supported.
- * - {@link KHRVideoQueue#VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR} Format parameters specified by {@code chromaSubsampling}, {@code lumaBitDepth}, or {@code chromaBitDepth} are not supported.
- * - {@link KHRVideoQueue#VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR} Codec-specific parameters corresponding to the {@code videoCodecOperation} are not provided through the {@code pNext} chain of {@link VkVideoProfileInfoKHR}, or the specified parameters are not supported.
+ * - {@link KHRVideoQueue#VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR} indicates that the requested video picture layout (e.g. through the {@code pictureLayout} member of a {@link VkVideoDecodeH264ProfileInfoKHR} structure included in the {@code pNext} chain of {@link VkVideoProfileInfoKHR}) is not supported.
+ * - {@link KHRVideoQueue#VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR} indicates that a video profile operation specified by {@code videoCodecOperation} is not supported.
+ * - {@link KHRVideoQueue#VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR} indicates that video format parameters specified by {@code chromaSubsampling}, {@code lumaBitDepth}, or {@code chromaBitDepth} are not supported.
+ * - {@link KHRVideoQueue#VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR} indicates that the codec-specific parameters corresponding to the video codec operation are not supported.
*
*
* Valid Usage
@@ -35,6 +39,10 @@
* - {@code chromaSubsampling} must have a single bit set
* - {@code lumaBitDepth} must have a single bit set
* - If {@code chromaSubsampling} is not {@link KHRVideoQueue#VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR}, then {@code chromaBitDepth} must have a single bit set
+ * - If {@code videoCodecOperation} is {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR}, then the {@code pNext} chain must include a {@link VkVideoDecodeH264ProfileInfoKHR} structure
+ * - If {@code videoCodecOperation} is {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then the {@code pNext} chain must include a {@link VkVideoDecodeH265ProfileInfoKHR} structure
+ * - If {@code videoCodecOperation} is {@link EXTVideoEncodeH264#VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT}, then the {@code pNext} chain must include a {@link VkVideoEncodeH264ProfileInfoEXT} structure
+ * - If {@code videoCodecOperation} is {@link EXTVideoEncodeH265#VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT}, then the {@code pNext} chain must include a {@link VkVideoEncodeH265ProfileInfoEXT} structure
*
*
* Valid Usage (Implicit)
@@ -141,10 +149,10 @@ public VkVideoProfileInfoKHR(ByteBuffer container) {
public VkVideoProfileInfoKHR sType$Default() { return sType(KHRVideoQueue.VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR); }
/** Sets the specified value to the {@link #pNext} field. */
public VkVideoProfileInfoKHR pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
- /** Prepends the specified {@link VkVideoDecodeH264ProfileInfoEXT} value to the {@code pNext} chain. */
- public VkVideoProfileInfoKHR pNext(VkVideoDecodeH264ProfileInfoEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
- /** Prepends the specified {@link VkVideoDecodeH265ProfileInfoEXT} value to the {@code pNext} chain. */
- public VkVideoProfileInfoKHR pNext(VkVideoDecodeH265ProfileInfoEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkVideoDecodeH264ProfileInfoKHR} value to the {@code pNext} chain. */
+ public VkVideoProfileInfoKHR pNext(VkVideoDecodeH264ProfileInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkVideoDecodeH265ProfileInfoKHR} value to the {@code pNext} chain. */
+ public VkVideoProfileInfoKHR pNext(VkVideoDecodeH265ProfileInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkVideoDecodeUsageInfoKHR} value to the {@code pNext} chain. */
public VkVideoProfileInfoKHR pNext(VkVideoDecodeUsageInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkVideoEncodeH264ProfileInfoEXT} value to the {@code pNext} chain. */
@@ -395,10 +403,10 @@ protected VkVideoProfileInfoKHR getElementFactory() {
public VkVideoProfileInfoKHR.Buffer sType$Default() { return sType(KHRVideoQueue.VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR); }
/** Sets the specified value to the {@link VkVideoProfileInfoKHR#pNext} field. */
public VkVideoProfileInfoKHR.Buffer pNext(@NativeType("void const *") long value) { VkVideoProfileInfoKHR.npNext(address(), value); return this; }
- /** Prepends the specified {@link VkVideoDecodeH264ProfileInfoEXT} value to the {@code pNext} chain. */
- public VkVideoProfileInfoKHR.Buffer pNext(VkVideoDecodeH264ProfileInfoEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
- /** Prepends the specified {@link VkVideoDecodeH265ProfileInfoEXT} value to the {@code pNext} chain. */
- public VkVideoProfileInfoKHR.Buffer pNext(VkVideoDecodeH265ProfileInfoEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkVideoDecodeH264ProfileInfoKHR} value to the {@code pNext} chain. */
+ public VkVideoProfileInfoKHR.Buffer pNext(VkVideoDecodeH264ProfileInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkVideoDecodeH265ProfileInfoKHR} value to the {@code pNext} chain. */
+ public VkVideoProfileInfoKHR.Buffer pNext(VkVideoDecodeH265ProfileInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkVideoDecodeUsageInfoKHR} value to the {@code pNext} chain. */
public VkVideoProfileInfoKHR.Buffer pNext(VkVideoDecodeUsageInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Prepends the specified {@link VkVideoEncodeH264ProfileInfoEXT} value to the {@code pNext} chain. */
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoProfileListInfoKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoProfileListInfoKHR.java
index bc161f0c66..571485a847 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoProfileListInfoKHR.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoProfileListInfoKHR.java
@@ -17,16 +17,21 @@
import static org.lwjgl.system.MemoryStack.*;
/**
- * Structure enumerating the video profiles.
+ * Structure specifying one or more video profiles used in conjunction.
*
* Description
*
- * Video transcoding is an example of a use case that necessitates numerous profiles. When the application provides one or more video decode and encode profiles in the list of profiles, the implementation ensures that the video formats and parameters reported produce video resources suitable for the transcoding use cases without the need for manual transformation.
+ * Note:
+ *
+ *
Video transcoding is an example of a use case that necessitates the specification of multiple profiles in various contexts.
+ *
+ *
+ * When the application provides a video decode profile and one or more video encode profiles in the profile list, the implementation ensures that any capabilitities returned or resources created are suitable for the video transcoding use cases without the need for manual data transformations.
*
* Valid Usage
*
*
- * - If the {@code pProfiles} list contains more than one {@link VkVideoProfileInfoKHR} entry, then it must not contain more than one entry whose {@code videoCodecOperation} member specifies a decode operation
+ * - {@code pProfiles} must not contain more than one element whose {@code videoCodecOperation} member specifies a decode operation
*
*
* Valid Usage (Implicit)
@@ -101,10 +106,10 @@ public VkVideoProfileListInfoKHR(ByteBuffer container) {
/** {@code NULL} or a pointer to a structure extending this structure. */
@NativeType("void const *")
public long pNext() { return npNext(address()); }
- /** an integer which holds the number of video profiles included in {@code pProfiles}. */
+ /** the number of elements in the {@code pProfiles} array. */
@NativeType("uint32_t")
public int profileCount() { return nprofileCount(address()); }
- /** a pointer to an array of {@link VkVideoProfileInfoKHR} structures. Each {@link VkVideoProfileInfoKHR} structure must chain the corresponding codec-operation specific extension video profile structure. */
+ /** a pointer to an array of {@link VkVideoProfileInfoKHR} structures. */
@Nullable
@NativeType("VkVideoProfileInfoKHR const *")
public VkVideoProfileInfoKHR.Buffer pProfiles() { return npProfiles(address()); }
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoReferenceSlotInfoKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoReferenceSlotInfoKHR.java
index 3b595d0686..b3e8e6e634 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoReferenceSlotInfoKHR.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoReferenceSlotInfoKHR.java
@@ -16,13 +16,13 @@
import static org.lwjgl.system.MemoryStack.*;
/**
- * Structure specifying the reference picture slot.
+ * Structure specifying information about a reference picture slot.
*
* Valid Usage (Implicit)
*
*
* - {@code sType} must be {@link KHRVideoQueue#VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR}
- * - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of {@link VkVideoDecodeH264DpbSlotInfoEXT} or {@link VkVideoDecodeH265DpbSlotInfoEXT}
+ * - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of {@link VkVideoDecodeH264DpbSlotInfoKHR} or {@link VkVideoDecodeH265DpbSlotInfoKHR}
* - The {@code sType} value of each struct in the {@code pNext} chain must be unique
* - If {@code pPictureResource} is not {@code NULL}, {@code pPictureResource} must be a valid pointer to a valid {@link VkVideoPictureResourceInfoKHR} structure
*
@@ -92,10 +92,10 @@ public VkVideoReferenceSlotInfoKHR(ByteBuffer container) {
/** {@code NULL} or a pointer to a structure extending this structure. */
@NativeType("void const *")
public long pNext() { return npNext(address()); }
- /** the unique reference slot index used for the encode or decode operation. */
+ /** the index of the DPB slot or a negative integer value. */
@NativeType("int32_t")
public int slotIndex() { return nslotIndex(address()); }
- /** a pointer to a {@link VkVideoPictureResourceInfoKHR} structure describing the picture resource bound to this slot index. */
+ /** {@code NULL} or a pointer to a {@link VkVideoPictureResourceInfoKHR} structure describing the video picture resource associated with the DPB slot index specified by {@code slotIndex}. */
@Nullable
@NativeType("VkVideoPictureResourceInfoKHR const *")
public VkVideoPictureResourceInfoKHR pPictureResource() { return npPictureResource(address()); }
@@ -106,10 +106,10 @@ public VkVideoReferenceSlotInfoKHR(ByteBuffer container) {
public VkVideoReferenceSlotInfoKHR sType$Default() { return sType(KHRVideoQueue.VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR); }
/** Sets the specified value to the {@link #pNext} field. */
public VkVideoReferenceSlotInfoKHR pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
- /** Prepends the specified {@link VkVideoDecodeH264DpbSlotInfoEXT} value to the {@code pNext} chain. */
- public VkVideoReferenceSlotInfoKHR pNext(VkVideoDecodeH264DpbSlotInfoEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
- /** Prepends the specified {@link VkVideoDecodeH265DpbSlotInfoEXT} value to the {@code pNext} chain. */
- public VkVideoReferenceSlotInfoKHR pNext(VkVideoDecodeH265DpbSlotInfoEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkVideoDecodeH264DpbSlotInfoKHR} value to the {@code pNext} chain. */
+ public VkVideoReferenceSlotInfoKHR pNext(VkVideoDecodeH264DpbSlotInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkVideoDecodeH265DpbSlotInfoKHR} value to the {@code pNext} chain. */
+ public VkVideoReferenceSlotInfoKHR pNext(VkVideoDecodeH265DpbSlotInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Sets the specified value to the {@link #slotIndex} field. */
public VkVideoReferenceSlotInfoKHR slotIndex(@NativeType("int32_t") int value) { nslotIndex(address(), value); return this; }
/** Sets the address of the specified {@link VkVideoPictureResourceInfoKHR} to the {@link #pPictureResource} field. */
@@ -331,10 +331,10 @@ protected VkVideoReferenceSlotInfoKHR getElementFactory() {
public VkVideoReferenceSlotInfoKHR.Buffer sType$Default() { return sType(KHRVideoQueue.VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR); }
/** Sets the specified value to the {@link VkVideoReferenceSlotInfoKHR#pNext} field. */
public VkVideoReferenceSlotInfoKHR.Buffer pNext(@NativeType("void const *") long value) { VkVideoReferenceSlotInfoKHR.npNext(address(), value); return this; }
- /** Prepends the specified {@link VkVideoDecodeH264DpbSlotInfoEXT} value to the {@code pNext} chain. */
- public VkVideoReferenceSlotInfoKHR.Buffer pNext(VkVideoDecodeH264DpbSlotInfoEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
- /** Prepends the specified {@link VkVideoDecodeH265DpbSlotInfoEXT} value to the {@code pNext} chain. */
- public VkVideoReferenceSlotInfoKHR.Buffer pNext(VkVideoDecodeH265DpbSlotInfoEXT value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkVideoDecodeH264DpbSlotInfoKHR} value to the {@code pNext} chain. */
+ public VkVideoReferenceSlotInfoKHR.Buffer pNext(VkVideoDecodeH264DpbSlotInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
+ /** Prepends the specified {@link VkVideoDecodeH265DpbSlotInfoKHR} value to the {@code pNext} chain. */
+ public VkVideoReferenceSlotInfoKHR.Buffer pNext(VkVideoDecodeH265DpbSlotInfoKHR value) { return this.pNext(value.pNext(this.pNext()).address()); }
/** Sets the specified value to the {@link VkVideoReferenceSlotInfoKHR#slotIndex} field. */
public VkVideoReferenceSlotInfoKHR.Buffer slotIndex(@NativeType("int32_t") int value) { VkVideoReferenceSlotInfoKHR.nslotIndex(address(), value); return this; }
/** Sets the address of the specified {@link VkVideoPictureResourceInfoKHR} to the {@link VkVideoReferenceSlotInfoKHR#pPictureResource} field. */
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoSessionCreateInfoKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoSessionCreateInfoKHR.java
index 57f6d58ab9..112fad7183 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoSessionCreateInfoKHR.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoSessionCreateInfoKHR.java
@@ -17,22 +17,23 @@
import static org.lwjgl.system.MemoryStack.*;
/**
- * Structure specifying parameters of a newly created video decode session.
+ * Structure specifying parameters of a newly created video session.
*
* Valid Usage
*
*
- * - {@code pVideoProfile} must be a pointer to a valid {@link VkVideoProfileInfoKHR} structure whose {@code pNext} chain must include a valid codec-specific profile structure
- * - If Reference Pictures are required for use with the created video session, the {@code maxDpbSlots} must be set to a value bigger than 0
- * - {@code maxDpbSlots} cannot exceed the implementation reported {@link VkVideoCapabilitiesKHR}{@code ::maxDpbSlots}
- * - If Reference Pictures are required for use with the created video session, the {@code maxActiveReferencePictures} must be set to a value bigger than 0
- * - {@code maxActiveReferencePictures} cannot exceed the implementation reported {@link VkVideoCapabilitiesKHR}{@code ::maxActiveReferencePictures}
- * - {@code maxActiveReferencePictures} cannot exceed the {@code maxDpbSlots}
- * - {@code maxCodedExtent} cannot be smaller than {@link VkVideoCapabilitiesKHR}{@code ::minExtent} and bigger than {@link VkVideoCapabilitiesKHR}{@code ::maxExtent}
- * - If the {@code videoCodecOperation} member of {@code pVideoProfile} specifies a decode operation then {@code referencePicturesFormat} must be one of the supported decode DPB formats as reported by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoFormatPropertiesKHR GetPhysicalDeviceVideoFormatPropertiesKHR} in the {@code format} member of {@link VkVideoFormatPropertiesKHR} when called with the {@code imageUsage} member of its {@code pVideoFormatInfo} parameter containing {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR}, and with a {@link VkVideoProfileListInfoKHR} structure chained to its {@code pVideoFormatInfo} parameter whose {@code pProfiles} member contains an entry matching {@code pVideoProfile}
- * - If the {@code videoCodecOperation} member of {@code pVideoProfile} specifies an encode operation then {@code referencePicturesFormat} must be one of the supported encode DPB formats as reported by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoFormatPropertiesKHR GetPhysicalDeviceVideoFormatPropertiesKHR} in the {@code format} member of {@link VkVideoFormatPropertiesKHR} when called with the {@code imageUsage} member of its {@code pVideoFormatInfo} parameter containing {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR}, and with a {@link VkVideoProfileListInfoKHR} structure chained to its {@code pVideoFormatInfo} parameter whose {@code pProfiles} member contains an entry matching {@code pVideoProfile}
- * - If the {@code videoCodecOperation} member of {@code pVideoProfile} specifies a decode operation then {@code pictureFormat} must be one of the supported decode output formats as reported by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoFormatPropertiesKHR GetPhysicalDeviceVideoFormatPropertiesKHR} in the {@code format} member of {@link VkVideoFormatPropertiesKHR} when called with the {@code imageUsage} member of its {@code pVideoFormatInfo} parameter containing {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR}, and with a {@link VkVideoProfileListInfoKHR} structure chained to its {@code pVideoFormatInfo} parameter whose {@code pProfiles} member contains an entry matching {@code pVideoProfile}
- * - If the {@code videoCodecOperation} member of {@code pVideoProfile} specifies an encode operation then {@code pictureFormat} must be one of the supported encode input formats as reported by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoFormatPropertiesKHR GetPhysicalDeviceVideoFormatPropertiesKHR} in the {@code format} member of {@link VkVideoFormatPropertiesKHR} when called with the {@code imageUsage} member of its {@code pVideoFormatInfo} parameter containing {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR}, and with a {@link VkVideoProfileListInfoKHR} structure chained to its {@code pVideoFormatInfo} parameter whose {@code pProfiles} member contains an entry matching {@code pVideoProfile}
+ * - If the {@code protectedMemory} feature is not enabled or if {@link VkVideoCapabilitiesKHR}{@code ::flags} does not include {@link KHRVideoQueue#VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR}, as returned by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR} for the video profile specified by {@code pVideoProfile}, then {@code flags} must not include {@link KHRVideoQueue#VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR}
+ * - {@code pVideoProfile} must be a supported video profile
+ * - {@code maxDpbSlots} must be less than or equal to {@link VkVideoCapabilitiesKHR}{@code ::maxDpbSlots}, as returned by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR} for the video profile specified by {@code pVideoProfile}
+ * - {@code maxActiveReferencePictures} must be less than or equal to {@link VkVideoCapabilitiesKHR}{@code ::maxActiveReferencePictures}, as returned by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR} for the video profile specified by {@code pVideoProfile}
+ * - If either {@code maxDpbSlots} or {@code maxActiveReferencePictures} is 0, then both must be 0
+ * - {@code maxCodedExtent} must be between {@link VkVideoCapabilitiesKHR}{@code ::minCodedExtent} and {@link VkVideoCapabilitiesKHR}{@code ::maxCodedExtent}, inclusive, as returned by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR} for the video profile specified by {@code pVideoProfile}
+ * - If {@code pVideoProfile→videoCodecOperation} specifies a decode operation and {@code maxActiveReferencePictures} is greater than 0, then {@code referencePictureFormat} must be one of the supported decode DPB formats, as returned by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoFormatPropertiesKHR GetPhysicalDeviceVideoFormatPropertiesKHR} in {@link VkVideoFormatPropertiesKHR}{@code ::format} when called with the {@code imageUsage} member of its {@code pVideoFormatInfo} parameter containing {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR}, and with a {@link VkVideoProfileListInfoKHR} structure specified in the {@code pNext} chain of its {@code pVideoFormatInfo} parameter whose {@code pProfiles} member contains an element matching {@code pVideoProfile}
+ * - If {@code pVideoProfile→videoCodecOperation} specifies an encode operation and {@code maxActiveReferencePictures} is greater than 0, then {@code referencePictureFormat} must be one of the supported decode DPB formats, as returned by then {@code referencePictureFormat} must be one of the supported encode DPB formats, as returned by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoFormatPropertiesKHR GetPhysicalDeviceVideoFormatPropertiesKHR} in {@link VkVideoFormatPropertiesKHR}{@code ::format} when called with the {@code imageUsage} member of its {@code pVideoFormatInfo} parameter containing {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR}, and with a {@link VkVideoProfileListInfoKHR} structure specified in the {@code pNext} chain of its {@code pVideoFormatInfo} parameter whose {@code pProfiles} member contains an element matching {@code pVideoProfile}
+ * - If {@code pVideoProfile→videoCodecOperation} specifies a decode operation, then {@code pictureFormat} must be one of the supported decode output formats, as returned by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoFormatPropertiesKHR GetPhysicalDeviceVideoFormatPropertiesKHR} in {@link VkVideoFormatPropertiesKHR}{@code ::format} when called with the {@code imageUsage} member of its {@code pVideoFormatInfo} parameter containing {@link KHRVideoDecodeQueue#VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR}, and with a {@link VkVideoProfileListInfoKHR} structure specified in the {@code pNext} chain of its {@code pVideoFormatInfo} parameter whose {@code pProfiles} member contains an element matching {@code pVideoProfile}
+ * - If {@code pVideoProfile→videoCodecOperation} specifies an encode operation, then {@code pictureFormat} must be one of the supported encode input formats, as returned by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoFormatPropertiesKHR GetPhysicalDeviceVideoFormatPropertiesKHR} in {@link VkVideoFormatPropertiesKHR}{@code ::format} when called with the {@code imageUsage} member of its {@code pVideoFormatInfo} parameter containing {@link KHRVideoEncodeQueue#VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR}, and with a {@link VkVideoProfileListInfoKHR} structure specified in the {@code pNext} chain of its {@code pVideoFormatInfo} parameter whose {@code pProfiles} member contains an element matching {@code pVideoProfile}
+ * - {@code pStdHeaderVersion→extensionName} must match {@link VkVideoCapabilitiesKHR}{@code ::stdHeaderVersion.extensionName}, as returned by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR} for the video profile specified by {@code pVideoProfile}
+ * - {@code pStdHeaderVersion→specVersion} must be less than or equal to {@link VkVideoCapabilitiesKHR}{@code ::stdHeaderVersion.specVersion}, as returned by {@link KHRVideoQueue#vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR} for the video profile specified by {@code pVideoProfile}
*
*
* Valid Usage (Implicit)
@@ -62,7 +63,7 @@
* {@link VkVideoProfileInfoKHR VkVideoProfileInfoKHR} const * {@link #pVideoProfile};
* VkFormat {@link #pictureFormat};
* {@link VkExtent2D VkExtent2D} {@link #maxCodedExtent};
- * VkFormat referencePictureFormat;
+ * VkFormat {@link #referencePictureFormat};
* uint32_t {@link #maxDpbSlots};
* uint32_t {@link #maxActiveReferencePictures};
* {@link VkExtensionProperties VkExtensionProperties} const * {@link #pStdHeaderVersion};
@@ -140,30 +141,30 @@ public VkVideoSessionCreateInfoKHR(ByteBuffer container) {
/** {@code NULL} or a pointer to a structure extending this structure. */
@NativeType("void const *")
public long pNext() { return npNext(address()); }
- /** the queue family of the created video session. */
+ /** the index of the queue family the created video session will be used with. */
@NativeType("uint32_t")
public int queueFamilyIndex() { return nqueueFamilyIndex(address()); }
/** a bitmask of {@code VkVideoSessionCreateFlagBitsKHR} specifying creation flags. */
@NativeType("VkVideoSessionCreateFlagsKHR")
public int flags() { return nflags(address()); }
- /** a pointer to a {@link VkVideoProfileInfoKHR} structure. */
+ /** a pointer to a {@link VkVideoProfileInfoKHR} structure specifying the video profile the created video session will be used with. */
@NativeType("VkVideoProfileInfoKHR const *")
public VkVideoProfileInfoKHR pVideoProfile() { return npVideoProfile(address()); }
- /** the format of the image views representing decoded Output or encoded Input pictures. */
+ /** the image format the created video session will be used with. If {@code pVideoProfile→videoCodecOperation} specifies a decode operation, then {@code pictureFormat} is the image format of decode output pictures usable with the created video session. If {@code pVideoProfile→videoCodecOperation} specifies an encode operation, then {@code pictureFormat} is the image format of encode input pictures usable with the created video session. */
@NativeType("VkFormat")
public int pictureFormat() { return npictureFormat(address()); }
- /** the maximum width and height of the coded pictures that this instance will be able to support. */
+ /** the maximum width and height of the coded frames the created video session will be used with. */
public VkExtent2D maxCodedExtent() { return nmaxCodedExtent(address()); }
- /** @return the value of the {@code referencePictureFormat} field. */
+ /** the image format of reference pictures stored in the DPB the created video session will be used with. */
@NativeType("VkFormat")
public int referencePictureFormat() { return nreferencePictureFormat(address()); }
- /** the maximum number of DPB Slots that can be activated with associated Video Picture Resources for the created video session. */
+ /** the maximum number of DPB Slots that can be used with the created video session. */
@NativeType("uint32_t")
public int maxDpbSlots() { return nmaxDpbSlots(address()); }
- /** the maximum number of active DPB Slots that can be used as Dpb or Reconstructed Reference Pictures within a single decode or encode operation for the created video session. */
+ /** the maximum number of active reference pictures that can be used in a single video coding operation using the created video session. */
@NativeType("uint32_t")
public int maxActiveReferencePictures() { return nmaxActiveReferencePictures(address()); }
- /** a pointer to a {@link VkExtensionProperties} structure requesting the Video Std header version to use for {@code codecOperation} in {@code pVideoProfile}. */
+ /** a pointer to a {@link VkExtensionProperties} structure requesting the Video Std header version to use for the {@code videoCodecOperation} specified in {@code pVideoProfile}. */
@NativeType("VkExtensionProperties const *")
public VkExtensionProperties pStdHeaderVersion() { return npStdHeaderVersion(address()); }
@@ -185,7 +186,7 @@ public VkVideoSessionCreateInfoKHR(ByteBuffer container) {
public VkVideoSessionCreateInfoKHR maxCodedExtent(VkExtent2D value) { nmaxCodedExtent(address(), value); return this; }
/** Passes the {@link #maxCodedExtent} field to the specified {@link java.util.function.Consumer Consumer}. */
public VkVideoSessionCreateInfoKHR maxCodedExtent(java.util.function.Consumer consumer) { consumer.accept(maxCodedExtent()); return this; }
- /** Sets the specified value to the {@code referencePictureFormat} field. */
+ /** Sets the specified value to the {@link #referencePictureFormat} field. */
public VkVideoSessionCreateInfoKHR referencePictureFormat(@NativeType("VkFormat") int value) { nreferencePictureFormat(address(), value); return this; }
/** Sets the specified value to the {@link #maxDpbSlots} field. */
public VkVideoSessionCreateInfoKHR maxDpbSlots(@NativeType("uint32_t") int value) { nmaxDpbSlots(address(), value); return this; }
@@ -462,7 +463,7 @@ protected VkVideoSessionCreateInfoKHR getElementFactory() {
public int pictureFormat() { return VkVideoSessionCreateInfoKHR.npictureFormat(address()); }
/** @return a {@link VkExtent2D} view of the {@link VkVideoSessionCreateInfoKHR#maxCodedExtent} field. */
public VkExtent2D maxCodedExtent() { return VkVideoSessionCreateInfoKHR.nmaxCodedExtent(address()); }
- /** @return the value of the {@code referencePictureFormat} field. */
+ /** @return the value of the {@link VkVideoSessionCreateInfoKHR#referencePictureFormat} field. */
@NativeType("VkFormat")
public int referencePictureFormat() { return VkVideoSessionCreateInfoKHR.nreferencePictureFormat(address()); }
/** @return the value of the {@link VkVideoSessionCreateInfoKHR#maxDpbSlots} field. */
@@ -493,7 +494,7 @@ protected VkVideoSessionCreateInfoKHR getElementFactory() {
public VkVideoSessionCreateInfoKHR.Buffer maxCodedExtent(VkExtent2D value) { VkVideoSessionCreateInfoKHR.nmaxCodedExtent(address(), value); return this; }
/** Passes the {@link VkVideoSessionCreateInfoKHR#maxCodedExtent} field to the specified {@link java.util.function.Consumer Consumer}. */
public VkVideoSessionCreateInfoKHR.Buffer maxCodedExtent(java.util.function.Consumer consumer) { consumer.accept(maxCodedExtent()); return this; }
- /** Sets the specified value to the {@code referencePictureFormat} field. */
+ /** Sets the specified value to the {@link VkVideoSessionCreateInfoKHR#referencePictureFormat} field. */
public VkVideoSessionCreateInfoKHR.Buffer referencePictureFormat(@NativeType("VkFormat") int value) { VkVideoSessionCreateInfoKHR.nreferencePictureFormat(address(), value); return this; }
/** Sets the specified value to the {@link VkVideoSessionCreateInfoKHR#maxDpbSlots} field. */
public VkVideoSessionCreateInfoKHR.Buffer maxDpbSlots(@NativeType("uint32_t") int value) { VkVideoSessionCreateInfoKHR.nmaxDpbSlots(address(), value); return this; }
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoSessionMemoryRequirementsKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoSessionMemoryRequirementsKHR.java
index 6ed80ba845..abf699d052 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoSessionMemoryRequirementsKHR.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoSessionMemoryRequirementsKHR.java
@@ -16,7 +16,7 @@
import static org.lwjgl.system.MemoryStack.*;
/**
- * Structure specifying video session memory requirements.
+ * Structure describing video session memory requirements.
*
* Valid Usage (Implicit)
*
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoSessionParametersCreateInfoKHR.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoSessionParametersCreateInfoKHR.java
index b378e6007a..4d0bacb1f3 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoSessionParametersCreateInfoKHR.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/VkVideoSessionParametersCreateInfoKHR.java
@@ -16,19 +16,70 @@
import static org.lwjgl.system.MemoryStack.*;
/**
- * Structure to set video session parameters.
+ * Structure specifying parameters of a newly created video session parameters object.
+ *
+ * Description
+ *
+ * Limiting values are defined below that are referenced by the relevant valid usage statements of this structure.
+ *
+ *
+ * - If {@code videoSession} was created with the codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR}, then let {@code StdVideoH264SequenceParameterSet spsAddList[]} be the list of H.264 SPS entries to add to the created video session parameters object, defined as follows:
+ *
+ *
+ * - If the {@code pParametersAddInfo} member of the {@link VkVideoDecodeH264SessionParametersCreateInfoKHR} structure provided in the {@code pNext} chain is not {@code NULL}, then the set of {@code StdVideoH264SequenceParameterSet} entries specified in {@code pParametersAddInfo→pStdSPSs} are added to {@code spsAddList};
+ * - If {@code videoSessionParametersTemplate} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, then each {@code StdVideoH264SequenceParameterSet} entry stored in it with {@code seq_parameter_set_id} not matching any of the entries already in {@code spsAddList} is added to {@code spsAddList}.
+ *
+ *
+ * - If {@code videoSession} was created with the codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR}, then let {@code StdVideoH264PictureParameterSet ppsAddList[]} be the list of H.264 PPS entries to add to the created video session parameters object, defined as follows:
+ *
+ *
+ * - If the {@code pParametersAddInfo} member of the {@link VkVideoDecodeH264SessionParametersCreateInfoKHR} structure provided in the {@code pNext} chain is not {@code NULL}, then the set of {@code StdVideoH264PictureParameterSet} entries specified in {@code pParametersAddInfo→pStdPPSs} are added to {@code ppsAddList};
+ * - If {@code videoSessionParametersTemplate} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, then each {@code StdVideoH264PictureParameterSet} entry stored in it with {@code seq_parameter_set_id} or {@code pic_parameter_set_id} not matching any of the entries already in {@code ppsAddList} is added to {@code ppsAddList}.
+ *
+ *
+ * - If {@code videoSession} was created with the codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then let {@code StdVideoH265VideoParameterSet vpsAddList[]} be the list of H.265 VPS entries to add to the created video session parameters object, defined as follows:
+ *
+ *
+ * - If the {@code pParametersAddInfo} member of the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR} structure provided in the {@code pNext} chain is not {@code NULL}, then the set of {@code StdVideoH265VideoParameterSet} entries specified in {@code pParametersAddInfo→pStdVPSs} are added to {@code vpsAddList};
+ * - If {@code videoSessionParametersTemplate} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, then each {@code StdVideoH265VideoParameterSet} entry stored in it with {@code vps_video_parameter_set_id} not matching any of the entries already in {@code vpsAddList} is added to {@code vpsAddList}.
+ *
+ *
+ * - If {@code videoSession} was created with the codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then let {@code StdVideoH265SequenceParameterSet spsAddList[]} be the list of H.265 SPS entries to add to the created video session parameters object, defined as follows:
+ *
+ *
+ * - If the {@code pParametersAddInfo} member of the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR} structure provided in the {@code pNext} chain is not {@code NULL}, then the set of {@code StdVideoH265SequenceParameterSet} entries specified in {@code pParametersAddInfo→pStdSPSs} are added to {@code spsAddList};
+ * - If {@code videoSessionParametersTemplate} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, then each {@code StdVideoH265SequenceParameterSet} entry stored in it with {@code sps_video_parameter_set_id} or {@code sps_seq_parameter_set_id} not matching any of the entries already in {@code spsAddList} is added to {@code spsAddList}.
+ *
+ *
+ * - If {@code videoSession} was created with the codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then let {@code StdVideoH265PictureParameterSet ppsAddList[]} be the list of H.265 PPS entries to add to the created video session parameters object, defined as follows:
+ *
+ *
+ * - If the {@code pParametersAddInfo} member of the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR} structure provided in the {@code pNext} chain is not {@code NULL}, then the set of {@code StdVideoH265PictureParameterSet} entries specified in {@code pParametersAddInfo→pStdPPSs} are added to {@code ppsAddList};
+ * - If {@code videoSessionParametersTemplate} is not {@link VK10#VK_NULL_HANDLE NULL_HANDLE}, then each {@code StdVideoH265PictureParameterSet} entry stored in it with {@code sps_video_parameter_set_id}, {@code pps_seq_parameter_set_id}, or {@code pps_pic_parameter_set_id} not matching any of the entries already in {@code ppsAddList} is added to {@code ppsAddList}.
+ *
+ *
+ *
*
* Valid Usage
*
*
* - If {@code videoSessionParametersTemplate} represents a valid handle, it must have been created against {@code videoSession}
+ * - If {@code videoSession} was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR}, then the {@code pNext} chain must include a {@link VkVideoDecodeH264SessionParametersCreateInfoKHR} structure
+ * - If {@code videoSession} was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR}, then the number of elements of {@code spsAddList} must be less than or equal to the {@code maxStdSPSCount} specified in the {@link VkVideoDecodeH264SessionParametersCreateInfoKHR} structure included in the {@code pNext} chain
+ * - If {@code videoSession} was created with the video codec operation {@link KHRVideoDecodeH264#VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR}, then the number of elements of {@code ppsAddList} must be less than or equal to the {@code maxStdPPSCount} specified in the {@link VkVideoDecodeH264SessionParametersCreateInfoKHR} structure included in the {@code pNext} chain
+ * - If {@code videoSession} was created with the video codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then the {@code pNext} chain must include a {@link VkVideoDecodeH265SessionParametersCreateInfoKHR} structure
+ * - If {@code videoSession} was created with the video codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then the number of elements of {@code vpsAddList} must be less than or equal to the {@code maxStdVPSCount} specified in the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR} structure included in the {@code pNext} chain
+ * - If {@code videoSession} was created with the video codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then the number of elements of {@code spsAddList} must be less than or equal to the {@code maxStdSPSCount} specified in the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR} structure included in the {@code pNext} chain
+ * - If {@code videoSession} was created with the video codec operation {@link KHRVideoDecodeH265#VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR}, then the number of elements of {@code ppsAddList} must be less than or equal to the {@code maxStdPPSCount} specified in the {@link VkVideoDecodeH265SessionParametersCreateInfoKHR} structure included in the {@code pNext} chain
+ * - If {@code videoSession} was created with the video codec operation {@link EXTVideoEncodeH264#VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT}, then the {@code pNext} chain must include a {@link VkVideoEncodeH264SessionParametersCreateInfoEXT} structure
+ * - If {@code videoSession} was created with the video codec operation {@link EXTVideoEncodeH265#VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT}, then the {@code pNext} chain must include a {@link VkVideoEncodeH265SessionParametersCreateInfoEXT} structure
*
*
* Valid Usage (Implicit)
*
*
+ * struct VkXcbSurfaceCreateInfoKHR {
+ * VkStructureType {@link #sType};
+ * void const * {@link #pNext};
+ * VkXcbSurfaceCreateFlagsKHR {@link #flags};
+ * xcb_connection_t * {@link #connection};
+ * xcb_window_t {@link #window};
+ * }
+ */
+public class VkXcbSurfaceCreateInfoKHR extends Struct implements NativeResource {
+
+ /** The struct size in bytes. */
+ public static final int SIZEOF;
+
+ /** The struct alignment in bytes. */
+ public static final int ALIGNOF;
+
+ /** The struct member offsets. */
+ public static final int
+ STYPE,
+ PNEXT,
+ FLAGS,
+ CONNECTION,
+ WINDOW;
+
+ static {
+ Layout layout = __struct(
+ __member(4),
+ __member(POINTER_SIZE),
+ __member(4),
+ __member(POINTER_SIZE),
+ __member(4)
+ );
+
+ SIZEOF = layout.getSize();
+ ALIGNOF = layout.getAlignment();
+
+ STYPE = layout.offsetof(0);
+ PNEXT = layout.offsetof(1);
+ FLAGS = layout.offsetof(2);
+ CONNECTION = layout.offsetof(3);
+ WINDOW = layout.offsetof(4);
+ }
+
+ /**
+ * Creates a {@code VkXcbSurfaceCreateInfoKHR} instance at the current position of the specified {@link ByteBuffer} container. Changes to the buffer's content will be
+ * visible to the struct instance and vice versa.
+ *
+ * The created instance holds a strong reference to the container object.
+ */
+ public VkXcbSurfaceCreateInfoKHR(ByteBuffer container) {
+ super(memAddress(container), __checkContainer(container, SIZEOF));
+ }
+
+ @Override
+ public int sizeof() { return SIZEOF; }
+
+ /** the type of this structure. */
+ @NativeType("VkStructureType")
+ public int sType() { return nsType(address()); }
+ /** {@code NULL} or a pointer to a structure extending this structure. */
+ @NativeType("void const *")
+ public long pNext() { return npNext(address()); }
+ /** reserved for future use. */
+ @NativeType("VkXcbSurfaceCreateFlagsKHR")
+ public int flags() { return nflags(address()); }
+ /** a pointer to an {@code xcb_connection_t} to the X server. */
+ @NativeType("xcb_connection_t *")
+ public long connection() { return nconnection(address()); }
+ /** the {@code xcb_window_t} for the X11 window to associate the surface with. */
+ @NativeType("xcb_window_t")
+ public int window() { return nwindow(address()); }
+
+ /** Sets the specified value to the {@link #sType} field. */
+ public VkXcbSurfaceCreateInfoKHR sType(@NativeType("VkStructureType") int value) { nsType(address(), value); return this; }
+ /** Sets the {@link KHRXcbSurface#VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR} value to the {@link #sType} field. */
+ public VkXcbSurfaceCreateInfoKHR sType$Default() { return sType(KHRXcbSurface.VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR); }
+ /** Sets the specified value to the {@link #pNext} field. */
+ public VkXcbSurfaceCreateInfoKHR pNext(@NativeType("void const *") long value) { npNext(address(), value); return this; }
+ /** Sets the specified value to the {@link #flags} field. */
+ public VkXcbSurfaceCreateInfoKHR flags(@NativeType("VkXcbSurfaceCreateFlagsKHR") int value) { nflags(address(), value); return this; }
+ /** Sets the specified value to the {@link #connection} field. */
+ public VkXcbSurfaceCreateInfoKHR connection(@NativeType("xcb_connection_t *") long value) { nconnection(address(), value); return this; }
+ /** Sets the specified value to the {@link #window} field. */
+ public VkXcbSurfaceCreateInfoKHR window(@NativeType("xcb_window_t") int value) { nwindow(address(), value); return this; }
+
+ /** Initializes this struct with the specified values. */
+ public VkXcbSurfaceCreateInfoKHR set(
+ int sType,
+ long pNext,
+ int flags,
+ long connection,
+ int window
+ ) {
+ sType(sType);
+ pNext(pNext);
+ flags(flags);
+ connection(connection);
+ window(window);
+
+ return this;
+ }
+
+ /**
+ * Copies the specified struct data to this struct.
+ *
+ * @param src the source struct
+ *
+ * @return this struct
+ */
+ public VkXcbSurfaceCreateInfoKHR set(VkXcbSurfaceCreateInfoKHR src) {
+ memCopy(src.address(), address(), SIZEOF);
+ return this;
+ }
+
+ // -----------------------------------
+
+ /** Returns a new {@code VkXcbSurfaceCreateInfoKHR} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed. */
+ public static VkXcbSurfaceCreateInfoKHR malloc() {
+ return wrap(VkXcbSurfaceCreateInfoKHR.class, nmemAllocChecked(SIZEOF));
+ }
+
+ /** Returns a new {@code VkXcbSurfaceCreateInfoKHR} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed. */
+ public static VkXcbSurfaceCreateInfoKHR calloc() {
+ return wrap(VkXcbSurfaceCreateInfoKHR.class, nmemCallocChecked(1, SIZEOF));
+ }
+
+ /** Returns a new {@code VkXcbSurfaceCreateInfoKHR} instance allocated with {@link BufferUtils}. */
+ public static VkXcbSurfaceCreateInfoKHR create() {
+ ByteBuffer container = BufferUtils.createByteBuffer(SIZEOF);
+ return wrap(VkXcbSurfaceCreateInfoKHR.class, memAddress(container), container);
+ }
+
+ /** Returns a new {@code VkXcbSurfaceCreateInfoKHR} instance for the specified memory address. */
+ public static VkXcbSurfaceCreateInfoKHR create(long address) {
+ return wrap(VkXcbSurfaceCreateInfoKHR.class, address);
+ }
+
+ /** Like {@link #create(long) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkXcbSurfaceCreateInfoKHR createSafe(long address) {
+ return address == NULL ? null : wrap(VkXcbSurfaceCreateInfoKHR.class, address);
+ }
+
+ /**
+ * Returns a new {@link VkXcbSurfaceCreateInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memAlloc memAlloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkXcbSurfaceCreateInfoKHR.Buffer malloc(int capacity) {
+ return wrap(Buffer.class, nmemAllocChecked(__checkMalloc(capacity, SIZEOF)), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkXcbSurfaceCreateInfoKHR.Buffer} instance allocated with {@link MemoryUtil#memCalloc memCalloc}. The instance must be explicitly freed.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkXcbSurfaceCreateInfoKHR.Buffer calloc(int capacity) {
+ return wrap(Buffer.class, nmemCallocChecked(capacity, SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkXcbSurfaceCreateInfoKHR.Buffer} instance allocated with {@link BufferUtils}.
+ *
+ * @param capacity the buffer capacity
+ */
+ public static VkXcbSurfaceCreateInfoKHR.Buffer create(int capacity) {
+ ByteBuffer container = __create(capacity, SIZEOF);
+ return wrap(Buffer.class, memAddress(container), capacity, container);
+ }
+
+ /**
+ * Create a {@link VkXcbSurfaceCreateInfoKHR.Buffer} instance at the specified memory.
+ *
+ * @param address the memory address
+ * @param capacity the buffer capacity
+ */
+ public static VkXcbSurfaceCreateInfoKHR.Buffer create(long address, int capacity) {
+ return wrap(Buffer.class, address, capacity);
+ }
+
+ /** Like {@link #create(long, int) create}, but returns {@code null} if {@code address} is {@code NULL}. */
+ @Nullable
+ public static VkXcbSurfaceCreateInfoKHR.Buffer createSafe(long address, int capacity) {
+ return address == NULL ? null : wrap(Buffer.class, address, capacity);
+ }
+
+ /**
+ * Returns a new {@code VkXcbSurfaceCreateInfoKHR} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkXcbSurfaceCreateInfoKHR malloc(MemoryStack stack) {
+ return wrap(VkXcbSurfaceCreateInfoKHR.class, stack.nmalloc(ALIGNOF, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@code VkXcbSurfaceCreateInfoKHR} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ */
+ public static VkXcbSurfaceCreateInfoKHR calloc(MemoryStack stack) {
+ return wrap(VkXcbSurfaceCreateInfoKHR.class, stack.ncalloc(ALIGNOF, 1, SIZEOF));
+ }
+
+ /**
+ * Returns a new {@link VkXcbSurfaceCreateInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack}.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkXcbSurfaceCreateInfoKHR.Buffer malloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.nmalloc(ALIGNOF, capacity * SIZEOF), capacity);
+ }
+
+ /**
+ * Returns a new {@link VkXcbSurfaceCreateInfoKHR.Buffer} instance allocated on the specified {@link MemoryStack} and initializes all its bits to zero.
+ *
+ * @param stack the stack from which to allocate
+ * @param capacity the buffer capacity
+ */
+ public static VkXcbSurfaceCreateInfoKHR.Buffer calloc(int capacity, MemoryStack stack) {
+ return wrap(Buffer.class, stack.ncalloc(ALIGNOF, capacity, SIZEOF), capacity);
+ }
+
+ // -----------------------------------
+
+ /** Unsafe version of {@link #sType}. */
+ public static int nsType(long struct) { return UNSAFE.getInt(null, struct + VkXcbSurfaceCreateInfoKHR.STYPE); }
+ /** Unsafe version of {@link #pNext}. */
+ public static long npNext(long struct) { return memGetAddress(struct + VkXcbSurfaceCreateInfoKHR.PNEXT); }
+ /** Unsafe version of {@link #flags}. */
+ public static int nflags(long struct) { return UNSAFE.getInt(null, struct + VkXcbSurfaceCreateInfoKHR.FLAGS); }
+ /** Unsafe version of {@link #connection}. */
+ public static long nconnection(long struct) { return memGetAddress(struct + VkXcbSurfaceCreateInfoKHR.CONNECTION); }
+ /** Unsafe version of {@link #window}. */
+ public static int nwindow(long struct) { return UNSAFE.getInt(null, struct + VkXcbSurfaceCreateInfoKHR.WINDOW); }
+
+ /** Unsafe version of {@link #sType(int) sType}. */
+ public static void nsType(long struct, int value) { UNSAFE.putInt(null, struct + VkXcbSurfaceCreateInfoKHR.STYPE, value); }
+ /** Unsafe version of {@link #pNext(long) pNext}. */
+ public static void npNext(long struct, long value) { memPutAddress(struct + VkXcbSurfaceCreateInfoKHR.PNEXT, value); }
+ /** Unsafe version of {@link #flags(int) flags}. */
+ public static void nflags(long struct, int value) { UNSAFE.putInt(null, struct + VkXcbSurfaceCreateInfoKHR.FLAGS, value); }
+ /** Unsafe version of {@link #connection(long) connection}. */
+ public static void nconnection(long struct, long value) { memPutAddress(struct + VkXcbSurfaceCreateInfoKHR.CONNECTION, value); }
+ /** Unsafe version of {@link #window(int) window}. */
+ public static void nwindow(long struct, int value) { UNSAFE.putInt(null, struct + VkXcbSurfaceCreateInfoKHR.WINDOW, value); }
+
+ // -----------------------------------
+
+ /** An array of {@link VkXcbSurfaceCreateInfoKHR} structs. */
+ public static class Buffer extends StructBuffer implements NativeResource {
+
+ private static final VkXcbSurfaceCreateInfoKHR ELEMENT_FACTORY = VkXcbSurfaceCreateInfoKHR.create(-1L);
+
+ /**
+ * Creates a new {@code VkXcbSurfaceCreateInfoKHR.Buffer} instance backed by the specified container.
+ *
+ * Changes to the container's content will be visible to the struct buffer instance and vice versa. The two buffers' position, limit, and mark values
+ * will be independent. The new buffer's position will be zero, its capacity and its limit will be the number of bytes remaining in this buffer divided
+ * by {@link VkXcbSurfaceCreateInfoKHR#SIZEOF}, and its mark will be undefined.
+ *
+ * The created buffer instance holds a strong reference to the container object.
+ */
+ public Buffer(ByteBuffer container) {
+ super(container, container.remaining() / SIZEOF);
+ }
+
+ public Buffer(long address, int cap) {
+ super(address, null, -1, 0, cap, cap);
+ }
+
+ Buffer(long address, @Nullable ByteBuffer container, int mark, int pos, int lim, int cap) {
+ super(address, container, mark, pos, lim, cap);
+ }
+
+ @Override
+ protected Buffer self() {
+ return this;
+ }
+
+ @Override
+ protected VkXcbSurfaceCreateInfoKHR getElementFactory() {
+ return ELEMENT_FACTORY;
+ }
+
+ /** @return the value of the {@link VkXcbSurfaceCreateInfoKHR#sType} field. */
+ @NativeType("VkStructureType")
+ public int sType() { return VkXcbSurfaceCreateInfoKHR.nsType(address()); }
+ /** @return the value of the {@link VkXcbSurfaceCreateInfoKHR#pNext} field. */
+ @NativeType("void const *")
+ public long pNext() { return VkXcbSurfaceCreateInfoKHR.npNext(address()); }
+ /** @return the value of the {@link VkXcbSurfaceCreateInfoKHR#flags} field. */
+ @NativeType("VkXcbSurfaceCreateFlagsKHR")
+ public int flags() { return VkXcbSurfaceCreateInfoKHR.nflags(address()); }
+ /** @return the value of the {@link VkXcbSurfaceCreateInfoKHR#connection} field. */
+ @NativeType("xcb_connection_t *")
+ public long connection() { return VkXcbSurfaceCreateInfoKHR.nconnection(address()); }
+ /** @return the value of the {@link VkXcbSurfaceCreateInfoKHR#window} field. */
+ @NativeType("xcb_window_t")
+ public int window() { return VkXcbSurfaceCreateInfoKHR.nwindow(address()); }
+
+ /** Sets the specified value to the {@link VkXcbSurfaceCreateInfoKHR#sType} field. */
+ public VkXcbSurfaceCreateInfoKHR.Buffer sType(@NativeType("VkStructureType") int value) { VkXcbSurfaceCreateInfoKHR.nsType(address(), value); return this; }
+ /** Sets the {@link KHRXcbSurface#VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR} value to the {@link VkXcbSurfaceCreateInfoKHR#sType} field. */
+ public VkXcbSurfaceCreateInfoKHR.Buffer sType$Default() { return sType(KHRXcbSurface.VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR); }
+ /** Sets the specified value to the {@link VkXcbSurfaceCreateInfoKHR#pNext} field. */
+ public VkXcbSurfaceCreateInfoKHR.Buffer pNext(@NativeType("void const *") long value) { VkXcbSurfaceCreateInfoKHR.npNext(address(), value); return this; }
+ /** Sets the specified value to the {@link VkXcbSurfaceCreateInfoKHR#flags} field. */
+ public VkXcbSurfaceCreateInfoKHR.Buffer flags(@NativeType("VkXcbSurfaceCreateFlagsKHR") int value) { VkXcbSurfaceCreateInfoKHR.nflags(address(), value); return this; }
+ /** Sets the specified value to the {@link VkXcbSurfaceCreateInfoKHR#connection} field. */
+ public VkXcbSurfaceCreateInfoKHR.Buffer connection(@NativeType("xcb_connection_t *") long value) { VkXcbSurfaceCreateInfoKHR.nconnection(address(), value); return this; }
+ /** Sets the specified value to the {@link VkXcbSurfaceCreateInfoKHR#window} field. */
+ public VkXcbSurfaceCreateInfoKHR.Buffer window(@NativeType("xcb_window_t") int value) { VkXcbSurfaceCreateInfoKHR.nwindow(address(), value); return this; }
+
+ }
+
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/video/STDVulkanVideoCodecH264.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/video/STDVulkanVideoCodecH264.java
index b6746605f2..5e612c59c9 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/video/STDVulkanVideoCodecH264.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/video/STDVulkanVideoCodecH264.java
@@ -339,7 +339,7 @@ public final class STDVulkanVideoCodecH264 {
STD_VIDEO_H264_NON_VCL_NALU_TYPE_INVALID = 0x7FFFFFFF;
/** The extension specification version. */
- public static final int VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_MAKE_VIDEO_STD_VERSION(0, 9, 8);
+ public static final int VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0);
/** The extension name. */
public static final String VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264_decode";
diff --git a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/video/STDVulkanVideoCodecH265.java b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/video/STDVulkanVideoCodecH265.java
index eb4c4f4e7a..9b31e5cea4 100644
--- a/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/video/STDVulkanVideoCodecH265.java
+++ b/modules/lwjgl/vulkan/src/generated/java/org/lwjgl/vulkan/video/STDVulkanVideoCodecH265.java
@@ -200,7 +200,7 @@ public final class STDVulkanVideoCodecH265 {
STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 0x7FFFFFFF;
/** The extension specification version. */
- public static final int VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_MAKE_VIDEO_STD_VERSION(0, 9, 9);
+ public static final int VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0);
/** The extension name. */
public static final String VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265_decode";
diff --git a/modules/lwjgl/vulkan/src/main/c/vk_video/vulkan_video_codec_h264std_decode.h b/modules/lwjgl/vulkan/src/main/c/vk_video/vulkan_video_codec_h264std_decode.h
index 98744f67ba..b1e79429d8 100644
--- a/modules/lwjgl/vulkan/src/main/c/vk_video/vulkan_video_codec_h264std_decode.h
+++ b/modules/lwjgl/vulkan/src/main/c/vk_video/vulkan_video_codec_h264std_decode.h
@@ -20,11 +20,11 @@ extern "C" {
#define vulkan_video_codec_h264std_decode 1
-// Vulkan 0.9 provisional Vulkan video H.264 decode std specification version number
-#define VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_0_9_8 VK_MAKE_VIDEO_STD_VERSION(0, 9, 8) // Patch version should always be set to 0
+
+#define VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0)
#define STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE 2
-#define VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_0_9_8
+#define VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0
#define VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h264_decode"
typedef enum StdVideoDecodeH264FieldOrderCount {
diff --git a/modules/lwjgl/vulkan/src/main/c/vk_video/vulkan_video_codec_h264std_encode.h b/modules/lwjgl/vulkan/src/main/c/vk_video/vulkan_video_codec_h264std_encode.h
index 76f03eb789..7bd96aa7bc 100644
--- a/modules/lwjgl/vulkan/src/main/c/vk_video/vulkan_video_codec_h264std_encode.h
+++ b/modules/lwjgl/vulkan/src/main/c/vk_video/vulkan_video_codec_h264std_encode.h
@@ -21,7 +21,7 @@ extern "C" {
#define vulkan_video_codec_h264std_encode 1
// Vulkan 0.9 provisional Vulkan video H.264 encode std specification version number
-#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_0_9_8 VK_MAKE_VIDEO_STD_VERSION(0, 9, 8) // Patch version should always be set to 0
+#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_0_9_8 VK_MAKE_VIDEO_STD_VERSION(0, 9, 8)
#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_0_9_8
#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h264_encode"
diff --git a/modules/lwjgl/vulkan/src/main/c/vk_video/vulkan_video_codec_h265std_decode.h b/modules/lwjgl/vulkan/src/main/c/vk_video/vulkan_video_codec_h265std_decode.h
index 831c41bc52..d8660d12e9 100644
--- a/modules/lwjgl/vulkan/src/main/c/vk_video/vulkan_video_codec_h265std_decode.h
+++ b/modules/lwjgl/vulkan/src/main/c/vk_video/vulkan_video_codec_h265std_decode.h
@@ -20,11 +20,11 @@ extern "C" {
#define vulkan_video_codec_h265std_decode 1
-// Vulkan 0.9 provisional Vulkan video H.265 decode std specification version number
-#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_0_9_9 VK_MAKE_VIDEO_STD_VERSION(0, 9, 9) // Patch version should always be set to 0
+
+#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0)
#define STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE 8
-#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_0_9_9
+#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0
#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h265_decode"
typedef struct StdVideoDecodeH265PictureInfoFlags {
uint32_t IrapPicFlag : 1;
diff --git a/modules/lwjgl/vulkan/src/main/c/vk_video/vulkan_video_codec_h265std_encode.h b/modules/lwjgl/vulkan/src/main/c/vk_video/vulkan_video_codec_h265std_encode.h
index 84e34e54a1..5a419b14be 100644
--- a/modules/lwjgl/vulkan/src/main/c/vk_video/vulkan_video_codec_h265std_encode.h
+++ b/modules/lwjgl/vulkan/src/main/c/vk_video/vulkan_video_codec_h265std_encode.h
@@ -21,7 +21,7 @@ extern "C" {
#define vulkan_video_codec_h265std_encode 1
// Vulkan 0.9 provisional Vulkan video H.265 encode std specification version number
-#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_0_9_9 VK_MAKE_VIDEO_STD_VERSION(0, 9, 9) // Patch version should always be set to 0
+#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_0_9_9 VK_MAKE_VIDEO_STD_VERSION(0, 9, 9)
#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_0_9_9
#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h265_encode"
diff --git a/modules/lwjgl/vulkan/src/main/c/vulkan/vulkan_android.h b/modules/lwjgl/vulkan/src/main/c/vulkan/vulkan_android.h
new file mode 100644
index 0000000000..11f5397966
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/main/c/vulkan/vulkan_android.h
@@ -0,0 +1,125 @@
+#ifndef VULKAN_ANDROID_H_
+#define VULKAN_ANDROID_H_ 1
+
+/*
+** Copyright 2015-2022 The Khronos Group Inc.
+**
+** SPDX-License-Identifier: Apache-2.0
+*/
+
+/*
+** This header is generated from the Khronos Vulkan XML API Registry.
+**
+*/
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+#define VK_KHR_android_surface 1
+struct ANativeWindow;
+#define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6
+#define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME "VK_KHR_android_surface"
+typedef VkFlags VkAndroidSurfaceCreateFlagsKHR;
+typedef struct VkAndroidSurfaceCreateInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ VkAndroidSurfaceCreateFlagsKHR flags;
+ struct ANativeWindow* window;
+} VkAndroidSurfaceCreateInfoKHR;
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR(
+ VkInstance instance,
+ const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+#endif
+
+
+#define VK_ANDROID_external_memory_android_hardware_buffer 1
+struct AHardwareBuffer;
+#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 5
+#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME "VK_ANDROID_external_memory_android_hardware_buffer"
+typedef struct VkAndroidHardwareBufferUsageANDROID {
+ VkStructureType sType;
+ void* pNext;
+ uint64_t androidHardwareBufferUsage;
+} VkAndroidHardwareBufferUsageANDROID;
+
+typedef struct VkAndroidHardwareBufferPropertiesANDROID {
+ VkStructureType sType;
+ void* pNext;
+ VkDeviceSize allocationSize;
+ uint32_t memoryTypeBits;
+} VkAndroidHardwareBufferPropertiesANDROID;
+
+typedef struct VkAndroidHardwareBufferFormatPropertiesANDROID {
+ VkStructureType sType;
+ void* pNext;
+ VkFormat format;
+ uint64_t externalFormat;
+ VkFormatFeatureFlags formatFeatures;
+ VkComponentMapping samplerYcbcrConversionComponents;
+ VkSamplerYcbcrModelConversion suggestedYcbcrModel;
+ VkSamplerYcbcrRange suggestedYcbcrRange;
+ VkChromaLocation suggestedXChromaOffset;
+ VkChromaLocation suggestedYChromaOffset;
+} VkAndroidHardwareBufferFormatPropertiesANDROID;
+
+typedef struct VkImportAndroidHardwareBufferInfoANDROID {
+ VkStructureType sType;
+ const void* pNext;
+ struct AHardwareBuffer* buffer;
+} VkImportAndroidHardwareBufferInfoANDROID;
+
+typedef struct VkMemoryGetAndroidHardwareBufferInfoANDROID {
+ VkStructureType sType;
+ const void* pNext;
+ VkDeviceMemory memory;
+} VkMemoryGetAndroidHardwareBufferInfoANDROID;
+
+typedef struct VkExternalFormatANDROID {
+ VkStructureType sType;
+ void* pNext;
+ uint64_t externalFormat;
+} VkExternalFormatANDROID;
+
+typedef struct VkAndroidHardwareBufferFormatProperties2ANDROID {
+ VkStructureType sType;
+ void* pNext;
+ VkFormat format;
+ uint64_t externalFormat;
+ VkFormatFeatureFlags2 formatFeatures;
+ VkComponentMapping samplerYcbcrConversionComponents;
+ VkSamplerYcbcrModelConversion suggestedYcbcrModel;
+ VkSamplerYcbcrRange suggestedYcbcrRange;
+ VkChromaLocation suggestedXChromaOffset;
+ VkChromaLocation suggestedYChromaOffset;
+} VkAndroidHardwareBufferFormatProperties2ANDROID;
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetAndroidHardwareBufferPropertiesANDROID)(VkDevice device, const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties);
+typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryAndroidHardwareBufferANDROID)(VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetAndroidHardwareBufferPropertiesANDROID(
+ VkDevice device,
+ const struct AHardwareBuffer* buffer,
+ VkAndroidHardwareBufferPropertiesANDROID* pProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryAndroidHardwareBufferANDROID(
+ VkDevice device,
+ const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
+ struct AHardwareBuffer** pBuffer);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/modules/lwjgl/vulkan/src/main/c/vulkan/vulkan_beta.h b/modules/lwjgl/vulkan/src/main/c/vulkan/vulkan_beta.h
index b6c8e9994c..cfeda0eb36 100644
--- a/modules/lwjgl/vulkan/src/main/c/vulkan/vulkan_beta.h
+++ b/modules/lwjgl/vulkan/src/main/c/vulkan/vulkan_beta.h
@@ -19,356 +19,6 @@ extern "C" {
-#define VK_KHR_video_queue 1
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionKHR)
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionParametersKHR)
-#define VK_KHR_VIDEO_QUEUE_SPEC_VERSION 7
-#define VK_KHR_VIDEO_QUEUE_EXTENSION_NAME "VK_KHR_video_queue"
-
-typedef enum VkQueryResultStatusKHR {
- VK_QUERY_RESULT_STATUS_ERROR_KHR = -1,
- VK_QUERY_RESULT_STATUS_NOT_READY_KHR = 0,
- VK_QUERY_RESULT_STATUS_COMPLETE_KHR = 1,
- VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkQueryResultStatusKHR;
-
-typedef enum VkVideoCodecOperationFlagBitsKHR {
- VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT = 0x00010000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT = 0x00020000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT = 0x00000001,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT = 0x00000002,
-#endif
- VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkVideoCodecOperationFlagBitsKHR;
-typedef VkFlags VkVideoCodecOperationFlagsKHR;
-
-typedef enum VkVideoChromaSubsamplingFlagBitsKHR {
- VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_KHR = 0,
- VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 0x00000001,
- VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 0x00000002,
- VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 0x00000004,
- VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 0x00000008,
- VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkVideoChromaSubsamplingFlagBitsKHR;
-typedef VkFlags VkVideoChromaSubsamplingFlagsKHR;
-
-typedef enum VkVideoComponentBitDepthFlagBitsKHR {
- VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR = 0,
- VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 0x00000001,
- VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 0x00000004,
- VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 0x00000010,
- VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkVideoComponentBitDepthFlagBitsKHR;
-typedef VkFlags VkVideoComponentBitDepthFlagsKHR;
-
-typedef enum VkVideoCapabilityFlagBitsKHR {
- VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 0x00000001,
- VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0x00000002,
- VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkVideoCapabilityFlagBitsKHR;
-typedef VkFlags VkVideoCapabilityFlagsKHR;
-
-typedef enum VkVideoSessionCreateFlagBitsKHR {
- VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0x00000001,
- VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkVideoSessionCreateFlagBitsKHR;
-typedef VkFlags VkVideoSessionCreateFlagsKHR;
-typedef VkFlags VkVideoSessionParametersCreateFlagsKHR;
-typedef VkFlags VkVideoBeginCodingFlagsKHR;
-typedef VkFlags VkVideoEndCodingFlagsKHR;
-
-typedef enum VkVideoCodingControlFlagBitsKHR {
- VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 0x00000001,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 0x00000002,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR = 0x00000004,
-#endif
- VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkVideoCodingControlFlagBitsKHR;
-typedef VkFlags VkVideoCodingControlFlagsKHR;
-typedef struct VkQueueFamilyQueryResultStatusPropertiesKHR {
- VkStructureType sType;
- void* pNext;
- VkBool32 queryResultStatusSupport;
-} VkQueueFamilyQueryResultStatusPropertiesKHR;
-
-typedef struct VkQueueFamilyVideoPropertiesKHR {
- VkStructureType sType;
- void* pNext;
- VkVideoCodecOperationFlagsKHR videoCodecOperations;
-} VkQueueFamilyVideoPropertiesKHR;
-
-typedef struct VkVideoProfileInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkVideoCodecOperationFlagBitsKHR videoCodecOperation;
- VkVideoChromaSubsamplingFlagsKHR chromaSubsampling;
- VkVideoComponentBitDepthFlagsKHR lumaBitDepth;
- VkVideoComponentBitDepthFlagsKHR chromaBitDepth;
-} VkVideoProfileInfoKHR;
-
-typedef struct VkVideoProfileListInfoKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t profileCount;
- const VkVideoProfileInfoKHR* pProfiles;
-} VkVideoProfileListInfoKHR;
-
-typedef struct VkVideoCapabilitiesKHR {
- VkStructureType sType;
- void* pNext;
- VkVideoCapabilityFlagsKHR flags;
- VkDeviceSize minBitstreamBufferOffsetAlignment;
- VkDeviceSize minBitstreamBufferSizeAlignment;
- VkExtent2D pictureAccessGranularity;
- VkExtent2D minCodedExtent;
- VkExtent2D maxCodedExtent;
- uint32_t maxDpbSlots;
- uint32_t maxActiveReferencePictures;
- VkExtensionProperties stdHeaderVersion;
-} VkVideoCapabilitiesKHR;
-
-typedef struct VkPhysicalDeviceVideoFormatInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkImageUsageFlags imageUsage;
-} VkPhysicalDeviceVideoFormatInfoKHR;
-
-typedef struct VkVideoFormatPropertiesKHR {
- VkStructureType sType;
- void* pNext;
- VkFormat format;
- VkComponentMapping componentMapping;
- VkImageCreateFlags imageCreateFlags;
- VkImageType imageType;
- VkImageTiling imageTiling;
- VkImageUsageFlags imageUsageFlags;
-} VkVideoFormatPropertiesKHR;
-
-typedef struct VkVideoPictureResourceInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkOffset2D codedOffset;
- VkExtent2D codedExtent;
- uint32_t baseArrayLayer;
- VkImageView imageViewBinding;
-} VkVideoPictureResourceInfoKHR;
-
-typedef struct VkVideoReferenceSlotInfoKHR {
- VkStructureType sType;
- const void* pNext;
- int32_t slotIndex;
- const VkVideoPictureResourceInfoKHR* pPictureResource;
-} VkVideoReferenceSlotInfoKHR;
-
-typedef struct VkVideoSessionMemoryRequirementsKHR {
- VkStructureType sType;
- void* pNext;
- uint32_t memoryBindIndex;
- VkMemoryRequirements memoryRequirements;
-} VkVideoSessionMemoryRequirementsKHR;
-
-typedef struct VkBindVideoSessionMemoryInfoKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t memoryBindIndex;
- VkDeviceMemory memory;
- VkDeviceSize memoryOffset;
- VkDeviceSize memorySize;
-} VkBindVideoSessionMemoryInfoKHR;
-
-typedef struct VkVideoSessionCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t queueFamilyIndex;
- VkVideoSessionCreateFlagsKHR flags;
- const VkVideoProfileInfoKHR* pVideoProfile;
- VkFormat pictureFormat;
- VkExtent2D maxCodedExtent;
- VkFormat referencePictureFormat;
- uint32_t maxDpbSlots;
- uint32_t maxActiveReferencePictures;
- const VkExtensionProperties* pStdHeaderVersion;
-} VkVideoSessionCreateInfoKHR;
-
-typedef struct VkVideoSessionParametersCreateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkVideoSessionParametersCreateFlagsKHR flags;
- VkVideoSessionParametersKHR videoSessionParametersTemplate;
- VkVideoSessionKHR videoSession;
-} VkVideoSessionParametersCreateInfoKHR;
-
-typedef struct VkVideoSessionParametersUpdateInfoKHR {
- VkStructureType sType;
- const void* pNext;
- uint32_t updateSequenceCount;
-} VkVideoSessionParametersUpdateInfoKHR;
-
-typedef struct VkVideoBeginCodingInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkVideoBeginCodingFlagsKHR flags;
- VkVideoSessionKHR videoSession;
- VkVideoSessionParametersKHR videoSessionParameters;
- uint32_t referenceSlotCount;
- const VkVideoReferenceSlotInfoKHR* pReferenceSlots;
-} VkVideoBeginCodingInfoKHR;
-
-typedef struct VkVideoEndCodingInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkVideoEndCodingFlagsKHR flags;
-} VkVideoEndCodingInfoKHR;
-
-typedef struct VkVideoCodingControlInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkVideoCodingControlFlagsKHR flags;
-} VkVideoCodingControlInfoKHR;
-
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)(VkPhysicalDevice physicalDevice, const VkVideoProfileInfoKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities);
-typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionKHR)(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession);
-typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionKHR)(VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator);
-typedef VkResult (VKAPI_PTR *PFN_vkGetVideoSessionMemoryRequirementsKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pMemoryRequirementsCount, VkVideoSessionMemoryRequirementsKHR* pMemoryRequirements);
-typedef VkResult (VKAPI_PTR *PFN_vkBindVideoSessionMemoryKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t bindSessionMemoryInfoCount, const VkBindVideoSessionMemoryInfoKHR* pBindSessionMemoryInfos);
-typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionParametersKHR)(VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters);
-typedef VkResult (VKAPI_PTR *PFN_vkUpdateVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
-typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator);
-typedef void (VKAPI_PTR *PFN_vkCmdBeginVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdEndVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdControlVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoCapabilitiesKHR(
- VkPhysicalDevice physicalDevice,
- const VkVideoProfileInfoKHR* pVideoProfile,
- VkVideoCapabilitiesKHR* pCapabilities);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoFormatPropertiesKHR(
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo,
- uint32_t* pVideoFormatPropertyCount,
- VkVideoFormatPropertiesKHR* pVideoFormatProperties);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionKHR(
- VkDevice device,
- const VkVideoSessionCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkVideoSessionKHR* pVideoSession);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionKHR(
- VkDevice device,
- VkVideoSessionKHR videoSession,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkGetVideoSessionMemoryRequirementsKHR(
- VkDevice device,
- VkVideoSessionKHR videoSession,
- uint32_t* pMemoryRequirementsCount,
- VkVideoSessionMemoryRequirementsKHR* pMemoryRequirements);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkBindVideoSessionMemoryKHR(
- VkDevice device,
- VkVideoSessionKHR videoSession,
- uint32_t bindSessionMemoryInfoCount,
- const VkBindVideoSessionMemoryInfoKHR* pBindSessionMemoryInfos);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionParametersKHR(
- VkDevice device,
- const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkVideoSessionParametersKHR* pVideoSessionParameters);
-
-VKAPI_ATTR VkResult VKAPI_CALL vkUpdateVideoSessionParametersKHR(
- VkDevice device,
- VkVideoSessionParametersKHR videoSessionParameters,
- const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionParametersKHR(
- VkDevice device,
- VkVideoSessionParametersKHR videoSessionParameters,
- const VkAllocationCallbacks* pAllocator);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdBeginVideoCodingKHR(
- VkCommandBuffer commandBuffer,
- const VkVideoBeginCodingInfoKHR* pBeginInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdEndVideoCodingKHR(
- VkCommandBuffer commandBuffer,
- const VkVideoEndCodingInfoKHR* pEndCodingInfo);
-
-VKAPI_ATTR void VKAPI_CALL vkCmdControlVideoCodingKHR(
- VkCommandBuffer commandBuffer,
- const VkVideoCodingControlInfoKHR* pCodingControlInfo);
-#endif
-
-
-#define VK_KHR_video_decode_queue 1
-#define VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION 6
-#define VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME "VK_KHR_video_decode_queue"
-
-typedef enum VkVideoDecodeCapabilityFlagBitsKHR {
- VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 0x00000001,
- VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 0x00000002,
- VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkVideoDecodeCapabilityFlagBitsKHR;
-typedef VkFlags VkVideoDecodeCapabilityFlagsKHR;
-
-typedef enum VkVideoDecodeUsageFlagBitsKHR {
- VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0,
- VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 0x00000001,
- VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 0x00000002,
- VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 0x00000004,
- VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkVideoDecodeUsageFlagBitsKHR;
-typedef VkFlags VkVideoDecodeUsageFlagsKHR;
-typedef VkFlags VkVideoDecodeFlagsKHR;
-typedef struct VkVideoDecodeCapabilitiesKHR {
- VkStructureType sType;
- void* pNext;
- VkVideoDecodeCapabilityFlagsKHR flags;
-} VkVideoDecodeCapabilitiesKHR;
-
-typedef struct VkVideoDecodeUsageInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkVideoDecodeUsageFlagsKHR videoUsageHints;
-} VkVideoDecodeUsageInfoKHR;
-
-typedef struct VkVideoDecodeInfoKHR {
- VkStructureType sType;
- const void* pNext;
- VkVideoDecodeFlagsKHR flags;
- VkBuffer srcBuffer;
- VkDeviceSize srcBufferOffset;
- VkDeviceSize srcBufferRange;
- VkVideoPictureResourceInfoKHR dstPictureResource;
- const VkVideoReferenceSlotInfoKHR* pSetupReferenceSlot;
- uint32_t referenceSlotCount;
- const VkVideoReferenceSlotInfoKHR* pReferenceSlots;
-} VkVideoDecodeInfoKHR;
-
-typedef void (VKAPI_PTR *PFN_vkCmdDecodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pDecodeInfo);
-
-#ifndef VK_NO_PROTOTYPES
-VKAPI_ATTR void VKAPI_CALL vkCmdDecodeVideoKHR(
- VkCommandBuffer commandBuffer,
- const VkVideoDecodeInfoKHR* pDecodeInfo);
-#endif
-
-
#define VK_KHR_portability_subset 1
#define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1
#define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset"
@@ -896,117 +546,6 @@ typedef struct VkVideoEncodeH265RateControlLayerInfoEXT {
} VkVideoEncodeH265RateControlLayerInfoEXT;
-
-#define VK_EXT_video_decode_h264 1
-#include "vk_video/vulkan_video_codec_h264std_decode.h"
-#define VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION 7
-#define VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME "VK_EXT_video_decode_h264"
-
-typedef enum VkVideoDecodeH264PictureLayoutFlagBitsEXT {
- VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT = 0,
- VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT = 0x00000001,
- VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT = 0x00000002,
- VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkVideoDecodeH264PictureLayoutFlagBitsEXT;
-typedef VkFlags VkVideoDecodeH264PictureLayoutFlagsEXT;
-typedef struct VkVideoDecodeH264ProfileInfoEXT {
- VkStructureType sType;
- const void* pNext;
- StdVideoH264ProfileIdc stdProfileIdc;
- VkVideoDecodeH264PictureLayoutFlagBitsEXT pictureLayout;
-} VkVideoDecodeH264ProfileInfoEXT;
-
-typedef struct VkVideoDecodeH264CapabilitiesEXT {
- VkStructureType sType;
- void* pNext;
- StdVideoH264LevelIdc maxLevelIdc;
- VkOffset2D fieldOffsetGranularity;
-} VkVideoDecodeH264CapabilitiesEXT;
-
-typedef struct VkVideoDecodeH264SessionParametersAddInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t stdSPSCount;
- const StdVideoH264SequenceParameterSet* pStdSPSs;
- uint32_t stdPPSCount;
- const StdVideoH264PictureParameterSet* pStdPPSs;
-} VkVideoDecodeH264SessionParametersAddInfoEXT;
-
-typedef struct VkVideoDecodeH264SessionParametersCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t maxStdSPSCount;
- uint32_t maxStdPPSCount;
- const VkVideoDecodeH264SessionParametersAddInfoEXT* pParametersAddInfo;
-} VkVideoDecodeH264SessionParametersCreateInfoEXT;
-
-typedef struct VkVideoDecodeH264PictureInfoEXT {
- VkStructureType sType;
- const void* pNext;
- const StdVideoDecodeH264PictureInfo* pStdPictureInfo;
- uint32_t sliceCount;
- const uint32_t* pSliceOffsets;
-} VkVideoDecodeH264PictureInfoEXT;
-
-typedef struct VkVideoDecodeH264DpbSlotInfoEXT {
- VkStructureType sType;
- const void* pNext;
- const StdVideoDecodeH264ReferenceInfo* pStdReferenceInfo;
-} VkVideoDecodeH264DpbSlotInfoEXT;
-
-
-
-#define VK_EXT_video_decode_h265 1
-#include "vk_video/vulkan_video_codec_h265std_decode.h"
-#define VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION 6
-#define VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME "VK_EXT_video_decode_h265"
-typedef struct VkVideoDecodeH265ProfileInfoEXT {
- VkStructureType sType;
- const void* pNext;
- StdVideoH265ProfileIdc stdProfileIdc;
-} VkVideoDecodeH265ProfileInfoEXT;
-
-typedef struct VkVideoDecodeH265CapabilitiesEXT {
- VkStructureType sType;
- void* pNext;
- StdVideoH265LevelIdc maxLevelIdc;
-} VkVideoDecodeH265CapabilitiesEXT;
-
-typedef struct VkVideoDecodeH265SessionParametersAddInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t stdVPSCount;
- const StdVideoH265VideoParameterSet* pStdVPSs;
- uint32_t stdSPSCount;
- const StdVideoH265SequenceParameterSet* pStdSPSs;
- uint32_t stdPPSCount;
- const StdVideoH265PictureParameterSet* pStdPPSs;
-} VkVideoDecodeH265SessionParametersAddInfoEXT;
-
-typedef struct VkVideoDecodeH265SessionParametersCreateInfoEXT {
- VkStructureType sType;
- const void* pNext;
- uint32_t maxStdVPSCount;
- uint32_t maxStdSPSCount;
- uint32_t maxStdPPSCount;
- const VkVideoDecodeH265SessionParametersAddInfoEXT* pParametersAddInfo;
-} VkVideoDecodeH265SessionParametersCreateInfoEXT;
-
-typedef struct VkVideoDecodeH265PictureInfoEXT {
- VkStructureType sType;
- const void* pNext;
- StdVideoDecodeH265PictureInfo* pStdPictureInfo;
- uint32_t sliceSegmentCount;
- const uint32_t* pSliceSegmentOffsets;
-} VkVideoDecodeH265PictureInfoEXT;
-
-typedef struct VkVideoDecodeH265DpbSlotInfoEXT {
- VkStructureType sType;
- const void* pNext;
- const StdVideoDecodeH265ReferenceInfo* pStdReferenceInfo;
-} VkVideoDecodeH265DpbSlotInfoEXT;
-
-
#ifdef __cplusplus
}
#endif
diff --git a/modules/lwjgl/vulkan/src/main/c/vulkan/vulkan_core.h b/modules/lwjgl/vulkan/src/main/c/vulkan/vulkan_core.h
index 248f6ab60e..e8fe548281 100644
--- a/modules/lwjgl/vulkan/src/main/c/vulkan/vulkan_core.h
+++ b/modules/lwjgl/vulkan/src/main/c/vulkan/vulkan_core.h
@@ -72,7 +72,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 237
+#define VK_HEADER_VERSION 240
// Complete version of this file
#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION)
@@ -168,24 +168,12 @@ typedef enum VkResult {
VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
VK_ERROR_INVALID_SHADER_NV = -1000012000,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR = -1000023000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR = -1000023001,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR = -1000023002,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR = -1000023003,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR = -1000023004,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR = -1000023005,
-#endif
VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000,
VK_ERROR_NOT_PERMITTED_KHR = -1000174001,
VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000,
@@ -443,66 +431,26 @@ typedef enum VkStructureType {
VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000,
VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001,
VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR = 1000023000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR = 1000023001,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR = 1000023002,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_STRUCTURE_TYPE_VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR = 1000023003,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_KHR = 1000023004,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR = 1000023005,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000023006,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR = 1000023007,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR = 1000023008,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR = 1000023009,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR = 1000023010,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR = 1000023011,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR = 1000023012,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_STRUCTURE_TYPE_VIDEO_PROFILE_LIST_INFO_KHR = 1000023013,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR = 1000023014,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR = 1000023015,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR = 1000023016,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR = 1000024000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR = 1000024001,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR = 1000024002,
-#endif
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
@@ -580,24 +528,12 @@ typedef enum VkStructureType {
#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT = 1000039010,
#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT = 1000040000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT = 1000040001,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_EXT = 1000040003,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000040004,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000040005,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT = 1000040006,
-#endif
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR = 1000040000,
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR = 1000040001,
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR = 1000040003,
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000040004,
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000040005,
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR = 1000040006,
VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000,
VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006,
VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007,
@@ -760,24 +696,12 @@ typedef enum VkStructureType {
VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000,
VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT = 1000187000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000187001,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT = 1000187002,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_EXT = 1000187003,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT = 1000187004,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
- VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT = 1000187005,
-#endif
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR = 1000187000,
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000187001,
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000187002,
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR = 1000187003,
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR = 1000187004,
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR = 1000187005,
VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000,
VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001,
@@ -1022,6 +946,8 @@ typedef enum VkStructureType {
VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT = 1000396007,
VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT = 1000396008,
VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = 1000396009,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000,
VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000,
@@ -1075,6 +1001,7 @@ typedef enum VkStructureType {
VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
@@ -1275,15 +1202,9 @@ typedef enum VkImageLayout {
VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000,
VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001,
VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR = 1000024002,
-#endif
VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000,
VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003,
@@ -1344,12 +1265,8 @@ typedef enum VkObjectType {
VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000,
VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001,
VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_OBJECT_TYPE_VIDEO_SESSION_KHR = 1000023000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR = 1000023001,
-#endif
VK_OBJECT_TYPE_CU_MODULE_NVX = 1000029000,
VK_OBJECT_TYPE_CU_FUNCTION_NVX = 1000029001,
VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000,
@@ -1725,9 +1642,7 @@ typedef enum VkQueryType {
VK_QUERY_TYPE_OCCLUSION = 0,
VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
VK_QUERY_TYPE_TIMESTAMP = 2,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR = 1000023000,
-#endif
VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004,
VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000,
VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000150000,
@@ -2208,12 +2123,8 @@ typedef enum VkFormatFeatureFlagBits {
VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000,
VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR = 0x02000000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR = 0x04000000,
-#endif
VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 0x00002000,
VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000,
@@ -2290,15 +2201,9 @@ typedef enum VkImageUsageFlagBits {
VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020,
VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040,
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0x00000400,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0x00000800,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR = 0x00001000,
-#endif
VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x00000200,
VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00000100,
#ifdef VK_ENABLE_BETA_EXTENSIONS
@@ -2353,9 +2258,7 @@ typedef enum VkQueueFlagBits {
VK_QUEUE_TRANSFER_BIT = 0x00000004,
VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
VK_QUEUE_PROTECTED_BIT = 0x00000010,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_QUEUE_VIDEO_DECODE_BIT_KHR = 0x00000020,
-#endif
#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_QUEUE_VIDEO_ENCODE_BIT_KHR = 0x00000040,
#endif
@@ -2452,6 +2355,7 @@ typedef enum VkQueryPipelineStatisticFlagBits {
VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400,
VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT = 0x00000800,
VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT = 0x00001000,
+ VK_QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI = 0x00002000,
VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VkQueryPipelineStatisticFlagBits;
typedef VkFlags VkQueryPipelineStatisticFlags;
@@ -2462,9 +2366,7 @@ typedef enum VkQueryResultFlagBits {
VK_QUERY_RESULT_WAIT_BIT = 0x00000002,
VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004,
VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_QUERY_RESULT_WITH_STATUS_BIT_KHR = 0x00000010,
-#endif
VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VkQueryResultFlagBits;
typedef VkFlags VkQueryResultFlags;
@@ -2493,12 +2395,8 @@ typedef enum VkBufferUsageFlagBits {
VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 0x00020000,
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0x00002000,
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0x00004000,
-#endif
VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800,
VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000,
VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200,
@@ -2618,6 +2516,7 @@ typedef enum VkShaderStageFlagBits {
VK_SHADER_STAGE_TASK_BIT_EXT = 0x00000040,
VK_SHADER_STAGE_MESH_BIT_EXT = 0x00000080,
VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI = 0x00004000,
+ VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI = 0x00080000,
VK_SHADER_STAGE_RAYGEN_BIT_NV = VK_SHADER_STAGE_RAYGEN_BIT_KHR,
VK_SHADER_STAGE_ANY_HIT_BIT_NV = VK_SHADER_STAGE_ANY_HIT_BIT_KHR,
VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR,
@@ -5747,6 +5646,7 @@ typedef enum VkDriverId {
VK_DRIVER_ID_MESA_VENUS = 22,
VK_DRIVER_ID_MESA_DOZEN = 23,
VK_DRIVER_ID_MESA_NVK = 24,
+ VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = 25,
VK_DRIVER_ID_AMD_PROPRIETARY_KHR = VK_DRIVER_ID_AMD_PROPRIETARY,
VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = VK_DRIVER_ID_AMD_OPEN_SOURCE,
VK_DRIVER_ID_MESA_RADV_KHR = VK_DRIVER_ID_MESA_RADV,
@@ -6559,9 +6459,7 @@ static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR = 0x2000000000ULL;
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT = 0x4000000000ULL;
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR = 0x4000000000ULL;
-#ifdef VK_ENABLE_BETA_EXTENSIONS
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR = 0x04000000ULL;
-#endif
#ifdef VK_ENABLE_BETA_EXTENSIONS
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR = 0x08000000ULL;
#endif
@@ -6583,6 +6481,7 @@ static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HU
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI = 0x10000000000ULL;
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR = 0x10000000ULL;
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT = 0x40000000ULL;
+static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI = 0x20000000000ULL;
static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV = 0x20000000ULL;
typedef VkFlags64 VkAccessFlags2;
@@ -6631,12 +6530,8 @@ static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_READ_BIT = 0x200000000
static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR = 0x200000000ULL;
static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT = 0x400000000ULL;
static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR = 0x400000000ULL;
-#ifdef VK_ENABLE_BETA_EXTENSIONS
static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR = 0x800000000ULL;
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR = 0x1000000000ULL;
-#endif
#ifdef VK_ENABLE_BETA_EXTENSIONS
static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR = 0x2000000000ULL;
#endif
@@ -6742,12 +6637,8 @@ static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR = 0x100000000ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT = 0x200000000ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR = 0x200000000ULL;
-#ifdef VK_ENABLE_BETA_EXTENSIONS
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR = 0x02000000ULL;
-#endif
-#ifdef VK_ENABLE_BETA_EXTENSIONS
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR = 0x04000000ULL;
-#endif
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000ULL;
static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000ULL;
@@ -7945,6 +7836,412 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR(
#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME "VK_KHR_sampler_mirror_clamp_to_edge"
+#define VK_KHR_video_queue 1
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionKHR)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionParametersKHR)
+#define VK_KHR_VIDEO_QUEUE_SPEC_VERSION 8
+#define VK_KHR_VIDEO_QUEUE_EXTENSION_NAME "VK_KHR_video_queue"
+
+typedef enum VkQueryResultStatusKHR {
+ VK_QUERY_RESULT_STATUS_ERROR_KHR = -1,
+ VK_QUERY_RESULT_STATUS_NOT_READY_KHR = 0,
+ VK_QUERY_RESULT_STATUS_COMPLETE_KHR = 1,
+ VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkQueryResultStatusKHR;
+
+typedef enum VkVideoCodecOperationFlagBitsKHR {
+ VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0,
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+ VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT = 0x00010000,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+ VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT = 0x00020000,
+#endif
+ VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 0x00000001,
+ VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 0x00000002,
+ VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkVideoCodecOperationFlagBitsKHR;
+typedef VkFlags VkVideoCodecOperationFlagsKHR;
+
+typedef enum VkVideoChromaSubsamplingFlagBitsKHR {
+ VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_KHR = 0,
+ VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 0x00000001,
+ VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 0x00000002,
+ VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 0x00000004,
+ VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 0x00000008,
+ VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkVideoChromaSubsamplingFlagBitsKHR;
+typedef VkFlags VkVideoChromaSubsamplingFlagsKHR;
+
+typedef enum VkVideoComponentBitDepthFlagBitsKHR {
+ VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR = 0,
+ VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 0x00000001,
+ VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 0x00000004,
+ VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 0x00000010,
+ VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkVideoComponentBitDepthFlagBitsKHR;
+typedef VkFlags VkVideoComponentBitDepthFlagsKHR;
+
+typedef enum VkVideoCapabilityFlagBitsKHR {
+ VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 0x00000001,
+ VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0x00000002,
+ VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkVideoCapabilityFlagBitsKHR;
+typedef VkFlags VkVideoCapabilityFlagsKHR;
+
+typedef enum VkVideoSessionCreateFlagBitsKHR {
+ VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0x00000001,
+ VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkVideoSessionCreateFlagBitsKHR;
+typedef VkFlags VkVideoSessionCreateFlagsKHR;
+typedef VkFlags VkVideoSessionParametersCreateFlagsKHR;
+typedef VkFlags VkVideoBeginCodingFlagsKHR;
+typedef VkFlags VkVideoEndCodingFlagsKHR;
+
+typedef enum VkVideoCodingControlFlagBitsKHR {
+ VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 0x00000001,
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+ VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 0x00000002,
+#endif
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+ VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR = 0x00000004,
+#endif
+ VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkVideoCodingControlFlagBitsKHR;
+typedef VkFlags VkVideoCodingControlFlagsKHR;
+typedef struct VkQueueFamilyQueryResultStatusPropertiesKHR {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 queryResultStatusSupport;
+} VkQueueFamilyQueryResultStatusPropertiesKHR;
+
+typedef struct VkQueueFamilyVideoPropertiesKHR {
+ VkStructureType sType;
+ void* pNext;
+ VkVideoCodecOperationFlagsKHR videoCodecOperations;
+} VkQueueFamilyVideoPropertiesKHR;
+
+typedef struct VkVideoProfileInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ VkVideoCodecOperationFlagBitsKHR videoCodecOperation;
+ VkVideoChromaSubsamplingFlagsKHR chromaSubsampling;
+ VkVideoComponentBitDepthFlagsKHR lumaBitDepth;
+ VkVideoComponentBitDepthFlagsKHR chromaBitDepth;
+} VkVideoProfileInfoKHR;
+
+typedef struct VkVideoProfileListInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t profileCount;
+ const VkVideoProfileInfoKHR* pProfiles;
+} VkVideoProfileListInfoKHR;
+
+typedef struct VkVideoCapabilitiesKHR {
+ VkStructureType sType;
+ void* pNext;
+ VkVideoCapabilityFlagsKHR flags;
+ VkDeviceSize minBitstreamBufferOffsetAlignment;
+ VkDeviceSize minBitstreamBufferSizeAlignment;
+ VkExtent2D pictureAccessGranularity;
+ VkExtent2D minCodedExtent;
+ VkExtent2D maxCodedExtent;
+ uint32_t maxDpbSlots;
+ uint32_t maxActiveReferencePictures;
+ VkExtensionProperties stdHeaderVersion;
+} VkVideoCapabilitiesKHR;
+
+typedef struct VkPhysicalDeviceVideoFormatInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ VkImageUsageFlags imageUsage;
+} VkPhysicalDeviceVideoFormatInfoKHR;
+
+typedef struct VkVideoFormatPropertiesKHR {
+ VkStructureType sType;
+ void* pNext;
+ VkFormat format;
+ VkComponentMapping componentMapping;
+ VkImageCreateFlags imageCreateFlags;
+ VkImageType imageType;
+ VkImageTiling imageTiling;
+ VkImageUsageFlags imageUsageFlags;
+} VkVideoFormatPropertiesKHR;
+
+typedef struct VkVideoPictureResourceInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ VkOffset2D codedOffset;
+ VkExtent2D codedExtent;
+ uint32_t baseArrayLayer;
+ VkImageView imageViewBinding;
+} VkVideoPictureResourceInfoKHR;
+
+typedef struct VkVideoReferenceSlotInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ int32_t slotIndex;
+ const VkVideoPictureResourceInfoKHR* pPictureResource;
+} VkVideoReferenceSlotInfoKHR;
+
+typedef struct VkVideoSessionMemoryRequirementsKHR {
+ VkStructureType sType;
+ void* pNext;
+ uint32_t memoryBindIndex;
+ VkMemoryRequirements memoryRequirements;
+} VkVideoSessionMemoryRequirementsKHR;
+
+typedef struct VkBindVideoSessionMemoryInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t memoryBindIndex;
+ VkDeviceMemory memory;
+ VkDeviceSize memoryOffset;
+ VkDeviceSize memorySize;
+} VkBindVideoSessionMemoryInfoKHR;
+
+typedef struct VkVideoSessionCreateInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t queueFamilyIndex;
+ VkVideoSessionCreateFlagsKHR flags;
+ const VkVideoProfileInfoKHR* pVideoProfile;
+ VkFormat pictureFormat;
+ VkExtent2D maxCodedExtent;
+ VkFormat referencePictureFormat;
+ uint32_t maxDpbSlots;
+ uint32_t maxActiveReferencePictures;
+ const VkExtensionProperties* pStdHeaderVersion;
+} VkVideoSessionCreateInfoKHR;
+
+typedef struct VkVideoSessionParametersCreateInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ VkVideoSessionParametersCreateFlagsKHR flags;
+ VkVideoSessionParametersKHR videoSessionParametersTemplate;
+ VkVideoSessionKHR videoSession;
+} VkVideoSessionParametersCreateInfoKHR;
+
+typedef struct VkVideoSessionParametersUpdateInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t updateSequenceCount;
+} VkVideoSessionParametersUpdateInfoKHR;
+
+typedef struct VkVideoBeginCodingInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ VkVideoBeginCodingFlagsKHR flags;
+ VkVideoSessionKHR videoSession;
+ VkVideoSessionParametersKHR videoSessionParameters;
+ uint32_t referenceSlotCount;
+ const VkVideoReferenceSlotInfoKHR* pReferenceSlots;
+} VkVideoBeginCodingInfoKHR;
+
+typedef struct VkVideoEndCodingInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ VkVideoEndCodingFlagsKHR flags;
+} VkVideoEndCodingInfoKHR;
+
+typedef struct VkVideoCodingControlInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ VkVideoCodingControlFlagsKHR flags;
+} VkVideoCodingControlInfoKHR;
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)(VkPhysicalDevice physicalDevice, const VkVideoProfileInfoKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities);
+typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionKHR)(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession);
+typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionKHR)(VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator);
+typedef VkResult (VKAPI_PTR *PFN_vkGetVideoSessionMemoryRequirementsKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pMemoryRequirementsCount, VkVideoSessionMemoryRequirementsKHR* pMemoryRequirements);
+typedef VkResult (VKAPI_PTR *PFN_vkBindVideoSessionMemoryKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t bindSessionMemoryInfoCount, const VkBindVideoSessionMemoryInfoKHR* pBindSessionMemoryInfos);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionParametersKHR)(VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters);
+typedef VkResult (VKAPI_PTR *PFN_vkUpdateVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
+typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator);
+typedef void (VKAPI_PTR *PFN_vkCmdBeginVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdEndVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdControlVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoCapabilitiesKHR(
+ VkPhysicalDevice physicalDevice,
+ const VkVideoProfileInfoKHR* pVideoProfile,
+ VkVideoCapabilitiesKHR* pCapabilities);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoFormatPropertiesKHR(
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo,
+ uint32_t* pVideoFormatPropertyCount,
+ VkVideoFormatPropertiesKHR* pVideoFormatProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionKHR(
+ VkDevice device,
+ const VkVideoSessionCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkVideoSessionKHR* pVideoSession);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionKHR(
+ VkDevice device,
+ VkVideoSessionKHR videoSession,
+ const VkAllocationCallbacks* pAllocator);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetVideoSessionMemoryRequirementsKHR(
+ VkDevice device,
+ VkVideoSessionKHR videoSession,
+ uint32_t* pMemoryRequirementsCount,
+ VkVideoSessionMemoryRequirementsKHR* pMemoryRequirements);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkBindVideoSessionMemoryKHR(
+ VkDevice device,
+ VkVideoSessionKHR videoSession,
+ uint32_t bindSessionMemoryInfoCount,
+ const VkBindVideoSessionMemoryInfoKHR* pBindSessionMemoryInfos);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionParametersKHR(
+ VkDevice device,
+ const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkVideoSessionParametersKHR* pVideoSessionParameters);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkUpdateVideoSessionParametersKHR(
+ VkDevice device,
+ VkVideoSessionParametersKHR videoSessionParameters,
+ const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionParametersKHR(
+ VkDevice device,
+ VkVideoSessionParametersKHR videoSessionParameters,
+ const VkAllocationCallbacks* pAllocator);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdBeginVideoCodingKHR(
+ VkCommandBuffer commandBuffer,
+ const VkVideoBeginCodingInfoKHR* pBeginInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdEndVideoCodingKHR(
+ VkCommandBuffer commandBuffer,
+ const VkVideoEndCodingInfoKHR* pEndCodingInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdControlVideoCodingKHR(
+ VkCommandBuffer commandBuffer,
+ const VkVideoCodingControlInfoKHR* pCodingControlInfo);
+#endif
+
+
+#define VK_KHR_video_decode_queue 1
+#define VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION 7
+#define VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME "VK_KHR_video_decode_queue"
+
+typedef enum VkVideoDecodeCapabilityFlagBitsKHR {
+ VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 0x00000001,
+ VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 0x00000002,
+ VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkVideoDecodeCapabilityFlagBitsKHR;
+typedef VkFlags VkVideoDecodeCapabilityFlagsKHR;
+
+typedef enum VkVideoDecodeUsageFlagBitsKHR {
+ VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0,
+ VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 0x00000001,
+ VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 0x00000002,
+ VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 0x00000004,
+ VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkVideoDecodeUsageFlagBitsKHR;
+typedef VkFlags VkVideoDecodeUsageFlagsKHR;
+typedef VkFlags VkVideoDecodeFlagsKHR;
+typedef struct VkVideoDecodeCapabilitiesKHR {
+ VkStructureType sType;
+ void* pNext;
+ VkVideoDecodeCapabilityFlagsKHR flags;
+} VkVideoDecodeCapabilitiesKHR;
+
+typedef struct VkVideoDecodeUsageInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ VkVideoDecodeUsageFlagsKHR videoUsageHints;
+} VkVideoDecodeUsageInfoKHR;
+
+typedef struct VkVideoDecodeInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ VkVideoDecodeFlagsKHR flags;
+ VkBuffer srcBuffer;
+ VkDeviceSize srcBufferOffset;
+ VkDeviceSize srcBufferRange;
+ VkVideoPictureResourceInfoKHR dstPictureResource;
+ const VkVideoReferenceSlotInfoKHR* pSetupReferenceSlot;
+ uint32_t referenceSlotCount;
+ const VkVideoReferenceSlotInfoKHR* pReferenceSlots;
+} VkVideoDecodeInfoKHR;
+
+typedef void (VKAPI_PTR *PFN_vkCmdDecodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pDecodeInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdDecodeVideoKHR(
+ VkCommandBuffer commandBuffer,
+ const VkVideoDecodeInfoKHR* pDecodeInfo);
+#endif
+
+
+#define VK_KHR_video_decode_h264 1
+#include "vk_video/vulkan_video_codec_h264std.h"
+#include "vk_video/vulkan_video_codec_h264std_decode.h"
+#define VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION 8
+#define VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME "VK_KHR_video_decode_h264"
+
+typedef enum VkVideoDecodeH264PictureLayoutFlagBitsKHR {
+ VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0,
+ VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 0x00000001,
+ VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 0x00000002,
+ VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkVideoDecodeH264PictureLayoutFlagBitsKHR;
+typedef VkFlags VkVideoDecodeH264PictureLayoutFlagsKHR;
+typedef struct VkVideoDecodeH264ProfileInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ StdVideoH264ProfileIdc stdProfileIdc;
+ VkVideoDecodeH264PictureLayoutFlagBitsKHR pictureLayout;
+} VkVideoDecodeH264ProfileInfoKHR;
+
+typedef struct VkVideoDecodeH264CapabilitiesKHR {
+ VkStructureType sType;
+ void* pNext;
+ StdVideoH264LevelIdc maxLevelIdc;
+ VkOffset2D fieldOffsetGranularity;
+} VkVideoDecodeH264CapabilitiesKHR;
+
+typedef struct VkVideoDecodeH264SessionParametersAddInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t stdSPSCount;
+ const StdVideoH264SequenceParameterSet* pStdSPSs;
+ uint32_t stdPPSCount;
+ const StdVideoH264PictureParameterSet* pStdPPSs;
+} VkVideoDecodeH264SessionParametersAddInfoKHR;
+
+typedef struct VkVideoDecodeH264SessionParametersCreateInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t maxStdSPSCount;
+ uint32_t maxStdPPSCount;
+ const VkVideoDecodeH264SessionParametersAddInfoKHR* pParametersAddInfo;
+} VkVideoDecodeH264SessionParametersCreateInfoKHR;
+
+typedef struct VkVideoDecodeH264PictureInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ const StdVideoDecodeH264PictureInfo* pStdPictureInfo;
+ uint32_t sliceCount;
+ const uint32_t* pSliceOffsets;
+} VkVideoDecodeH264PictureInfoKHR;
+
+typedef struct VkVideoDecodeH264DpbSlotInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ const StdVideoDecodeH264ReferenceInfo* pStdReferenceInfo;
+} VkVideoDecodeH264DpbSlotInfoKHR;
+
+
+
#define VK_KHR_dynamic_rendering 1
#define VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION 1
#define VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME "VK_KHR_dynamic_rendering"
@@ -9058,6 +9355,59 @@ typedef struct VkPhysicalDeviceShaderClockFeaturesKHR {
+#define VK_KHR_video_decode_h265 1
+#include "vk_video/vulkan_video_codec_h265std.h"
+#include "vk_video/vulkan_video_codec_h265std_decode.h"
+#define VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION 7
+#define VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME "VK_KHR_video_decode_h265"
+typedef struct VkVideoDecodeH265ProfileInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ StdVideoH265ProfileIdc stdProfileIdc;
+} VkVideoDecodeH265ProfileInfoKHR;
+
+typedef struct VkVideoDecodeH265CapabilitiesKHR {
+ VkStructureType sType;
+ void* pNext;
+ StdVideoH265LevelIdc maxLevelIdc;
+} VkVideoDecodeH265CapabilitiesKHR;
+
+typedef struct VkVideoDecodeH265SessionParametersAddInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t stdVPSCount;
+ const StdVideoH265VideoParameterSet* pStdVPSs;
+ uint32_t stdSPSCount;
+ const StdVideoH265SequenceParameterSet* pStdSPSs;
+ uint32_t stdPPSCount;
+ const StdVideoH265PictureParameterSet* pStdPPSs;
+} VkVideoDecodeH265SessionParametersAddInfoKHR;
+
+typedef struct VkVideoDecodeH265SessionParametersCreateInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t maxStdVPSCount;
+ uint32_t maxStdSPSCount;
+ uint32_t maxStdPPSCount;
+ const VkVideoDecodeH265SessionParametersAddInfoKHR* pParametersAddInfo;
+} VkVideoDecodeH265SessionParametersCreateInfoKHR;
+
+typedef struct VkVideoDecodeH265PictureInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ StdVideoDecodeH265PictureInfo* pStdPictureInfo;
+ uint32_t sliceSegmentCount;
+ const uint32_t* pSliceSegmentOffsets;
+} VkVideoDecodeH265PictureInfoKHR;
+
+typedef struct VkVideoDecodeH265DpbSlotInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ const StdVideoDecodeH265ReferenceInfo* pStdReferenceInfo;
+} VkVideoDecodeH265DpbSlotInfoKHR;
+
+
+
#define VK_KHR_global_priority 1
#define VK_MAX_GLOBAL_PRIORITY_SIZE_KHR 16U
#define VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION 1
@@ -15073,6 +15423,41 @@ VKAPI_ATTR void VKAPI_CALL vkGetMicromapBuildSizesEXT(
#define VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME "VK_EXT_load_store_op_none"
+#define VK_HUAWEI_cluster_culling_shader 1
+#define VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION 1
+#define VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME "VK_HUAWEI_cluster_culling_shader"
+typedef struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 clustercullingShader;
+ VkBool32 multiviewClusterCullingShader;
+} VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI;
+
+typedef struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
+ VkStructureType sType;
+ void* pNext;
+ uint32_t maxWorkGroupCount[3];
+ uint32_t maxWorkGroupSize[3];
+ uint32_t maxOutputClusterCount;
+} VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI;
+
+typedef void (VKAPI_PTR *PFN_vkCmdDrawClusterHUAWEI)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
+typedef void (VKAPI_PTR *PFN_vkCmdDrawClusterIndirectHUAWEI)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawClusterHUAWEI(
+ VkCommandBuffer commandBuffer,
+ uint32_t groupCountX,
+ uint32_t groupCountY,
+ uint32_t groupCountZ);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawClusterIndirectHUAWEI(
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset);
+#endif
+
+
#define VK_EXT_border_color_swizzle 1
#define VK_EXT_BORDER_COLOR_SWIZZLE_SPEC_VERSION 1
#define VK_EXT_BORDER_COLOR_SWIZZLE_EXTENSION_NAME "VK_EXT_border_color_swizzle"
@@ -16018,6 +16403,17 @@ typedef struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM {
+#define VK_EXT_pipeline_library_group_handles 1
+#define VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION 1
+#define VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME "VK_EXT_pipeline_library_group_handles"
+typedef struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 pipelineLibraryGroupHandles;
+} VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT;
+
+
+
#define VK_KHR_acceleration_structure 1
#define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 13
#define VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME "VK_KHR_acceleration_structure"
diff --git a/modules/lwjgl/vulkan/src/main/c/vulkan/vulkan_directfb.h b/modules/lwjgl/vulkan/src/main/c/vulkan/vulkan_directfb.h
new file mode 100644
index 0000000000..ab3504efaf
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/main/c/vulkan/vulkan_directfb.h
@@ -0,0 +1,54 @@
+#ifndef VULKAN_DIRECTFB_H_
+#define VULKAN_DIRECTFB_H_ 1
+
+/*
+** Copyright 2015-2022 The Khronos Group Inc.
+**
+** SPDX-License-Identifier: Apache-2.0
+*/
+
+/*
+** This header is generated from the Khronos Vulkan XML API Registry.
+**
+*/
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+#define VK_EXT_directfb_surface 1
+#define VK_EXT_DIRECTFB_SURFACE_SPEC_VERSION 1
+#define VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME "VK_EXT_directfb_surface"
+typedef VkFlags VkDirectFBSurfaceCreateFlagsEXT;
+typedef struct VkDirectFBSurfaceCreateInfoEXT {
+ VkStructureType sType;
+ const void* pNext;
+ VkDirectFBSurfaceCreateFlagsEXT flags;
+ IDirectFB* dfb;
+ IDirectFBSurface* surface;
+} VkDirectFBSurfaceCreateInfoEXT;
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateDirectFBSurfaceEXT)(VkInstance instance, const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, IDirectFB* dfb);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateDirectFBSurfaceEXT(
+ VkInstance instance,
+ const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceDirectFBPresentationSupportEXT(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ IDirectFB* dfb);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/modules/lwjgl/vulkan/src/main/c/vulkan/vulkan_xcb.h b/modules/lwjgl/vulkan/src/main/c/vulkan/vulkan_xcb.h
new file mode 100644
index 0000000000..68e61b88f0
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/main/c/vulkan/vulkan_xcb.h
@@ -0,0 +1,55 @@
+#ifndef VULKAN_XCB_H_
+#define VULKAN_XCB_H_ 1
+
+/*
+** Copyright 2015-2022 The Khronos Group Inc.
+**
+** SPDX-License-Identifier: Apache-2.0
+*/
+
+/*
+** This header is generated from the Khronos Vulkan XML API Registry.
+**
+*/
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+#define VK_KHR_xcb_surface 1
+#define VK_KHR_XCB_SURFACE_SPEC_VERSION 6
+#define VK_KHR_XCB_SURFACE_EXTENSION_NAME "VK_KHR_xcb_surface"
+typedef VkFlags VkXcbSurfaceCreateFlagsKHR;
+typedef struct VkXcbSurfaceCreateInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ VkXcbSurfaceCreateFlagsKHR flags;
+ xcb_connection_t* connection;
+ xcb_window_t window;
+} VkXcbSurfaceCreateInfoKHR;
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR(
+ VkInstance instance,
+ const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXcbPresentationSupportKHR(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ xcb_connection_t* connection,
+ xcb_visualid_t visual_id);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/Custom.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/Custom.kt
index cbb2fd561a..c52086804d 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/Custom.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/Custom.kt
@@ -45,7 +45,7 @@ fun templateCustomization() {
IntConstant(
"The Vulkan registry version used to generate the LWJGL bindings.",
- "HEADER_VERSION".."231"
+ "HEADER_VERSION".."240"
)
LongConstant(
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/ExtensionTypes.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/ExtensionTypes.kt
index f05c7e68c9..1b8b82762d 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/ExtensionTypes.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/ExtensionTypes.kt
@@ -63,7 +63,7 @@ val VkVideoEncodeH265OutputModeFlagBitsEXT = "VkVideoEncodeH265OutputModeFlagBit
val VkVideoEncodeH265CtbSizeFlagBitsEXT = "VkVideoEncodeH265CtbSizeFlagBitsEXT".enumType
val VkVideoEncodeH265TransformBlockSizeFlagBitsEXT = "VkVideoEncodeH265TransformBlockSizeFlagBitsEXT".enumType
val VkVideoEncodeH265RateControlStructureEXT = "VkVideoEncodeH265RateControlStructureEXT".enumType
-val VkVideoDecodeH264PictureLayoutFlagBitsEXT = "VkVideoDecodeH264PictureLayoutFlagBitsEXT".enumType
+val VkVideoDecodeH264PictureLayoutFlagBitsKHR = "VkVideoDecodeH264PictureLayoutFlagBitsKHR".enumType
val VkShaderInfoTypeAMD = "VkShaderInfoTypeAMD".enumType
val VkExternalMemoryHandleTypeFlagBitsNV = "VkExternalMemoryHandleTypeFlagBitsNV".enumType
val VkExternalMemoryFeatureFlagBitsNV = "VkExternalMemoryFeatureFlagBitsNV".enumType
@@ -177,7 +177,9 @@ val VkDisplayModeCreateFlagsKHR = typedef(VkFlags, "VkDisplayModeCreateFlagsKHR"
val VkDisplayPlaneAlphaFlagsKHR = typedef(VkFlags, "VkDisplayPlaneAlphaFlagsKHR")
val VkDisplaySurfaceCreateFlagsKHR = typedef(VkFlags, "VkDisplaySurfaceCreateFlagsKHR")
val VkXlibSurfaceCreateFlagsKHR = typedef(VkFlags, "VkXlibSurfaceCreateFlagsKHR")
+val VkXcbSurfaceCreateFlagsKHR = typedef(VkFlags, "VkXcbSurfaceCreateFlagsKHR")
val VkWaylandSurfaceCreateFlagsKHR = typedef(VkFlags, "VkWaylandSurfaceCreateFlagsKHR")
+val VkAndroidSurfaceCreateFlagsKHR = typedef(VkFlags, "VkAndroidSurfaceCreateFlagsKHR")
val VkWin32SurfaceCreateFlagsKHR = typedef(VkFlags, "VkWin32SurfaceCreateFlagsKHR")
val VkDebugReportFlagsEXT = typedef(VkFlags, "VkDebugReportFlagsEXT")
val VkVideoCodecOperationFlagsKHR = typedef(VkFlags, "VkVideoCodecOperationFlagsKHR")
@@ -201,7 +203,7 @@ val VkVideoEncodeH265InputModeFlagsEXT = typedef(VkFlags, "VkVideoEncodeH265Inpu
val VkVideoEncodeH265OutputModeFlagsEXT = typedef(VkFlags, "VkVideoEncodeH265OutputModeFlagsEXT")
val VkVideoEncodeH265CtbSizeFlagsEXT = typedef(VkFlags, "VkVideoEncodeH265CtbSizeFlagsEXT")
val VkVideoEncodeH265TransformBlockSizeFlagsEXT = typedef(VkFlags, "VkVideoEncodeH265TransformBlockSizeFlagsEXT")
-val VkVideoDecodeH264PictureLayoutFlagsEXT = typedef(VkFlags, "VkVideoDecodeH264PictureLayoutFlagsEXT")
+val VkVideoDecodeH264PictureLayoutFlagsKHR = typedef(VkFlags, "VkVideoDecodeH264PictureLayoutFlagsKHR")
val VkRenderingFlagsKHR = typedef(VkFlags, "VkRenderingFlagsKHR")
val VkExternalMemoryHandleTypeFlagsNV = typedef(VkFlags, "VkExternalMemoryHandleTypeFlagsNV")
val VkExternalMemoryFeatureFlagsNV = typedef(VkFlags, "VkExternalMemoryFeatureFlagsNV")
@@ -272,6 +274,7 @@ val VkAccelerationStructureMotionInfoFlagsNV = typedef(VkFlags, "VkAccelerationS
val VkAccelerationStructureMotionInstanceFlagsNV = typedef(VkFlags, "VkAccelerationStructureMotionInstanceFlagsNV")
val VkImageCompressionFlagsEXT = typedef(VkFlags, "VkImageCompressionFlagsEXT")
val VkImageCompressionFixedRateFlagsEXT = typedef(VkFlags, "VkImageCompressionFixedRateFlagsEXT")
+val VkDirectFBSurfaceCreateFlagsEXT = typedef(VkFlags, "VkDirectFBSurfaceCreateFlagsEXT")
val VkDeviceAddressBindingFlagsEXT = typedef(VkFlags, "VkDeviceAddressBindingFlagsEXT")
val VkFormatFeatureFlags2KHR = typedef(VkFlags64, "VkFormatFeatureFlags2KHR")
val VkBuildMicromapFlagsEXT = typedef(VkFlags, "VkBuildMicromapFlagsEXT")
@@ -1077,6 +1080,35 @@ val VkXlibSurfaceCreateInfoKHR = struct(Module.VULKAN, "VkXlibSurfaceCreateInfoK
Window("window", "an Xlib {@code Window} to associate the surface with.")
}
+val VkXcbSurfaceCreateInfoKHR = struct(Module.VULKAN, "VkXcbSurfaceCreateInfoKHR") {
+ documentation =
+ """
+ Structure specifying parameters of a newly created Xcb surface object.
+
+ Valid Usage
+
+ - {@code connection} must point to a valid X11 {@code xcb_connection_t}
+ - {@code window} must be a valid X11 {@code xcb_window_t}
+
+
+ Valid Usage (Implicit)
+
+ - {@code sType} must be #STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR
+ - {@code pNext} must be {@code NULL}
+ - {@code flags} must be 0
+
+
+ See Also
+ #CreateXcbSurfaceKHR()
+ """
+
+ Expression("#STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR")..VkStructureType("sType", "the type of this structure.")
+ nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
+ VkXcbSurfaceCreateFlagsKHR("flags", "reserved for future use.")
+ nullable..xcb_connection_t.p("connection", "a pointer to an {@code xcb_connection_t} to the X server.")
+ xcb_window_t("window", "the {@code xcb_window_t} for the X11 window to associate the surface with.")
+}
+
val VkWaylandSurfaceCreateInfoKHR = struct(Module.VULKAN, "VkWaylandSurfaceCreateInfoKHR") {
javaImport("org.lwjgl.system.linux.*")
documentation =
@@ -1107,6 +1139,33 @@ val VkWaylandSurfaceCreateInfoKHR = struct(Module.VULKAN, "VkWaylandSurfaceCreat
nullable..wl_surface.p("surface", "see {@code display}")
}
+val VkAndroidSurfaceCreateInfoKHR = struct(Module.VULKAN, "VkAndroidSurfaceCreateInfoKHR") {
+ documentation =
+ """
+ Structure specifying parameters of a newly created Android surface object.
+
+ Valid Usage
+
+ - {@code window} must point to a valid Android {@code ANativeWindow}
+
+
+ Valid Usage (Implicit)
+
+ - {@code sType} must be #STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR
+ - {@code pNext} must be {@code NULL}
+ - {@code flags} must be 0
+
+
+ See Also
+ #CreateAndroidSurfaceKHR()
+ """
+
+ Expression("#STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR")..VkStructureType("sType", "the type of this structure.")
+ nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
+ VkAndroidSurfaceCreateFlagsKHR("flags", "reserved for future use.")
+ nullable..ANativeWindow.p("window", "a pointer to the {@code ANativeWindow} to associate the surface with.")
+}
+
val VkWin32SurfaceCreateInfoKHR = struct(Module.VULKAN, "VkWin32SurfaceCreateInfoKHR") {
javaImport("org.lwjgl.system.windows.*")
documentation =
@@ -1284,6 +1343,9 @@ val VkQueueFamilyQueryResultStatusPropertiesKHR = struct(Module.VULKAN, "VkQueue
"""
Structure specifying support for result status query.
+ Description
+ If this structure is included in the {@code pNext} chain of the ##VkQueueFamilyProperties2 structure passed to #GetPhysicalDeviceQueueFamilyProperties2(), then it is filled with information about whether result status queries are supported by the specified queue family.
+
Valid Usage (Implicit)
- {@code sType} must be #STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR
@@ -1298,7 +1360,10 @@ val VkQueueFamilyQueryResultStatusPropertiesKHR = struct(Module.VULKAN, "VkQueue
val VkQueueFamilyVideoPropertiesKHR = struct(Module.VULKAN, "VkQueueFamilyVideoPropertiesKHR", mutable = false) {
documentation =
"""
- Structure specifying support for video codec operations.
+ Structure describing video codec operations supported by a queue family.
+
+ Description
+ If this structure is included in the {@code pNext} chain of the ##VkQueueFamilyProperties2 structure passed to #GetPhysicalDeviceQueueFamilyProperties2(), then it is filled with the set of video codec operations supported by the specified queue family.
Valid Usage (Implicit)
@@ -1308,22 +1373,26 @@ val VkQueueFamilyVideoPropertiesKHR = struct(Module.VULKAN, "VkQueueFamilyVideoP
Expression("#STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR")..VkStructureType("sType", "the type of this structure.").mutable()
nullable..opaque_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.").mutable()
- VkVideoCodecOperationFlagsKHR("videoCodecOperations", "a bitmask of {@code VkVideoCodecOperationFlagBitsKHR} specifying supported video codec operation(s).")
+ VkVideoCodecOperationFlagsKHR("videoCodecOperations", "a bitmask of {@code VkVideoCodecOperationFlagBitsKHR} that indicates the set of video codec operations supported by the queue family.")
}
val VkVideoProfileInfoKHR = struct(Module.VULKAN, "VkVideoProfileInfoKHR") {
documentation =
"""
- Structure specifying the codec video profile.
+ Structure specifying a video profile.
Description
- When a ##VkVideoProfileInfoKHR structure is specified through the {@code pProfiles} member of an ##VkVideoProfileListInfoKHR structure in the {@code pNext} chain of the input parameter of a query command such as #GetPhysicalDeviceVideoCapabilitiesKHR(), #GetPhysicalDeviceVideoFormatPropertiesKHR(), or #GetPhysicalDeviceImageFormatProperties2(), the following error codes indicate specific causes of the failure of the query operation:
+ Video profiles are provided as input to video capability queries such as #GetPhysicalDeviceVideoCapabilitiesKHR() or #GetPhysicalDeviceVideoFormatPropertiesKHR(), as well as when creating resources to be used by video coding operations such as images, buffers, query pools, and video sessions.
+
+ The full description of a video profile is specified by an instance of this structure, and the codec-specific and auxiliary structures provided in its {@code pNext} chain.
+
+ When this structure is specified as an input parameter to #GetPhysicalDeviceVideoCapabilitiesKHR(), or through the {@code pProfiles} member of an ##VkVideoProfileListInfoKHR structure in the {@code pNext} chain of the input parameter of a query command such as #GetPhysicalDeviceVideoFormatPropertiesKHR() or #GetPhysicalDeviceImageFormatProperties2(), the following error codes indicate specific causes of the failure of the query operation:
- - #ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR The requested video picture layout (e.g. through the {@code pictureLayout} member of a ##VkVideoDecodeH264ProfileInfoEXT structure included in the {@code pNext} chain of ##VkVideoProfileInfoKHR) is not supported.
- - #ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR A video profile operation specified by {@code videoCodecOperation} is not supported.
- - #ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR Format parameters specified by {@code chromaSubsampling}, {@code lumaBitDepth}, or {@code chromaBitDepth} are not supported.
- - #ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR Codec-specific parameters corresponding to the {@code videoCodecOperation} are not provided through the {@code pNext} chain of ##VkVideoProfileInfoKHR, or the specified parameters are not supported.
+ - #ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR indicates that the requested video picture layout (e.g. through the {@code pictureLayout} member of a ##VkVideoDecodeH264ProfileInfoKHR structure included in the {@code pNext} chain of ##VkVideoProfileInfoKHR) is not supported.
+ - #ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR indicates that a video profile operation specified by {@code videoCodecOperation} is not supported.
+ - #ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR indicates that video format parameters specified by {@code chromaSubsampling}, {@code lumaBitDepth}, or {@code chromaBitDepth} are not supported.
+ - #ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR indicates that the codec-specific parameters corresponding to the video codec operation are not supported.
Valid Usage
@@ -1331,6 +1400,10 @@ val VkVideoProfileInfoKHR = struct(Module.VULKAN, "VkVideoProfileInfoKHR") {
- {@code chromaSubsampling} must have a single bit set
- {@code lumaBitDepth} must have a single bit set
- If {@code chromaSubsampling} is not #VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR, then {@code chromaBitDepth} must have a single bit set
+ - If {@code videoCodecOperation} is #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then the {@code pNext} chain must include a ##VkVideoDecodeH264ProfileInfoKHR structure
+ - If {@code videoCodecOperation} is #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the {@code pNext} chain must include a ##VkVideoDecodeH265ProfileInfoKHR structure
+ - If {@code videoCodecOperation} is #VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT, then the {@code pNext} chain must include a ##VkVideoEncodeH264ProfileInfoEXT structure
+ - If {@code videoCodecOperation} is #VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT, then the {@code pNext} chain must include a ##VkVideoEncodeH265ProfileInfoEXT structure
Valid Usage (Implicit)
@@ -1350,7 +1423,7 @@ val VkVideoProfileInfoKHR = struct(Module.VULKAN, "VkVideoProfileInfoKHR") {
Expression("#STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR")..VkStructureType("sType", "the type of this structure.")
PointerSetter(
- "VkVideoDecodeH264ProfileInfoEXT", "VkVideoDecodeH265ProfileInfoEXT", "VkVideoDecodeUsageInfoKHR", "VkVideoEncodeH264ProfileInfoEXT", "VkVideoEncodeH265ProfileInfoEXT", "VkVideoEncodeUsageInfoKHR",
+ "VkVideoDecodeH264ProfileInfoKHR", "VkVideoDecodeH265ProfileInfoKHR", "VkVideoDecodeUsageInfoKHR", "VkVideoEncodeH264ProfileInfoEXT", "VkVideoEncodeH265ProfileInfoEXT", "VkVideoEncodeUsageInfoKHR",
prepend = true
)..nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
VkVideoCodecOperationFlagBitsKHR("videoCodecOperation", "a {@code VkVideoCodecOperationFlagBitsKHR} value specifying a video codec operation.")
@@ -1362,14 +1435,18 @@ val VkVideoProfileInfoKHR = struct(Module.VULKAN, "VkVideoProfileInfoKHR") {
val VkVideoProfileListInfoKHR = struct(Module.VULKAN, "VkVideoProfileListInfoKHR") {
documentation =
"""
- Structure enumerating the video profiles.
+ Structure specifying one or more video profiles used in conjunction.
Description
- Video transcoding is an example of a use case that necessitates numerous profiles. When the application provides one or more video decode and encode profiles in the list of profiles, the implementation ensures that the video formats and parameters reported produce video resources suitable for the transcoding use cases without the need for manual transformation.
+ Note:
+ Video transcoding is an example of a use case that necessitates the specification of multiple profiles in various contexts.
+
+
+ When the application provides a video decode profile and one or more video encode profiles in the profile list, the implementation ensures that any capabilitities returned or resources created are suitable for the video transcoding use cases without the need for manual data transformations.
Valid Usage
- - If the {@code pProfiles} list contains more than one ##VkVideoProfileInfoKHR entry, then it must not contain more than one entry whose {@code videoCodecOperation} member specifies a decode operation
+ - {@code pProfiles} must not contain more than one element whose {@code videoCodecOperation} member specifies a decode operation
Valid Usage (Implicit)
@@ -1384,19 +1461,24 @@ val VkVideoProfileListInfoKHR = struct(Module.VULKAN, "VkVideoProfileListInfoKHR
Expression("#STRUCTURE_TYPE_VIDEO_PROFILE_LIST_INFO_KHR")..VkStructureType("sType", "the type of this structure.")
nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
- AutoSize("pProfiles", optional = true)..uint32_t("profileCount", "an integer which holds the number of video profiles included in {@code pProfiles}.")
- VkVideoProfileInfoKHR.const.p("pProfiles", "a pointer to an array of ##VkVideoProfileInfoKHR structures. Each ##VkVideoProfileInfoKHR structure must chain the corresponding codec-operation specific extension video profile structure.")
+ AutoSize("pProfiles", optional = true)..uint32_t("profileCount", "the number of elements in the {@code pProfiles} array.")
+ VkVideoProfileInfoKHR.const.p("pProfiles", "a pointer to an array of ##VkVideoProfileInfoKHR structures.")
}
val VkVideoCapabilitiesKHR = struct(Module.VULKAN, "VkVideoCapabilitiesKHR", mutable = false) {
documentation =
"""
- Structure specifying parameters of video capabilities.
+ Structure describing general video capabilities for a video profile.
+
+ Description
+ Note:
+ It is common for video compression standards to allow using all reference pictures associated with active DPB slots as active reference pictures, hence for video decode profiles the values returned in {@code maxDpbSlots} and {@code maxActiveReferencePictures} are often equal. Similarly, in case of video decode profiles supporting field pictures the value of {@code maxActiveReferencePictures} often equals maxDpbSlots × 2
.
+
Valid Usage (Implicit)
- {@code sType} must be #STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR
- - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkVideoDecodeCapabilitiesKHR, ##VkVideoDecodeH264CapabilitiesEXT, ##VkVideoDecodeH265CapabilitiesEXT, ##VkVideoEncodeCapabilitiesKHR, ##VkVideoEncodeH264CapabilitiesEXT, or ##VkVideoEncodeH265CapabilitiesEXT
+ - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkVideoDecodeCapabilitiesKHR, ##VkVideoDecodeH264CapabilitiesKHR, ##VkVideoDecodeH265CapabilitiesKHR, ##VkVideoEncodeCapabilitiesKHR, ##VkVideoEncodeH264CapabilitiesEXT, or ##VkVideoEncodeH265CapabilitiesEXT
- The {@code sType} value of each struct in the {@code pNext} chain must be unique
@@ -1406,18 +1488,18 @@ val VkVideoCapabilitiesKHR = struct(Module.VULKAN, "VkVideoCapabilitiesKHR", mut
Expression("#STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR")..VkStructureType("sType", "the type of this structure.").mutable()
PointerSetter(
- "VkVideoDecodeCapabilitiesKHR", "VkVideoDecodeH264CapabilitiesEXT", "VkVideoDecodeH265CapabilitiesEXT", "VkVideoEncodeCapabilitiesKHR", "VkVideoEncodeH264CapabilitiesEXT", "VkVideoEncodeH265CapabilitiesEXT",
+ "VkVideoDecodeCapabilitiesKHR", "VkVideoDecodeH264CapabilitiesKHR", "VkVideoDecodeH265CapabilitiesKHR", "VkVideoEncodeCapabilitiesKHR", "VkVideoEncodeH264CapabilitiesEXT", "VkVideoEncodeH265CapabilitiesEXT",
prepend = true
)..nullable..opaque_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.").mutable()
VkVideoCapabilityFlagsKHR("flags", "a bitmask of {@code VkVideoCapabilityFlagBitsKHR} specifying capability flags.")
- VkDeviceSize("minBitstreamBufferOffsetAlignment", "the minimum alignment for the input or output bitstream buffer offset.")
- VkDeviceSize("minBitstreamBufferSizeAlignment", "the minimum alignment for the input or output bitstream buffer size")
+ VkDeviceSize("minBitstreamBufferOffsetAlignment", "the minimum alignment for bitstream buffer offsets.")
+ VkDeviceSize("minBitstreamBufferSizeAlignment", "the minimum alignment for bitstream buffer range sizes.")
VkExtent2D("pictureAccessGranularity", "the granularity at which image access to video picture resources happen.")
- VkExtent2D("minCodedExtent", "the minimum width and height of the decoded or encoded video.")
- VkExtent2D("maxCodedExtent", "the maximum width and height of the decoded or encoded video.")
- uint32_t("maxDpbSlots", "the maximum number of DPB Slots supported by the implementation for a single video session instance.")
- uint32_t("maxActiveReferencePictures", "the maximum slots that can be used as Reference Pictures with a single decode or encode operation.")
- VkExtensionProperties("stdHeaderVersion", "a ##VkExtensionProperties structure reporting the Video Std header version supported for the {@code codecOperation} requested in {@code vkGetPhysicalDeviceVideoCapabilitiesKHR}{@code ::pVideoProfile}.")
+ VkExtent2D("minCodedExtent", "the minimum width and height of the coded frames.")
+ VkExtent2D("maxCodedExtent", "the maximum width and height of the coded frames.")
+ uint32_t("maxDpbSlots", "the maximum number of DPB slots supported by a single video session.")
+ uint32_t("maxActiveReferencePictures", "the maximum number of active reference pictures a single video coding operation can use.")
+ VkExtensionProperties("stdHeaderVersion", "a ##VkExtensionProperties structure reporting the Video Std header name and version supported for the video profile.")
}
val VkPhysicalDeviceVideoFormatInfoKHR = struct(Module.VULKAN, "VkPhysicalDeviceVideoFormatInfoKHR") {
@@ -1474,7 +1556,23 @@ val VkVideoFormatPropertiesKHR = struct(Module.VULKAN, "VkVideoFormatPropertiesK
val VkVideoPictureResourceInfoKHR = struct(Module.VULKAN, "VkVideoPictureResourceInfoKHR") {
documentation =
"""
- Structure specifying the picture resources.
+ Structure specifying the parameters of a video picture resource.
+
+ Description
+ The image subresource referred to by such a structure is defined as the image array layer index specified in {@code baseArrayLayer} relative to the image subresource range the image view specified in {@code imageViewBinding} was created with.
+
+ The meaning of the {@code codedOffset} and {@code codedExtent} depends on the command and context the video picture resource is used in, as well as on the used video profile and corresponding codec-specific semantics, as described later.
+
+ A video picture resource is uniquely defined by the image subresource referred to by an instance of this structure, together with the {@code codedOffset} and {@code codedExtent} members that identify the image subregion within the image subresource referenced corresponding to the video picture resource according to the particular codec-specific semantics.
+
+ Accesses to image data within a video picture resource happen at the granularity indicated by ##VkVideoCapabilitiesKHR{@code ::pictureAccessGranularity}, as returned by #GetPhysicalDeviceVideoCapabilitiesKHR() for the used video profile. As a result, given an effective image subregion corresponding to a video picture resource, the actual image subregion accessed may be larger than that as it may include additional padding texels due to the picture access granularity. Any writes performed by video coding operations to such padding texels will result in undefined texel values.
+
+ Two video picture resources match if they refer to the same image subresource and they specify identical {@code codedOffset} and {@code codedExtent} values.
+
+ Valid Usage
+
+ - {@code baseArrayLayer} must be less than the ##VkImageViewCreateInfo{@code ::subresourceRange.layerCount} specified when the image view {@code imageViewBinding} was created
+
Valid Usage (Implicit)
@@ -1489,21 +1587,21 @@ val VkVideoPictureResourceInfoKHR = struct(Module.VULKAN, "VkVideoPictureResourc
Expression("#STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR")..VkStructureType("sType", "the type of this structure.")
nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
- VkOffset2D("codedOffset", "the offset to be used for the picture resource.")
- VkExtent2D("codedExtent", "the extent to be used for the picture resource.")
- uint32_t("baseArrayLayer", "the first array layer to be accessed for the Decode or Encode Operations.")
- VkImageView("imageViewBinding", "a {@code VkImageView} image view representing this picture resource.")
+ VkOffset2D("codedOffset", "the offset in texels of the image subregion to use.")
+ VkExtent2D("codedExtent", "the size in pixels of the coded image data.")
+ uint32_t("baseArrayLayer", "the array layer of the image view specified in {@code imageViewBinding} to use as the video picture resource.")
+ VkImageView("imageViewBinding", "an image view representing the video picture resource.")
}
val VkVideoReferenceSlotInfoKHR = struct(Module.VULKAN, "VkVideoReferenceSlotInfoKHR") {
documentation =
"""
- Structure specifying the reference picture slot.
+ Structure specifying information about a reference picture slot.
Valid Usage (Implicit)
- {@code sType} must be #STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR
- - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkVideoDecodeH264DpbSlotInfoEXT or ##VkVideoDecodeH265DpbSlotInfoEXT
+ - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkVideoDecodeH264DpbSlotInfoKHR or ##VkVideoDecodeH265DpbSlotInfoKHR
- The {@code sType} value of each struct in the {@code pNext} chain must be unique
- If {@code pPictureResource} is not {@code NULL}, {@code pPictureResource} must be a valid pointer to a valid ##VkVideoPictureResourceInfoKHR structure
@@ -1514,17 +1612,17 @@ val VkVideoReferenceSlotInfoKHR = struct(Module.VULKAN, "VkVideoReferenceSlotInf
Expression("#STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR")..VkStructureType("sType", "the type of this structure.")
PointerSetter(
- "VkVideoDecodeH264DpbSlotInfoEXT", "VkVideoDecodeH265DpbSlotInfoEXT",
+ "VkVideoDecodeH264DpbSlotInfoKHR", "VkVideoDecodeH265DpbSlotInfoKHR",
prepend = true
)..nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
- int32_t("slotIndex", "the unique reference slot index used for the encode or decode operation.")
- nullable..VkVideoPictureResourceInfoKHR.const.p("pPictureResource", "a pointer to a ##VkVideoPictureResourceInfoKHR structure describing the picture resource bound to this slot index.")
+ int32_t("slotIndex", "the index of the DPB slot or a negative integer value.")
+ nullable..VkVideoPictureResourceInfoKHR.const.p("pPictureResource", "{@code NULL} or a pointer to a ##VkVideoPictureResourceInfoKHR structure describing the video picture resource associated with the DPB slot index specified by {@code slotIndex}.")
}
val VkVideoSessionMemoryRequirementsKHR = struct(Module.VULKAN, "VkVideoSessionMemoryRequirementsKHR", mutable = false) {
documentation =
"""
- Structure specifying video session memory requirements.
+ Structure describing video session memory requirements.
Valid Usage (Implicit)
@@ -1547,6 +1645,12 @@ val VkBindVideoSessionMemoryInfoKHR = struct(Module.VULKAN, "VkBindVideoSessionM
"""
Structure specifying memory bindings for a video session object.
+ Valid Usage
+
+ - {@code memoryOffset} must be less than the size of {@code memory}
+ - {@code memorySize} must be less than or equal to the size of {@code memory} minus {@code memoryOffset}
+
+
Valid Usage (Implicit)
- {@code sType} must be #STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_KHR
@@ -1560,7 +1664,7 @@ val VkBindVideoSessionMemoryInfoKHR = struct(Module.VULKAN, "VkBindVideoSessionM
Expression("#STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_KHR")..VkStructureType("sType", "the type of this structure.")
nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
- uint32_t("memoryBindIndex", "the index of the memory binding returned in ##VkVideoSessionMemoryRequirementsKHR{@code ::memoryBindIndex} from #GetVideoSessionMemoryRequirementsKHR().")
+ uint32_t("memoryBindIndex", "the memory binding index to bind memory to.")
VkDeviceMemory("memory", "the allocated device memory to be bound to the video session’s memory binding with index {@code memoryBindIndex}.")
VkDeviceSize("memoryOffset", "the start offset of the region of {@code memory} which is to be bound.")
VkDeviceSize("memorySize", "the size in bytes of the region of {@code memory}, starting from {@code memoryOffset} bytes, to be bound.")
@@ -1569,21 +1673,22 @@ val VkBindVideoSessionMemoryInfoKHR = struct(Module.VULKAN, "VkBindVideoSessionM
val VkVideoSessionCreateInfoKHR = struct(Module.VULKAN, "VkVideoSessionCreateInfoKHR") {
documentation =
"""
- Structure specifying parameters of a newly created video decode session.
+ Structure specifying parameters of a newly created video session.
Valid Usage
- - {@code pVideoProfile} must be a pointer to a valid ##VkVideoProfileInfoKHR structure whose {@code pNext} chain must include a valid codec-specific profile structure
- - If Reference Pictures are required for use with the created video session, the {@code maxDpbSlots} must be set to a value bigger than 0
- - {@code maxDpbSlots} cannot exceed the implementation reported ##VkVideoCapabilitiesKHR{@code ::maxDpbSlots}
- - If Reference Pictures are required for use with the created video session, the {@code maxActiveReferencePictures} must be set to a value bigger than 0
- - {@code maxActiveReferencePictures} cannot exceed the implementation reported ##VkVideoCapabilitiesKHR{@code ::maxActiveReferencePictures}
- - {@code maxActiveReferencePictures} cannot exceed the {@code maxDpbSlots}
- - {@code maxCodedExtent} cannot be smaller than ##VkVideoCapabilitiesKHR{@code ::minExtent} and bigger than ##VkVideoCapabilitiesKHR{@code ::maxExtent}
- - If the {@code videoCodecOperation} member of {@code pVideoProfile} specifies a decode operation then {@code referencePicturesFormat} must be one of the supported decode DPB formats as reported by #GetPhysicalDeviceVideoFormatPropertiesKHR() in the {@code format} member of ##VkVideoFormatPropertiesKHR when called with the {@code imageUsage} member of its {@code pVideoFormatInfo} parameter containing #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR, and with a ##VkVideoProfileListInfoKHR structure chained to its {@code pVideoFormatInfo} parameter whose {@code pProfiles} member contains an entry matching {@code pVideoProfile}
- - If the {@code videoCodecOperation} member of {@code pVideoProfile} specifies an encode operation then {@code referencePicturesFormat} must be one of the supported encode DPB formats as reported by #GetPhysicalDeviceVideoFormatPropertiesKHR() in the {@code format} member of ##VkVideoFormatPropertiesKHR when called with the {@code imageUsage} member of its {@code pVideoFormatInfo} parameter containing #IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR, and with a ##VkVideoProfileListInfoKHR structure chained to its {@code pVideoFormatInfo} parameter whose {@code pProfiles} member contains an entry matching {@code pVideoProfile}
- - If the {@code videoCodecOperation} member of {@code pVideoProfile} specifies a decode operation then {@code pictureFormat} must be one of the supported decode output formats as reported by #GetPhysicalDeviceVideoFormatPropertiesKHR() in the {@code format} member of ##VkVideoFormatPropertiesKHR when called with the {@code imageUsage} member of its {@code pVideoFormatInfo} parameter containing #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR, and with a ##VkVideoProfileListInfoKHR structure chained to its {@code pVideoFormatInfo} parameter whose {@code pProfiles} member contains an entry matching {@code pVideoProfile}
- - If the {@code videoCodecOperation} member of {@code pVideoProfile} specifies an encode operation then {@code pictureFormat} must be one of the supported encode input formats as reported by #GetPhysicalDeviceVideoFormatPropertiesKHR() in the {@code format} member of ##VkVideoFormatPropertiesKHR when called with the {@code imageUsage} member of its {@code pVideoFormatInfo} parameter containing #IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR, and with a ##VkVideoProfileListInfoKHR structure chained to its {@code pVideoFormatInfo} parameter whose {@code pProfiles} member contains an entry matching {@code pVideoProfile}
+ - If the {@code protectedMemory} feature is not enabled or if ##VkVideoCapabilitiesKHR{@code ::flags} does not include #VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR, as returned by #GetPhysicalDeviceVideoCapabilitiesKHR() for the video profile specified by {@code pVideoProfile}, then {@code flags} must not include #VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR
+ - {@code pVideoProfile} must be a supported video profile
+ - {@code maxDpbSlots} must be less than or equal to ##VkVideoCapabilitiesKHR{@code ::maxDpbSlots}, as returned by #GetPhysicalDeviceVideoCapabilitiesKHR() for the video profile specified by {@code pVideoProfile}
+ - {@code maxActiveReferencePictures} must be less than or equal to ##VkVideoCapabilitiesKHR{@code ::maxActiveReferencePictures}, as returned by #GetPhysicalDeviceVideoCapabilitiesKHR() for the video profile specified by {@code pVideoProfile}
+ - If either {@code maxDpbSlots} or {@code maxActiveReferencePictures} is 0, then both must be 0
+ - {@code maxCodedExtent} must be between ##VkVideoCapabilitiesKHR{@code ::minCodedExtent} and ##VkVideoCapabilitiesKHR{@code ::maxCodedExtent}, inclusive, as returned by #GetPhysicalDeviceVideoCapabilitiesKHR() for the video profile specified by {@code pVideoProfile}
+ - If {@code pVideoProfile→videoCodecOperation} specifies a decode operation and {@code maxActiveReferencePictures} is greater than 0, then {@code referencePictureFormat} must be one of the supported decode DPB formats, as returned by #GetPhysicalDeviceVideoFormatPropertiesKHR() in ##VkVideoFormatPropertiesKHR{@code ::format} when called with the {@code imageUsage} member of its {@code pVideoFormatInfo} parameter containing #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR, and with a ##VkVideoProfileListInfoKHR structure specified in the {@code pNext} chain of its {@code pVideoFormatInfo} parameter whose {@code pProfiles} member contains an element matching {@code pVideoProfile}
+ - If {@code pVideoProfile→videoCodecOperation} specifies an encode operation and {@code maxActiveReferencePictures} is greater than 0, then {@code referencePictureFormat} must be one of the supported decode DPB formats, as returned by then {@code referencePictureFormat} must be one of the supported encode DPB formats, as returned by #GetPhysicalDeviceVideoFormatPropertiesKHR() in ##VkVideoFormatPropertiesKHR{@code ::format} when called with the {@code imageUsage} member of its {@code pVideoFormatInfo} parameter containing #IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR, and with a ##VkVideoProfileListInfoKHR structure specified in the {@code pNext} chain of its {@code pVideoFormatInfo} parameter whose {@code pProfiles} member contains an element matching {@code pVideoProfile}
+ - If {@code pVideoProfile→videoCodecOperation} specifies a decode operation, then {@code pictureFormat} must be one of the supported decode output formats, as returned by #GetPhysicalDeviceVideoFormatPropertiesKHR() in ##VkVideoFormatPropertiesKHR{@code ::format} when called with the {@code imageUsage} member of its {@code pVideoFormatInfo} parameter containing #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR, and with a ##VkVideoProfileListInfoKHR structure specified in the {@code pNext} chain of its {@code pVideoFormatInfo} parameter whose {@code pProfiles} member contains an element matching {@code pVideoProfile}
+ - If {@code pVideoProfile→videoCodecOperation} specifies an encode operation, then {@code pictureFormat} must be one of the supported encode input formats, as returned by #GetPhysicalDeviceVideoFormatPropertiesKHR() in ##VkVideoFormatPropertiesKHR{@code ::format} when called with the {@code imageUsage} member of its {@code pVideoFormatInfo} parameter containing #IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR, and with a ##VkVideoProfileListInfoKHR structure specified in the {@code pNext} chain of its {@code pVideoFormatInfo} parameter whose {@code pProfiles} member contains an element matching {@code pVideoProfile}
+ - {@code pStdHeaderVersion→extensionName} must match ##VkVideoCapabilitiesKHR{@code ::stdHeaderVersion.extensionName}, as returned by #GetPhysicalDeviceVideoCapabilitiesKHR() for the video profile specified by {@code pVideoProfile}
+ - {@code pStdHeaderVersion→specVersion} must be less than or equal to ##VkVideoCapabilitiesKHR{@code ::stdHeaderVersion.specVersion}, as returned by #GetPhysicalDeviceVideoCapabilitiesKHR() for the video profile specified by {@code pVideoProfile}
Valid Usage (Implicit)
@@ -1603,31 +1708,81 @@ val VkVideoSessionCreateInfoKHR = struct(Module.VULKAN, "VkVideoSessionCreateInf
Expression("#STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR")..VkStructureType("sType", "the type of this structure.")
nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
- uint32_t("queueFamilyIndex", "the queue family of the created video session.")
+ uint32_t("queueFamilyIndex", "the index of the queue family the created video session will be used with.")
VkVideoSessionCreateFlagsKHR("flags", "a bitmask of {@code VkVideoSessionCreateFlagBitsKHR} specifying creation flags.")
- VkVideoProfileInfoKHR.const.p("pVideoProfile", "a pointer to a ##VkVideoProfileInfoKHR structure.")
- VkFormat("pictureFormat", "the format of the image views representing decoded Output or encoded Input pictures.")
- VkExtent2D("maxCodedExtent", "the maximum width and height of the coded pictures that this instance will be able to support.")
- VkFormat("referencePictureFormat", "")
- uint32_t("maxDpbSlots", "the maximum number of DPB Slots that can be activated with associated Video Picture Resources for the created video session.")
- uint32_t("maxActiveReferencePictures", "the maximum number of active DPB Slots that can be used as Dpb or Reconstructed Reference Pictures within a single decode or encode operation for the created video session.")
- VkExtensionProperties.const.p("pStdHeaderVersion", "a pointer to a ##VkExtensionProperties structure requesting the Video Std header version to use for {@code codecOperation} in {@code pVideoProfile}.")
+ VkVideoProfileInfoKHR.const.p("pVideoProfile", "a pointer to a ##VkVideoProfileInfoKHR structure specifying the video profile the created video session will be used with.")
+ VkFormat("pictureFormat", "the image format the created video session will be used with. If {@code pVideoProfile→videoCodecOperation} specifies a decode operation, then {@code pictureFormat} is the image format of decode output pictures usable with the created video session. If {@code pVideoProfile→videoCodecOperation} specifies an encode operation, then {@code pictureFormat} is the image format of encode input pictures usable with the created video session.")
+ VkExtent2D("maxCodedExtent", "the maximum width and height of the coded frames the created video session will be used with.")
+ VkFormat("referencePictureFormat", "the image format of reference pictures stored in the DPB the created video session will be used with.")
+ uint32_t("maxDpbSlots", "the maximum number of DPB Slots that can be used with the created video session.")
+ uint32_t("maxActiveReferencePictures", "the maximum number of active reference pictures that can be used in a single video coding operation using the created video session.")
+ VkExtensionProperties.const.p("pStdHeaderVersion", "a pointer to a ##VkExtensionProperties structure requesting the Video Std header version to use for the {@code videoCodecOperation} specified in {@code pVideoProfile}.")
}
val VkVideoSessionParametersCreateInfoKHR = struct(Module.VULKAN, "VkVideoSessionParametersCreateInfoKHR") {
documentation =
"""
- Structure to set video session parameters.
+ Structure specifying parameters of a newly created video session parameters object.
+
+ Description
+ Limiting values are defined below that are referenced by the relevant valid usage statements of this structure.
+
+
+ -
+ If {@code videoSession} was created with the codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then let {@code StdVideoH264SequenceParameterSet spsAddList[]} be the list of H.264 SPS entries to add to the created video session parameters object, defined as follows:
+
+ - If the {@code pParametersAddInfo} member of the ##VkVideoDecodeH264SessionParametersCreateInfoKHR structure provided in the {@code pNext} chain is not {@code NULL}, then the set of {@code StdVideoH264SequenceParameterSet} entries specified in {@code pParametersAddInfo→pStdSPSs} are added to {@code spsAddList};
+ - If {@code videoSessionParametersTemplate} is not #NULL_HANDLE, then each {@code StdVideoH264SequenceParameterSet} entry stored in it with {@code seq_parameter_set_id} not matching any of the entries already in {@code spsAddList} is added to {@code spsAddList}.
+
+
+ -
+ If {@code videoSession} was created with the codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then let {@code StdVideoH264PictureParameterSet ppsAddList[]} be the list of H.264 PPS entries to add to the created video session parameters object, defined as follows:
+
+ - If the {@code pParametersAddInfo} member of the ##VkVideoDecodeH264SessionParametersCreateInfoKHR structure provided in the {@code pNext} chain is not {@code NULL}, then the set of {@code StdVideoH264PictureParameterSet} entries specified in {@code pParametersAddInfo→pStdPPSs} are added to {@code ppsAddList};
+ - If {@code videoSessionParametersTemplate} is not #NULL_HANDLE, then each {@code StdVideoH264PictureParameterSet} entry stored in it with {@code seq_parameter_set_id} or {@code pic_parameter_set_id} not matching any of the entries already in {@code ppsAddList} is added to {@code ppsAddList}.
+
+
+ -
+ If {@code videoSession} was created with the codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then let {@code StdVideoH265VideoParameterSet vpsAddList[]} be the list of H.265 VPS entries to add to the created video session parameters object, defined as follows:
+
+ - If the {@code pParametersAddInfo} member of the ##VkVideoDecodeH265SessionParametersCreateInfoKHR structure provided in the {@code pNext} chain is not {@code NULL}, then the set of {@code StdVideoH265VideoParameterSet} entries specified in {@code pParametersAddInfo→pStdVPSs} are added to {@code vpsAddList};
+ - If {@code videoSessionParametersTemplate} is not #NULL_HANDLE, then each {@code StdVideoH265VideoParameterSet} entry stored in it with {@code vps_video_parameter_set_id} not matching any of the entries already in {@code vpsAddList} is added to {@code vpsAddList}.
+
+
+ -
+ If {@code videoSession} was created with the codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then let {@code StdVideoH265SequenceParameterSet spsAddList[]} be the list of H.265 SPS entries to add to the created video session parameters object, defined as follows:
+
+ - If the {@code pParametersAddInfo} member of the ##VkVideoDecodeH265SessionParametersCreateInfoKHR structure provided in the {@code pNext} chain is not {@code NULL}, then the set of {@code StdVideoH265SequenceParameterSet} entries specified in {@code pParametersAddInfo→pStdSPSs} are added to {@code spsAddList};
+ - If {@code videoSessionParametersTemplate} is not #NULL_HANDLE, then each {@code StdVideoH265SequenceParameterSet} entry stored in it with {@code sps_video_parameter_set_id} or {@code sps_seq_parameter_set_id} not matching any of the entries already in {@code spsAddList} is added to {@code spsAddList}.
+
+
+ -
+ If {@code videoSession} was created with the codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then let {@code StdVideoH265PictureParameterSet ppsAddList[]} be the list of H.265 PPS entries to add to the created video session parameters object, defined as follows:
+
+ - If the {@code pParametersAddInfo} member of the ##VkVideoDecodeH265SessionParametersCreateInfoKHR structure provided in the {@code pNext} chain is not {@code NULL}, then the set of {@code StdVideoH265PictureParameterSet} entries specified in {@code pParametersAddInfo→pStdPPSs} are added to {@code ppsAddList};
+ - If {@code videoSessionParametersTemplate} is not #NULL_HANDLE, then each {@code StdVideoH265PictureParameterSet} entry stored in it with {@code sps_video_parameter_set_id}, {@code pps_seq_parameter_set_id}, or {@code pps_pic_parameter_set_id} not matching any of the entries already in {@code ppsAddList} is added to {@code ppsAddList}.
+
+
+
Valid Usage
- If {@code videoSessionParametersTemplate} represents a valid handle, it must have been created against {@code videoSession}
+ - If {@code videoSession} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then the {@code pNext} chain must include a ##VkVideoDecodeH264SessionParametersCreateInfoKHR structure
+ - If {@code videoSession} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then the number of elements of {@code spsAddList} must be less than or equal to the {@code maxStdSPSCount} specified in the ##VkVideoDecodeH264SessionParametersCreateInfoKHR structure included in the {@code pNext} chain
+ - If {@code videoSession} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then the number of elements of {@code ppsAddList} must be less than or equal to the {@code maxStdPPSCount} specified in the ##VkVideoDecodeH264SessionParametersCreateInfoKHR structure included in the {@code pNext} chain
+ - If {@code videoSession} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the {@code pNext} chain must include a ##VkVideoDecodeH265SessionParametersCreateInfoKHR structure
+ - If {@code videoSession} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the number of elements of {@code vpsAddList} must be less than or equal to the {@code maxStdVPSCount} specified in the ##VkVideoDecodeH265SessionParametersCreateInfoKHR structure included in the {@code pNext} chain
+ - If {@code videoSession} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the number of elements of {@code spsAddList} must be less than or equal to the {@code maxStdSPSCount} specified in the ##VkVideoDecodeH265SessionParametersCreateInfoKHR structure included in the {@code pNext} chain
+ - If {@code videoSession} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the number of elements of {@code ppsAddList} must be less than or equal to the {@code maxStdPPSCount} specified in the ##VkVideoDecodeH265SessionParametersCreateInfoKHR structure included in the {@code pNext} chain
+ - If {@code videoSession} was created with the video codec operation #VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT, then the {@code pNext} chain must include a ##VkVideoEncodeH264SessionParametersCreateInfoEXT structure
+ - If {@code videoSession} was created with the video codec operation #VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT, then the {@code pNext} chain must include a ##VkVideoEncodeH265SessionParametersCreateInfoEXT structure
Valid Usage (Implicit)
- {@code sType} must be #STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR
- - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkVideoDecodeH264SessionParametersCreateInfoEXT, ##VkVideoDecodeH265SessionParametersCreateInfoEXT, ##VkVideoEncodeH264SessionParametersCreateInfoEXT, or ##VkVideoEncodeH265SessionParametersCreateInfoEXT
+ - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkVideoDecodeH264SessionParametersCreateInfoKHR, ##VkVideoDecodeH265SessionParametersCreateInfoKHR, ##VkVideoEncodeH264SessionParametersCreateInfoEXT, or ##VkVideoEncodeH265SessionParametersCreateInfoEXT
- The {@code sType} value of each struct in the {@code pNext} chain must be unique
- {@code flags} must be 0
- If {@code videoSessionParametersTemplate} is not #NULL_HANDLE, {@code videoSessionParametersTemplate} must be a valid {@code VkVideoSessionParametersKHR} handle
@@ -1642,23 +1797,23 @@ val VkVideoSessionParametersCreateInfoKHR = struct(Module.VULKAN, "VkVideoSessio
Expression("#STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR")..VkStructureType("sType", "the type of this structure.")
PointerSetter(
- "VkVideoDecodeH264SessionParametersCreateInfoEXT", "VkVideoDecodeH265SessionParametersCreateInfoEXT", "VkVideoEncodeH264SessionParametersCreateInfoEXT", "VkVideoEncodeH265SessionParametersCreateInfoEXT",
+ "VkVideoDecodeH264SessionParametersCreateInfoKHR", "VkVideoDecodeH265SessionParametersCreateInfoKHR", "VkVideoEncodeH264SessionParametersCreateInfoEXT", "VkVideoEncodeH265SessionParametersCreateInfoEXT",
prepend = true
)..nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
VkVideoSessionParametersCreateFlagsKHR("flags", "reserved for future use.")
- VkVideoSessionParametersKHR("videoSessionParametersTemplate", "#NULL_HANDLE or a valid handle to a {@code VkVideoSessionParametersKHR} object. If this parameter represents a valid handle, then the underlying Video Session Parameters object will be used as a template for constructing the new video session parameters object. All of the template object’s current parameters will be inherited by the new object in such a case. Optionally, some of the template’s parameters can be updated or new parameters added to the newly constructed object via the extension-specific parameters.")
+ VkVideoSessionParametersKHR("videoSessionParametersTemplate", "#NULL_HANDLE or a valid handle to a {@code VkVideoSessionParametersKHR} object used as a template for constructing the new video session parameters object.")
VkVideoSessionKHR("videoSession", "the video session object against which the video session parameters object is going to be created.")
}
val VkVideoSessionParametersUpdateInfoKHR = struct(Module.VULKAN, "VkVideoSessionParametersUpdateInfoKHR") {
documentation =
"""
- Structure to update video session parameters.
+ Structure specifying video session parameters update information.
Valid Usage (Implicit)
- {@code sType} must be #STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR
- - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkVideoDecodeH264SessionParametersAddInfoEXT, ##VkVideoDecodeH265SessionParametersAddInfoEXT, ##VkVideoEncodeH264SessionParametersAddInfoEXT, or ##VkVideoEncodeH265SessionParametersAddInfoEXT
+ - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkVideoDecodeH264SessionParametersAddInfoKHR, ##VkVideoDecodeH265SessionParametersAddInfoKHR, ##VkVideoEncodeH264SessionParametersAddInfoEXT, or ##VkVideoEncodeH265SessionParametersAddInfoEXT
- The {@code sType} value of each struct in the {@code pNext} chain must be unique
@@ -1668,21 +1823,46 @@ val VkVideoSessionParametersUpdateInfoKHR = struct(Module.VULKAN, "VkVideoSessio
Expression("#STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR")..VkStructureType("sType", "the type of this structure.")
PointerSetter(
- "VkVideoDecodeH264SessionParametersAddInfoEXT", "VkVideoDecodeH265SessionParametersAddInfoEXT", "VkVideoEncodeH264SessionParametersAddInfoEXT", "VkVideoEncodeH265SessionParametersAddInfoEXT",
+ "VkVideoDecodeH264SessionParametersAddInfoKHR", "VkVideoDecodeH265SessionParametersAddInfoKHR", "VkVideoEncodeH264SessionParametersAddInfoEXT", "VkVideoEncodeH265SessionParametersAddInfoEXT",
prepend = true
)..nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
- uint32_t("updateSequenceCount", "the sequence number of the object update with parameters, starting from 1 and incrementing the value by one with each subsequent update.")
+ uint32_t("updateSequenceCount", "the new update sequence count to set for the video session parameters object.")
}
val VkVideoBeginCodingInfoKHR = struct(Module.VULKAN, "VkVideoBeginCodingInfoKHR") {
documentation =
"""
- Structure specifying parameters of decode starts.
+ Structure specifying video coding scope begin information.
+
+ Description
+ Limiting values are defined below that are referenced by the relevant valid usage statements of this structure.
+
+
+ -
+ Let {@code VkOffset2D codedOffsetGranularity} be the minimum alignment requirement for the coded offset of video picture resources. Unless otherwise defined, the value of the {@code x} and {@code y} members of {@code codedOffsetGranularity} are 0.
+
+ - If {@code videoSession} was created with an H.264 decode profile with a ##VkVideoDecodeH264ProfileInfoKHR{@code ::pictureLayout} of #VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR, then {@code codedOffsetGranularity} is equal to ##VkVideoDecodeH264CapabilitiesKHR{@code ::fieldOffsetGranularity}, as returned by #GetPhysicalDeviceVideoCapabilitiesKHR() for that video profile.
+
+
+
Valid Usage
- - ##VkVideoBeginCodingInfoKHR{@code ::referenceSlotCount} must not exceed the value specified in ##VkVideoSessionCreateInfoKHR{@code ::maxDpbSlots} when creating the video session object that is being provided in {@code videoSession}
- - If {@code videoSessionParameters} is not #NULL_HANDLE, it must have been created using {@code videoSession} as a parent object
+ - {@code videoSession} must have memory bound to all of its memory bindings returned by #GetVideoSessionMemoryRequirementsKHR() for {@code videoSession}
+ - Each non-negative ##VkVideoReferenceSlotInfoKHR{@code ::slotIndex} specified in the elements of {@code pReferenceSlots} must be less than the ##VkVideoSessionCreateInfoKHR{@code ::maxDpbSlots} specified when {@code videoSession} was created
+ - Each video picture resource corresponding to any non-{@code NULL} {@code pPictureResource} member specified in the elements of {@code pReferenceSlots} must be unique within {@code pReferenceSlots}
+ - If the {@code pPictureResource} member of any element of {@code pReferenceSlots} is not {@code NULL}, then the image view specified in {@code pPictureResource→imageViewBinding} for that element must be compatible with the video profile {@code videoSession} was created with
+ - If the {@code pPictureResource} member of any element of {@code pReferenceSlots} is not {@code NULL}, then the format of the image view specified in {@code pPictureResource→imageViewBinding} for that element must match the ##VkVideoSessionCreateInfoKHR::referencePictureFormat {@code videoSession} was created with
+ - If the {@code pPictureResource} member of any element of {@code pReferenceSlots} is not {@code NULL}, then its {@code codedOffset} member must be an integer multiple of {@code codedOffsetGranularity}
+ - If the {@code pPictureResource} member of any element of {@code pReferenceSlots} is not {@code NULL}, then its {@code codedExtent} member must be between {@code minCodedExtent} and {@code maxCodedExtent}, inclusive, {@code videoSession} was created with
+ - If ##VkVideoCapabilitiesKHR{@code ::flags} does not include #VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR, as returned by #GetPhysicalDeviceVideoCapabilitiesKHR() for the video profile {@code videoSession} was created with, then {@code pPictureResource→imageViewBinding} of all elements of {@code pReferenceSlots} with a non-{@code NULL} {@code pPictureResource} member must specify image views created from the same image
+ - If {@code videoSession} was created with a decode operation and the {@code slotIndex} member of any element of {@code pReferenceSlots} is not negative, then the image view specified in {@code pPictureResource→imageViewBinding} for that element must have been created with #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR
+ - If {@code videoSession} was created with an encode operation and the {@code slotIndex} member of any element of {@code pReferenceSlots} is not negative, then the image view specified in {@code pPictureResource→imageViewBinding} for that element must have been created with #IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR
+ - If {@code videoSession} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then {@code videoSessionParameters} must not be #NULL_HANDLE
+ - If {@code videoSession} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then {@code videoSessionParameters} must not be #NULL_HANDLE
+ - If {@code videoSession} was created with the video codec operation #VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT, then {@code videoSessionParameters} must not be #NULL_HANDLE
+ - If {@code videoSession} was created with the video codec operation #VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT, then {@code videoSessionParameters} must not be #NULL_HANDLE
+ - If {@code videoSessionParameters} is not #NULL_HANDLE, it must have been created with {@code videoSession} specified in ##VkVideoSessionParametersCreateInfoKHR{@code ::videoSession}
Valid Usage (Implicit)
@@ -1705,15 +1885,15 @@ val VkVideoBeginCodingInfoKHR = struct(Module.VULKAN, "VkVideoBeginCodingInfoKHR
nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
VkVideoBeginCodingFlagsKHR("flags", "reserved for future use.")
VkVideoSessionKHR("videoSession", "the video session object to be bound for the processing of the video commands.")
- VkVideoSessionParametersKHR("videoSessionParameters", "#NULL_HANDLE or a handle of a {@code VkVideoSessionParametersKHR} object to be used for the processing of the video commands. If #NULL_HANDLE, then no video session parameters apply to this command buffer context.")
- AutoSize("pReferenceSlots", optional = true)..uint32_t("referenceSlotCount", "the number of reference slot entries provided in {@code pReferenceSlots}.")
- VkVideoReferenceSlotInfoKHR.const.p("pReferenceSlots", "a pointer to an array of ##VkVideoReferenceSlotInfoKHR structures specifying reference slots, used within the video command context between this #CmdBeginVideoCodingKHR() command and the #CmdEndVideoCodingKHR() command that follows. Each reference slot provides a slot index and the ##VkVideoPictureResourceInfoKHR specifying the reference picture resource bound to this slot index. A slot index must not appear more than once in {@code pReferenceSlots} in a given command.")
+ VkVideoSessionParametersKHR("videoSessionParameters", "#NULL_HANDLE or a handle of a {@code VkVideoSessionParametersKHR} object to be used for the processing of the video commands. If #NULL_HANDLE, then no video session parameters object is bound for the duration of the video coding scope.")
+ AutoSize("pReferenceSlots", optional = true)..uint32_t("referenceSlotCount", "the number of elements in the {@code pReferenceSlots} array.")
+ VkVideoReferenceSlotInfoKHR.const.p("pReferenceSlots", "a pointer to an array of ##VkVideoReferenceSlotInfoKHR structures specifying the information used to determine the set of bound reference picture resources for the video coding scope and their initial association with DPB slot indices.")
}
val VkVideoEndCodingInfoKHR = struct(Module.VULKAN, "VkVideoEndCodingInfoKHR") {
documentation =
"""
- Structure specifying the end of decode encode commands sequence.
+ Structure specifying video coding scope end information.
Valid Usage (Implicit)
@@ -1734,28 +1914,19 @@ val VkVideoEndCodingInfoKHR = struct(Module.VULKAN, "VkVideoEndCodingInfoKHR") {
val VkVideoCodingControlInfoKHR = struct(Module.VULKAN, "VkVideoCodingControlInfoKHR") {
documentation =
"""
- Structure specifying parameters of coding control.
-
- Description
- A newly created video session must be reset before use for video decode or encode operations by including #VIDEO_CODING_CONTROL_RESET_BIT_KHR in {@code flags}. The reset operation returns all session DPB slots to the unused state (see DPB Slot States).
-
- For encode sessions, the reset operation returns rate control configuration to implementation default settings.
-
- After decode or encode operations are performed on a session, the reset operation may be used to return the video session object to the same initial state as after the reset of a newly created video session. This may be used when different video sequences are processed with the same video session object.
+ Structure specifying video coding control parameters.
Valid Usage
- - {@code flags} must include at least one bit
- - If the bound video session object is in uninitialized state, then {@code flags} must include #VIDEO_CODING_CONTROL_RESET_BIT_KHR
- - If {@code flags} includes #VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR, then the {@code pNext} chain must include a valid ##VkVideoEncodeRateControlInfoKHR structure
- - If {@code flags} includes #VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR, then the {@code pNext} chain must include a valid ##VkVideoEncodeRateControlLayerInfoKHR structure
+ - If {@code flags} includes #VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR, then the {@code pNext} chain must include a ##VkVideoEncodeRateControlInfoKHR structure
+ - If {@code flags} includes #VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR, then the {@code pNext} chain must include a ##VkVideoEncodeRateControlLayerInfoKHR structure
- If {@code flags} includes #VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR, then it must not also include #VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR
- - If {@code flags} includes #VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR, the {@code rateControlMode} member of ##VkVideoEncodeRateControlInfoKHR included in the {@code pNext} chain is not #VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR, and the bound video session was created with ##VkVideoProfileInfoKHR{@code ::videoCodecOperation} set to #VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT, then the {@code pNext} chain must include a ##VkVideoEncodeH264RateControlInfoEXT structure
+ - If {@code flags} includes #VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR, the {@code rateControlMode} member of ##VkVideoEncodeRateControlInfoKHR included in the {@code pNext} chain is not #VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR, and the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT, then the {@code pNext} chain must include a ##VkVideoEncodeH264RateControlInfoEXT structure
- If the {@code pNext} chain includes a ##VkVideoEncodeRateControlInfoKHR, and ##VkVideoEncodeRateControlInfoKHR{@code ::layerCount} is greater than 1, then ##VkVideoEncodeH264RateControlInfoEXT{@code ::temporalLayerCount} must be equal to {@code layerCount}
- - If {@code flags} includes #VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR and the bound video session was created with ##VkVideoProfileInfoKHR{@code ::videoCodecOperation} set to #VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT, then the {@code pNext} chain must include a ##VkVideoEncodeH264RateControlLayerInfoEXT structure
- - If {@code flags} includes #VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR, the {@code rateControlMode} member of ##VkVideoEncodeRateControlInfoKHR included in the {@code pNext} chain is not #VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR, and the bound video session was created with ##VkVideoProfileInfoKHR{@code ::videoCodecOperation} set to #VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT, then the {@code pNext} chain must include a ##VkVideoEncodeH265RateControlInfoEXT structure
+ - If {@code flags} includes #VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR and the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT, then the {@code pNext} chain must include a ##VkVideoEncodeH264RateControlLayerInfoEXT structure
+ - If {@code flags} includes #VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR, the {@code rateControlMode} member of ##VkVideoEncodeRateControlInfoKHR included in the {@code pNext} chain is not #VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR, and the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT, then the {@code pNext} chain must include a ##VkVideoEncodeH265RateControlInfoEXT structure
- If the {@code pNext} chain includes a ##VkVideoEncodeRateControlInfoKHR, and ##VkVideoEncodeRateControlInfoKHR{@code ::layerCount} is greater than 1, then ##VkVideoEncodeH265RateControlInfoEXT{@code ::subLayerCount} must be equal to {@code layerCount}
- - If {@code flags} includes #VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR and the bound video session was created with ##VkVideoProfileInfoKHR{@code ::videoCodecOperation} set to #VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT, then the {@code pNext} chain must include a ##VkVideoEncodeH265RateControlLayerInfoEXT structure
+ - If {@code flags} includes #VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR and the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT, then the {@code pNext} chain must include a ##VkVideoEncodeH265RateControlLayerInfoEXT structure
Valid Usage (Implicit)
@@ -1782,7 +1953,7 @@ val VkVideoCodingControlInfoKHR = struct(Module.VULKAN, "VkVideoCodingControlInf
val VkVideoDecodeCapabilitiesKHR = struct(Module.VULKAN, "VkVideoDecodeCapabilitiesKHR", mutable = false) {
documentation =
"""
- Structure specifying decode capabilities.
+ Structure describing general video decode capabilities for a video profile.
Valid Usage (Implicit)
@@ -1792,7 +1963,7 @@ val VkVideoDecodeCapabilitiesKHR = struct(Module.VULKAN, "VkVideoDecodeCapabilit
Expression("#STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR")..VkStructureType("sType", "the type of this structure.").mutable()
nullable..opaque_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.").mutable()
- VkVideoDecodeCapabilityFlagsKHR("flags", "a bitmask of {@code VkVideoDecodeCapabilityFlagBitsKHR} describing supported decoding features.")
+ VkVideoDecodeCapabilityFlagsKHR("flags", "a bitmask of {@code VkVideoDecodeCapabilityFlagBitsKHR} describing the supported video decoding capabilities.")
}
val VkVideoDecodeUsageInfoKHR = struct(Module.VULKAN, "VkVideoDecodeUsageInfoKHR") {
@@ -1815,17 +1986,23 @@ val VkVideoDecodeUsageInfoKHR = struct(Module.VULKAN, "VkVideoDecodeUsageInfoKHR
val VkVideoDecodeInfoKHR = struct(Module.VULKAN, "VkVideoDecodeInfoKHR") {
documentation =
"""
- Structure specifying parameters of decoding a frame.
-
- Description
- The coded size of the decode operation is specified in {@code codedExtent} of {@code dstPictureResource}.
+ Structure specifying video decode parameters.
- The coded offset of the decode operation is specified in {@code codedOffset} of {@code dstPictureResource}. The purpose of this field is interpreted based on the codec extension. When decoding content in H.264 field mode, {@code codedOffset} specifies the line or picture field’s offset within the image.
+ Valid Usage
+
+ - {@code srcBuffer} must have been created with #BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR set
+ - {@code srcBufferOffset} must be less than the size of {@code srcBuffer}
+ - {@code srcBufferRange} must be less than or equal to the size of {@code srcBuffer} minus {@code srcBufferOffset}
+ - If {@code pSetupReferenceSlot} is not {@code NULL}, then its {@code slotIndex} member must not be negative
+ - If {@code pSetupReferenceSlot} is not {@code NULL}, then its {@code pPictureResource} must not be {@code NULL}
+ - The {@code slotIndex} member of each element of {@code pReferenceSlots} must not be negative
+ - The {@code pPictureResource} member of each element of {@code pReferenceSlots} must not be {@code NULL}
+
Valid Usage (Implicit)
- {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR
- - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkVideoDecodeH264PictureInfoEXT or ##VkVideoDecodeH265PictureInfoEXT
+ - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkVideoDecodeH264PictureInfoKHR or ##VkVideoDecodeH265PictureInfoKHR
- The {@code sType} value of each struct in the {@code pNext} chain must be unique
- {@code flags} must be 0
- {@code srcBuffer} must be a valid {@code VkBuffer} handle
@@ -1840,17 +2017,17 @@ val VkVideoDecodeInfoKHR = struct(Module.VULKAN, "VkVideoDecodeInfoKHR") {
Expression("#STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR")..VkStructureType("sType", "the type of this structure.")
PointerSetter(
- "VkVideoDecodeH264PictureInfoEXT", "VkVideoDecodeH265PictureInfoEXT",
+ "VkVideoDecodeH264PictureInfoKHR", "VkVideoDecodeH265PictureInfoKHR",
prepend = true
- )..nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure. All the codec specific structures related to each frame(picture parameters, quantization matrix, etc.) must be chained here and pass to decode session with the function call #CmdDecodeVideoKHR().")
+ )..nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
VkVideoDecodeFlagsKHR("flags", "reserved for future use.")
- VkBuffer("srcBuffer", "the source buffer that holds the encoded bitstream.")
- VkDeviceSize("srcBufferOffset", "the buffer offset where the valid encoded bitstream starts in srcBuffer. It must meet the alignment requirement {@code minBitstreamBufferOffsetAlignment} within ##VkVideoCapabilitiesKHR queried with the #GetPhysicalDeviceVideoCapabilitiesKHR() function.")
- VkDeviceSize("srcBufferRange", "the size of the srcBuffer with valid encoded bitstream, starting from {@code srcBufferOffset}. It must meet the alignment requirement {@code minBitstreamBufferSizeAlignment} within ##VkVideoCapabilitiesKHR queried with the #GetPhysicalDeviceVideoCapabilitiesKHR() function.")
- VkVideoPictureResourceInfoKHR("dstPictureResource", "the destination Decoded Output Picture Resource.")
- nullable..VkVideoReferenceSlotInfoKHR.const.p("pSetupReferenceSlot", "{@code NULL} or a pointer to a ##VkVideoReferenceSlotInfoKHR structure used for generating a DPB reference slot and Picture Resource. {@code pSetupReferenceSlot→slotIndex} specifies the slot index number to use as a target for producing the DPB data. {@code slotIndex} must reference a valid entry as specified in ##VkVideoBeginCodingInfoKHR via the {@code pReferenceSlots} within the #CmdBeginVideoCodingKHR() command that established the Vulkan Video Decode Context for this command.")
- AutoSize("pReferenceSlots", optional = true)..uint32_t("referenceSlotCount", "the number of the DPB Reference Pictures that will be used when this decoding operation is executing.")
- VkVideoReferenceSlotInfoKHR.const.p("pReferenceSlots", "a pointer to an array of ##VkVideoReferenceSlotInfoKHR structures specifying the DPB Reference pictures that will be used when this decoding operation is executing.")
+ VkBuffer("srcBuffer", "the source video bitstream buffer to read the encoded bitstream from.")
+ VkDeviceSize("srcBufferOffset", "the starting offset in bytes from the start of {@code srcBuffer} to read the encoded bitstream from.")
+ VkDeviceSize("srcBufferRange", "the size in bytes of the encoded bitstream to decode from {@code srcBuffer}, starting from {@code srcBufferOffset}.")
+ VkVideoPictureResourceInfoKHR("dstPictureResource", "the video picture resource to use as the decode output picture.")
+ nullable..VkVideoReferenceSlotInfoKHR.const.p("pSetupReferenceSlot", "{@code NULL} or a pointer to a ##VkVideoReferenceSlotInfoKHR structure describing the DPB slot to activate and the video picture resource to use as the reconstructed picture to activate the DPB slot with.")
+ AutoSize("pReferenceSlots", optional = true)..uint32_t("referenceSlotCount", "the number of elements in the {@code pReferenceSlots} array.")
+ VkVideoReferenceSlotInfoKHR.const.p("pReferenceSlots", "a pointer to an array of ##VkVideoReferenceSlotInfoKHR structures describing the DPB slots and corresponding reference picture resources to use in this video decode operation (the set of active reference pictures).")
}
val VkDedicatedAllocationImageCreateInfoNV = struct(Module.VULKAN, "VkDedicatedAllocationImageCreateInfoNV") {
@@ -2811,153 +2988,224 @@ val VkVideoEncodeH265RateControlLayerInfoEXT = struct(Module.VULKAN, "VkVideoEnc
VkVideoEncodeH265FrameSizeEXT("maxFrameSize", "provides the upper bound on the encoded frame size for each picture type. The implementation does not guarantee the encoded frame sizes will be within the specified limits, however these limits may be used as a guide in rate control calculations. If enabled and not set properly, the {@code maxQp} limit may prevent the implementation from respecting the {@code maxFrameSize} limit.")
}
-val VkVideoDecodeH264ProfileInfoEXT = struct(Module.VULKAN, "VkVideoDecodeH264ProfileInfoEXT") {
+val VkVideoDecodeH264ProfileInfoKHR = struct(Module.VULKAN, "VkVideoDecodeH264ProfileInfoKHR") {
javaImport("org.lwjgl.vulkan.video.*")
documentation =
"""
- Structure specifying H.264 decode profile.
-
- Description
- Note
- When passing ##VkVideoDecodeH264ProfileInfoEXT to #CreateVideoSessionKHR() in the {@code pNext} chain of ##VkVideoSessionCreateInfoKHR, requests for a {@code pictureLayout} not supported by the implementation will result in failure of the command.
-
-
- Valid Usage
-
- - If the ##VkVideoDecodeH264ProfileInfoEXT structure is included in the {@code pNext} chain of the ##VkVideoCapabilitiesKHR structure passed to #GetPhysicalDeviceVideoCapabilitiesKHR(), the value in {@code pictureLayout} is treated as a bitmask of requested picture layouts. It is always valid to use the value #VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT as the implementation is guaranteed to support decoding of progressive content
- - If the ##VkVideoDecodeH264ProfileInfoEXT structure is included in the {@code pNext} chain of the ##VkVideoSessionCreateInfoKHR structure passed to #CreateVideoSessionKHR(), the value in {@code pictureLayout} must be exactly one of #VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT, #VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT or #VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT
-
+ Structure specifying H.264 decode-specific video profile parameters.
Valid Usage (Implicit)
- - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_EXT
- - If {@code pictureLayout} is not 0, {@code pictureLayout} must be a valid {@code VkVideoDecodeH264PictureLayoutFlagBitsEXT} value
+ - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR
+ - If {@code pictureLayout} is not 0, {@code pictureLayout} must be a valid {@code VkVideoDecodeH264PictureLayoutFlagBitsKHR} value
"""
- Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_EXT")..VkStructureType("sType", "the type of this structure.")
+ Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR")..VkStructureType("sType", "the type of this structure.")
nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
- StdVideoH264ProfileIdc("stdProfileIdc", "a {@code StdVideoH264ProfileIdc} value specifying the H.264 codec profile IDC")
- VkVideoDecodeH264PictureLayoutFlagBitsEXT("pictureLayout", "a {@code VkVideoDecodeH264PictureLayoutFlagBitsEXT} value specifying the layout of the decoded picture’s contents depending on the nature (progressive vs. interlaced) of the input content.")
+ StdVideoH264ProfileIdc("stdProfileIdc", "a {@code StdVideoH264ProfileIdc} value specifying the H.264 codec profile IDC, as defined in section A.2 of the ITU-T H.264 Specification.")
+ VkVideoDecodeH264PictureLayoutFlagBitsKHR("pictureLayout", "a {@code VkVideoDecodeH264PictureLayoutFlagBitsKHR} value specifying the picture layout used by the H.264 video sequence to be decoded.")
}
-val VkVideoDecodeH264CapabilitiesEXT = struct(Module.VULKAN, "VkVideoDecodeH264CapabilitiesEXT", mutable = false) {
+val VkVideoDecodeH264CapabilitiesKHR = struct(Module.VULKAN, "VkVideoDecodeH264CapabilitiesKHR", mutable = false) {
javaImport("org.lwjgl.vulkan.video.*")
documentation =
"""
- Structure specifying H.264 decode capabilities.
+ Structure describing H.264 decode capabilities.
Valid Usage (Implicit)
- - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT
+ - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR
See Also
##VkOffset2D
"""
- Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT")..VkStructureType("sType", "the type of this structure.").mutable()
+ Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR")..VkStructureType("sType", "the type of this structure.").mutable()
nullable..opaque_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.").mutable()
- StdVideoH264LevelIdc("maxLevelIdc", "")
- VkOffset2D("fieldOffsetGranularity", "- if Interlaced Video Content is supported, the maximum field offset granularity supported for the picture resource.")
+ StdVideoH264LevelIdc("maxLevelIdc", "a {@code StdVideoH264LevelIdc} value specifying the maximum H.264 level supported by the profile, as defined in section A.3 of the ITU-T H.264 Specification.")
+ VkOffset2D("fieldOffsetGranularity", "the minimum alignment for ##VkVideoPictureResourceInfoKHR{@code ::codedOffset} specified for a video picture resource when using the picture layout #VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR.")
}
-val VkVideoDecodeH264SessionParametersAddInfoEXT = struct(Module.VULKAN, "VkVideoDecodeH264SessionParametersAddInfoEXT") {
+val VkVideoDecodeH264SessionParametersAddInfoKHR = struct(Module.VULKAN, "VkVideoDecodeH264SessionParametersAddInfoKHR") {
javaImport("org.lwjgl.vulkan.video.*")
documentation =
"""
Structure specifies H.264 decoder parameter set information.
+ Description
+ This structure can be specified in the following places:
+
+
+ - In the {@code pParametersAddInfo} member of the ##VkVideoDecodeH264SessionParametersCreateInfoKHR structure specified in the {@code pNext} chain of ##VkVideoSessionParametersCreateInfoKHR used to create a video session parameters object. In this case, if the video codec operation the video session parameters object is created with is #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then it defines the set of initial parameters to add to the created object (see Creating Video Session Parameters).
+ - In the {@code pNext} chain of ##VkVideoSessionParametersUpdateInfoKHR. In this case, if the video codec operation the video session parameters object to be updated was created with is #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then it defines the set of parameters to add to it (see Updating Video Session Parameters).
+
+
Valid Usage
- - The values of {@code stdSPSCount} and {@code stdPPSCount} must be less than or equal to the values of {@code maxStdSPSCount} and {@code maxStdPPSCount}, respectively
- - When the {@code maxStdSPSCount} number of parameters of type StdVideoH264SequenceParameterSet in the Video Session Parameters object is reached, no additional parameters of that type can be added to this object. #ERROR_TOO_MANY_OBJECTS will be returned if an attempt is made to add additional data to this object at this point
- - When the {@code maxStdPPSCount} number of parameters of type StdVideoH264PictureParameterSet in the Video Session Parameters object is reached, no additional parameters of that type can be added to this object. #ERROR_TOO_MANY_OBJECTS will be returned if an attempt is made to add additional data to this object at this point
- - Each entry to be added must have a unique, to the rest of the parameter array entries and the existing parameters in the Video Session Parameters Object that is being updated, SPS-PPS IDs
- - Parameter entries that already exist in Video Session Parameters object with a particular SPS-PPS IDs cannot be replaced nor updated
- - When creating a new object using a Video Session Parameters as a template, the array’s parameters with the same SPS-PPS IDs as the ones from the template take precedence
- - SPS/PPS parameters must comply with the limits specified in ##VkVideoSessionCreateInfoKHR during Video Session creation
+ - The {@code seq_parameter_set_id} member of each {@code StdVideoH264SequenceParameterSet} structure specified in the elements of {@code pStdSPSs} must be unique within {@code pStdSPSs}
+ - The pair constructed from the {@code seq_parameter_set_id} and {@code pic_parameter_set_id} members of each {@code StdVideoH264PictureParameterSet} structure specified in the elements of {@code pStdPPSs} must be unique within {@code pStdPPSs}
Valid Usage (Implicit)
- - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT
+ - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR
- If {@code stdSPSCount} is not 0, {@code pStdSPSs} must be a valid pointer to an array of {@code stdSPSCount} {@code StdVideoH264SequenceParameterSet} values
- If {@code stdPPSCount} is not 0, {@code pStdPPSs} must be a valid pointer to an array of {@code stdPPSCount} {@code StdVideoH264PictureParameterSet} values
See Also
- ##VkVideoDecodeH264SessionParametersCreateInfoEXT
+ ##VkVideoDecodeH264SessionParametersCreateInfoKHR
"""
- Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT")..VkStructureType("sType", "the type of this structure.")
+ Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR")..VkStructureType("sType", "the type of this structure.")
nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
- AutoSize("pStdSPSs", optional = true)..uint32_t("stdSPSCount", "the number of SPS elements in {@code pStdSPSs}. Its value must be less than or equal to the value of {@code maxStdSPSCount}.")
- StdVideoH264SequenceParameterSet.const.p("pStdSPSs", "a pointer to an array of {@code StdVideoH264SequenceParameterSet} structures representing H.264 sequence parameter sets. Each element of the array must have a unique H.264 SPS ID.")
- AutoSize("pStdPPSs", optional = true)..uint32_t("stdPPSCount", "the number of PPS provided in {@code pStdPPSs}. Its value must be less than or equal to the value of {@code maxStdPPSCount}.")
- StdVideoH264PictureParameterSet.const.p("pStdPPSs", "a pointer to an array of {@code StdVideoH264PictureParameterSet} structures representing H.264 picture parameter sets. Each element of the array must have a unique H.264 SPS-PPS ID pair.")
+ AutoSize("pStdSPSs", optional = true)..uint32_t("stdSPSCount", "the number of elements in the {@code pStdSPSs} array.")
+ StdVideoH264SequenceParameterSet.const.p("pStdSPSs", "a pointer to an array of {@code StdVideoH264SequenceParameterSet} structures describing the H.264 SPS entries to add.")
+ AutoSize("pStdPPSs", optional = true)..uint32_t("stdPPSCount", "the number of elements in the {@code pStdPPSs} array.")
+ StdVideoH264PictureParameterSet.const.p("pStdPPSs", "a pointer to an array of {@code StdVideoH264PictureParameterSet} structures describing the H.264 PPS entries to add.")
}
-val VkVideoDecodeH264SessionParametersCreateInfoEXT = struct(Module.VULKAN, "VkVideoDecodeH264SessionParametersCreateInfoEXT") {
+val VkVideoDecodeH264SessionParametersCreateInfoKHR = struct(Module.VULKAN, "VkVideoDecodeH264SessionParametersCreateInfoKHR") {
documentation =
"""
Structure specifies H.264 decoder parameter set information.
Valid Usage (Implicit)
- - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT
- - If {@code pParametersAddInfo} is not {@code NULL}, {@code pParametersAddInfo} must be a valid pointer to a valid ##VkVideoDecodeH264SessionParametersAddInfoEXT structure
+ - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR
+ - If {@code pParametersAddInfo} is not {@code NULL}, {@code pParametersAddInfo} must be a valid pointer to a valid ##VkVideoDecodeH264SessionParametersAddInfoKHR structure
See Also
- ##VkVideoDecodeH264SessionParametersAddInfoEXT
+ ##VkVideoDecodeH264SessionParametersAddInfoKHR
"""
- Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT")..VkStructureType("sType", "the type of this structure.")
+ Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR")..VkStructureType("sType", "the type of this structure.")
nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
- uint32_t("maxStdSPSCount", "the maximum number of SPS parameters that the {@code VkVideoSessionParametersKHR} can contain.")
- uint32_t("maxStdPPSCount", "the maximum number of PPS parameters that the {@code VkVideoSessionParametersKHR} can contain.")
- nullable..VkVideoDecodeH264SessionParametersAddInfoEXT.const.p("pParametersAddInfo", "{@code NULL} or a pointer to a ##VkVideoDecodeH264SessionParametersAddInfoEXT structure specifying H.264 parameters to add upon object creation.")
+ uint32_t("maxStdSPSCount", "the maximum number of H.264 SPS entries the created {@code VkVideoSessionParametersKHR} can contain.")
+ uint32_t("maxStdPPSCount", "the maximum number of H.264 PPS entries the created {@code VkVideoSessionParametersKHR} can contain.")
+ nullable..VkVideoDecodeH264SessionParametersAddInfoKHR.const.p("pParametersAddInfo", "{@code NULL} or a pointer to a ##VkVideoDecodeH264SessionParametersAddInfoKHR structure specifying H.264 parameters to add upon object creation.")
}
-val VkVideoDecodeH264PictureInfoEXT = struct(Module.VULKAN, "VkVideoDecodeH264PictureInfoEXT") {
+val VkVideoDecodeH264PictureInfoKHR = struct(Module.VULKAN, "VkVideoDecodeH264PictureInfoKHR") {
javaImport("org.lwjgl.vulkan.video.*")
documentation =
"""
Structure specifies H.264 decode picture parameters when decoding a picture.
+ Description
+ This structure is specified in the {@code pNext} chain of the ##VkVideoDecodeInfoKHR structure passed to #CmdDecodeVideoKHR() to specify the codec-specific picture information for an H.264 decode operation.
+
+
+ - Decode Output Picture Information
+
+ - If {@code pStdPictureInfo→flags.field_pic_flag} is not set, then the picture represents a frame.
+ -
+ If {@code pStdPictureInfo→flags.field_pic_flag} is set, then the picture represents a field. Specifically:
+
+ - If {@code pStdPictureInfo→flags.bottom_field_flag} is not set, then the picture represents the top field of the frame.
+ - If {@code pStdPictureInfo→flags.bottom_field_flag} is set, then the picture represents the bottom field of the frame.
+
+
+ - The image subregion used is determined according to the H.264 Decode Picture Data Access section.
+ - The decode output picture is associated with the H.264 picture information provided in {@code pStdPictureInfo}.
+
+
+
+
+ - Std Picture Information
+
+ - {@code reserved1} and {@code reserved2} are used only for padding purposes and are otherwise ignored;
+ - {@code flags.is_intra} as defined in section 3.73 of the ITU-T H.264 Specification;
+ - {@code flags.is_reference} as defined in section 3.136 of the ITU-T H.264 Specification;
+ - {@code flags.complementary_field_pair} as defined in section 3.35 of the ITU-T H.264 Specification;
+ - {@code seq_parameter_set_id} and {@code pic_parameter_set_id} are used to identify the active parameter sets, as described below;
+ - all other members are interpreted as defined in section 7.4.3 of the ITU-T H.264 Specification.
+
+
+ - Active Parameter Sets
+
+ - The active SPS is the SPS identified by the key specified in {@code StdVideoDecodeH264PictureInfo}{@code ::seq_parameter_set_id}.
+ - The active PPS is the PPS identified by the key specified by the pair constructed from {@code StdVideoDecodeH264PictureInfo}{@code ::seq_parameter_set_id} and {@code StdVideoDecodeH264PictureInfo}{@code ::pic_parameter_set_id}.
+
+
+
Valid Usage (Implicit)
- - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT
+ - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR
- {@code pStdPictureInfo} must be a valid pointer to a valid {@code StdVideoDecodeH264PictureInfo} value
- {@code pSliceOffsets} must be a valid pointer to an array of {@code sliceCount} {@code uint32_t} values
- {@code sliceCount} must be greater than 0
"""
- Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT")..VkStructureType("sType", "the type of this structure.")
+ Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR")..VkStructureType("sType", "the type of this structure.")
nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
- StdVideoDecodeH264PictureInfo.const.p("pStdPictureInfo", "a pointer to a {@code StdVideoDecodeH264PictureInfo} structure specifying the codec standard specific picture information from the H.264 specification.")
- AutoSize("pSliceOffsets")..uint32_t("sliceCount", "the number of slices in this picture.")
- uint32_t.const.p("pSliceOffsets", "a pointer to an array of {@code sliceCount} offsets indicating the start offset of each slice within the bitstream buffer.")
+ StdVideoDecodeH264PictureInfo.const.p("pStdPictureInfo", "a pointer to a {@code StdVideoDecodeH264PictureInfo} structure specifying H.264 picture information.")
+ AutoSize("pSliceOffsets")..uint32_t("sliceCount", "the number of elements in {@code pSliceOffsets}.")
+ uint32_t.const.p("pSliceOffsets", "a pointer to an array of {@code sliceCount} offsets specifying the start offset of the slices of the picture within the video bitstream buffer range specified in ##VkVideoDecodeInfoKHR.")
}
-val VkVideoDecodeH264DpbSlotInfoEXT = struct(Module.VULKAN, "VkVideoDecodeH264DpbSlotInfoEXT") {
+val VkVideoDecodeH264DpbSlotInfoKHR = struct(Module.VULKAN, "VkVideoDecodeH264DpbSlotInfoKHR") {
javaImport("org.lwjgl.vulkan.video.*")
documentation =
"""
Structure specifies H.264 decode DPB picture information.
+ Description
+ This structure is specified in the {@code pNext} chain of ##VkVideoDecodeInfoKHR{@code ::pSetupReferenceSlot}, if not {@code NULL}, and the {@code pNext} chain of the elements of ##VkVideoDecodeInfoKHR{@code ::pReferenceSlots} to specify the codec-specific reference picture information for an H.264 decode operation.
+
+
+ - Active Reference Picture Information
+
+ - If neither {@code pStdReferenceInfo→flags.top_field_flag} nor {@code pStdReferenceInfo→flags.bottom_field_flag} is set, then the picture is added as a frame reference to the list of active reference pictures.
+ - If {@code pStdReferenceInfo→flags.top_field_flag} is set, then the picture is added as a top field reference to the list of active reference pictures.
+ - If {@code pStdReferenceInfo→flags.bottom_field_flag} is set, then the picture is added as a bottom field reference to the list of active reference pictures.
+ - For each added reference picture, the corresponding image subregion used is determined according to the H.264 Decode Picture Data Access section.
+ - Each added reference picture is associated with the DPB slot index specified in the {@code slotIndex} member of the corresponding element of ##VkVideoDecodeInfoKHR{@code ::pReferenceSlots}.
+ - Each added reference picture is associated with the H.264 reference information provided in {@code pStdReferenceInfo}.
+
+
+
+ Note
+ When both the top and bottom field of an interlaced frame currently associated with a DPB slot is intended to be used as an active reference picture and both fields are stored in the same image subregion (which is the case when using #VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR which stores the two fields at even and odd scanlines of the same image subregion), both references have to be provided through a single ##VkVideoReferenceSlotInfoKHR structure that has both {@code flags.top_field_flag} and {@code flags.bottom_field_flag} set in the {@code StdVideoDecodeH264ReferenceInfo} structure pointed to by the {@code pStdReferenceInfo} member of the ##VkVideoDecodeH264DpbSlotInfoKHR structure included in the corresponding ##VkVideoReferenceSlotInfoKHR structure’s {@code pNext} chain. However, this approach can only be used when both fields are stored in the same image subregion. If that is not the case (e.g. when using #VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR which requires separate {@code codedOffset} values for the two fields and also allows storing the two fields of a frame in separate image layers or entirely separate images), then a separate ##VkVideoReferenceSlotInfoKHR structure needs to be provided for referencing the two fields, each only setting one of {@code flags.top_field_flag} or {@code flags.bottom_field_flag}, and providing the appropriate video picture resource information in ##VkVideoReferenceSlotInfoKHR{@code ::pPictureResource}.
+
+
+
+ - Reconstructed Picture Information
+
+ - If neither {@code pStdReferenceInfo→flags.top_field_flag} nor {@code pStdReferenceInfo→flags.bottom_field_flag} is set, then the picture represents a frame.
+ - If {@code pStdReferenceInfo→flags.top_field_flag} is set, then the picture represents a field, specifically, the top field of the frame.
+ - If {@code pStdReferenceInfo→flags.bottom_field_flag} is set, then the picture represents a field, specifically, the bottom field of the frame.
+ - The image subregion used is determined according to the H.264 Decode Picture Data Access section.
+ - The reconstructed picture is used to activate the DPB slot with the index specified in ##VkVideoDecodeInfoKHR{@code ::pSetupReferenceSlot→slotIndex}.
+ - The reconstructed picture is associated with the H.264 reference information provided in {@code pStdReferenceInfo}.
+
+
+
+
+ - Std Reference Information
+
+ - {@code flags.top_field_flag} is used to indicate whether the reference is used as top field reference;
+ - {@code flags.bottom_field_flag} is used to indicate whether the reference is used as bottom field reference;
+ - {@code flags.used_for_long_term_reference} is used to indicate whether the picture is marked as “used for long-term reference” as defined in section 8.2.5.1 of the ITU-T H.264 Specification;
+ - {@code flags.is_non_existing} is used to indicate whether the picture is marked as “non-existing” as defined in section 8.2.5.2 of the ITU-T H.264 Specification;
+ - all other members are interpreted as defined in section 8.2 of the ITU-T H.264 Specification.
+
+
+
Valid Usage (Implicit)
- - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT
+ - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR
- {@code pStdReferenceInfo} must be a valid pointer to a valid {@code StdVideoDecodeH264ReferenceInfo} value
"""
- Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT")..VkStructureType("sType", "the type of this structure.")
+ Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR")..VkStructureType("sType", "the type of this structure.")
nullable..opaque_const_p("pNext", "")
- StdVideoDecodeH264ReferenceInfo.const.p("pStdReferenceInfo", "a pointer to a {@code StdVideoDecodeH264ReferenceInfo} structure specifying the codec standard specific picture reference information from the H.264 specification.")
+ StdVideoDecodeH264ReferenceInfo.const.p("pStdReferenceInfo", "a pointer to a {@code StdVideoDecodeH264ReferenceInfo} structure specifying H.264 reference information.")
}
val VkTextureLODGatherFormatPropertiesAMD = struct(Module.VULKAN, "VkTextureLODGatherFormatPropertiesAMD", mutable = false) {
@@ -4400,7 +4648,7 @@ val VkPhysicalDevicePushDescriptorPropertiesKHR = struct(Module.VULKAN, "VkPhysi
Expression("#STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR")..VkStructureType("sType", "the type of this structure.").mutable()
nullable..opaque_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.").mutable()
- uint32_t("maxPushDescriptors", "the maximum number of descriptors that can be used in a descriptor set created with #DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR set.")
+ uint32_t("maxPushDescriptors", "the maximum number of descriptors that can be used in a descriptor set layout created with #DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR set.")
}
val VkConditionalRenderingBeginInfoEXT = struct(Module.VULKAN, "VkConditionalRenderingBeginInfoEXT") {
@@ -6200,6 +6448,205 @@ val VkDebugUtilsObjectTagInfoEXT = struct(Module.VULKAN, "VkDebugUtilsObjectTagI
void.const.p("pTag", "a pointer to an array of {@code tagSize} bytes containing the data to be associated with the object.")
}
+val VkAndroidHardwareBufferUsageANDROID = struct(Module.VULKAN, "VkAndroidHardwareBufferUsageANDROID", mutable = false) {
+ documentation =
+ """
+ Struct containing Android hardware buffer usage flags.
+
+ Description
+ The {@code androidHardwareBufferUsage} field must include Android hardware buffer usage flags listed in the AHardwareBuffer Usage Equivalence table when the corresponding Vulkan image usage or image creation flags are included in the {@code usage} or {@code flags} fields of ##VkPhysicalDeviceImageFormatInfo2. It must include at least one GPU usage flag ({@code AHARDWAREBUFFER_USAGE_GPU_*}), even if none of the corresponding Vulkan usages or flags are requested.
+
+ Note
+ Requiring at least one GPU usage flag ensures that Android hardware buffer memory will be allocated in a memory pool accessible to the Vulkan implementation, and that specializing the memory layout based on usage flags does not prevent it from being compatible with Vulkan. Implementations may avoid unnecessary restrictions caused by this requirement by using vendor usage flags to indicate that only the Vulkan uses indicated in ##VkImageFormatProperties2 are required.
+
+
+ Valid Usage (Implicit)
+
+ - {@code sType} must be #STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID
+
+ """
+
+ Expression("#STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID")..VkStructureType("sType", "the type of this structure.").mutable()
+ nullable..opaque_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.").mutable()
+ uint64_t("androidHardwareBufferUsage", "returns the Android hardware buffer usage flags.")
+}
+
+val VkAndroidHardwareBufferPropertiesANDROID = struct(Module.VULKAN, "VkAndroidHardwareBufferPropertiesANDROID", mutable = false) {
+ documentation =
+ """
+ Properties of External Memory Android Hardware Buffers.
+
+ Valid Usage (Implicit)
+
+ - {@code sType} must be #STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID
+ - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkAndroidHardwareBufferFormatProperties2ANDROID or ##VkAndroidHardwareBufferFormatPropertiesANDROID
+ - The {@code sType} value of each struct in the {@code pNext} chain must be unique
+
+
+ See Also
+ #GetAndroidHardwareBufferPropertiesANDROID()
+ """
+
+ Expression("#STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID")..VkStructureType("sType", "the type of this structure.").mutable()
+ PointerSetter(
+ "VkAndroidHardwareBufferFormatProperties2ANDROID", "VkAndroidHardwareBufferFormatPropertiesANDROID",
+ prepend = true
+ )..nullable..opaque_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.").mutable()
+ VkDeviceSize("allocationSize", "the size of the external memory")
+ uint32_t("memoryTypeBits", "a bitmask containing one bit set for every memory type which the specified Android hardware buffer can be imported as.")
+}
+
+val VkAndroidHardwareBufferFormatPropertiesANDROID = struct(Module.VULKAN, "VkAndroidHardwareBufferFormatPropertiesANDROID", mutable = false) {
+ documentation =
+ """
+ Structure describing the image format properties of an Android hardware buffer.
+
+ Description
+ If the Android hardware buffer has one of the formats listed in the Format Equivalence table, then {@code format} must have the equivalent Vulkan format listed in the table. Otherwise, {@code format} may be #FORMAT_UNDEFINED, indicating the Android hardware buffer can only be used with an external format.
+
+ The {@code formatFeatures} member must include #FORMAT_FEATURE_SAMPLED_IMAGE_BIT and at least one of #FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT or #FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT, and should include #FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT and #FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT.
+
+ Note
+ The {@code formatFeatures} member only indicates the features available when using an
external-format image created from the Android hardware buffer. Images from Android hardware buffers with a format other than #FORMAT_UNDEFINED are subject to the format capabilities obtained from #GetPhysicalDeviceFormatProperties2(), and #GetPhysicalDeviceImageFormatProperties2() with appropriate parameters. These sets of features are independent of each other, e.g. the external format will support sampler Y′C
BC
R conversion even if the non-external format does not, and writing to non-external format images is possible but writing to external format images is not.
+
+
+ Android hardware buffers with the same external format must have the same support for #FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT, #FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT, #FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT, #FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT, #FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT, and #FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT. in {@code formatFeatures}. Other format features may differ between Android hardware buffers that have the same external format. This allows applications to use the same {@code VkSamplerYcbcrConversion} object (and samplers and pipelines created from them) for any Android hardware buffers that have the same external format.
+
+ If {@code format} is not #FORMAT_UNDEFINED, then the value of {@code samplerYcbcrConversionComponents} must be valid when used as the {@code components} member of ##VkSamplerYcbcrConversionCreateInfo with that format. If {@code format} is #FORMAT_UNDEFINED, all members of {@code samplerYcbcrConversionComponents} must be the identity swizzle.
+
+ Implementations may not always be able to determine the color model, numerical range, or chroma offsets of the image contents, so the values in ##VkAndroidHardwareBufferFormatPropertiesANDROID are only suggestions. Applications should treat these values as sensible defaults to use in the absence of more reliable information obtained through some other means. If the underlying physical device is also usable via OpenGL ES with the {@code GL_OES_EGL_image_external} extension, the implementation should suggest values that will produce similar sampled values as would be obtained by sampling the same external image via {@code samplerExternalOES} in OpenGL ES using equivalent sampler parameters.
+
+ Note
+ Since
{@code GL_OES_EGL_image_external} does not require the same sampling and conversion calculations as Vulkan does, achieving identical results between APIs
may not be possible on some implementations.
+
+
+ Valid Usage (Implicit)
+
+ - {@code sType} must be #STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID
+
+
+ See Also
+ ##VkComponentMapping
+ """
+
+ Expression("#STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID")..VkStructureType("sType", "the type of this structure.").mutable()
+ nullable..opaque_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.").mutable()
+ VkFormat("format", "the Vulkan format corresponding to the Android hardware buffer’s format, or #FORMAT_UNDEFINED if there is not an equivalent Vulkan format.")
+ uint64_t("externalFormat", "an implementation-defined external format identifier for use with ##VkExternalFormatANDROID. It must not be zero.")
+ VkFormatFeatureFlags("formatFeatures", "describes the capabilities of this external format when used with an image bound to memory imported from {@code buffer}.")
+ VkComponentMapping("samplerYcbcrConversionComponents", "the component swizzle that should be used in ##VkSamplerYcbcrConversionCreateInfo.")
+ VkSamplerYcbcrModelConversion("suggestedYcbcrModel", "a suggested color model to use in the ##VkSamplerYcbcrConversionCreateInfo.")
+ VkSamplerYcbcrRange("suggestedYcbcrRange", "a suggested numerical value range to use in ##VkSamplerYcbcrConversionCreateInfo.")
+ VkChromaLocation("suggestedXChromaOffset", "a suggested X chroma offset to use in ##VkSamplerYcbcrConversionCreateInfo.")
+ VkChromaLocation("suggestedYChromaOffset", "a suggested Y chroma offset to use in ##VkSamplerYcbcrConversionCreateInfo.")
+}
+
+val VkImportAndroidHardwareBufferInfoANDROID = struct(Module.VULKAN, "VkImportAndroidHardwareBufferInfoANDROID") {
+ documentation =
+ """
+ Import memory from an Android hardware buffer.
+
+ Description
+ If the #AllocateMemory() command succeeds, the implementation must acquire a reference to the imported hardware buffer, which it must release when the device memory object is freed. If the command fails, the implementation must not retain a reference.
+
+ Valid Usage
+
+ - If {@code buffer} is not {@code NULL}, Android hardware buffers must be supported for import, as reported by ##VkExternalImageFormatProperties or ##VkExternalBufferProperties
+ - If {@code buffer} is not {@code NULL}, it must be a valid Android hardware buffer object with {@code AHardwareBuffer_Desc}{@code ::usage} compatible with Vulkan as described in Android Hardware Buffers
+
+
+ Valid Usage (Implicit)
+
+ - {@code sType} must be #STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
+ - {@code buffer} must be a valid pointer to an {@code AHardwareBuffer} value
+
+ """
+
+ Expression("#STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID")..VkStructureType("sType", "the type of this structure.")
+ nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
+ AHardwareBuffer.p("buffer", "the Android hardware buffer to import.")
+}
+
+val VkMemoryGetAndroidHardwareBufferInfoANDROID = struct(Module.VULKAN, "VkMemoryGetAndroidHardwareBufferInfoANDROID") {
+ documentation =
+ """
+ Structure describing an Android hardware buffer memory export operation.
+
+ Valid Usage
+
+ - #EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID must have been included in ##VkExportMemoryAllocateInfo{@code ::handleTypes} when {@code memory} was created
+ - If the {@code pNext} chain of the ##VkMemoryAllocateInfo used to allocate {@code memory} included a ##VkMemoryDedicatedAllocateInfo with non-{@code NULL} {@code image} member, then that {@code image} must already be bound to {@code memory}
+
+
+ Valid Usage (Implicit)
+
+ - {@code sType} must be #STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
+ - {@code pNext} must be {@code NULL}
+ - {@code memory} must be a valid {@code VkDeviceMemory} handle
+
+
+ See Also
+ #GetMemoryAndroidHardwareBufferANDROID()
+ """
+
+ Expression("#STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID")..VkStructureType("sType", "the type of this structure.")
+ nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
+ VkDeviceMemory("memory", "the memory object from which the Android hardware buffer will be exported.")
+}
+
+val VkExternalFormatANDROID = struct(Module.VULKAN, "VkExternalFormatANDROID") {
+ documentation =
+ """
+ Structure containing an Android hardware buffer external format.
+
+ Description
+ If {@code externalFormat} is zero, the effect is as if the ##VkExternalFormatANDROID structure was not present. Otherwise, the {@code image} will have the specified external format.
+
+ Valid Usage
+
+ - {@code externalFormat} must be 0 or a value returned in the {@code externalFormat} member of ##VkAndroidHardwareBufferFormatPropertiesANDROID by an earlier call to #GetAndroidHardwareBufferPropertiesANDROID()
+
+
+ Valid Usage (Implicit)
+
+ - {@code sType} must be #STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID
+
+ """
+
+ Expression("#STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID")..VkStructureType("sType", "the type of this structure.")
+ nullable..opaque_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
+ uint64_t("externalFormat", "an implementation-defined identifier for the external format")
+}
+
+val VkAndroidHardwareBufferFormatProperties2ANDROID = struct(Module.VULKAN, "VkAndroidHardwareBufferFormatProperties2ANDROID", mutable = false) {
+ documentation =
+ """
+ Structure describing the image format properties of an Android hardware buffer.
+
+ Description
+ The bits reported in {@code formatFeatures} must include the bits reported in the corresponding fields of ##VkAndroidHardwareBufferFormatPropertiesANDROID{@code ::formatFeatures}.
+
+ Valid Usage (Implicit)
+
+ - {@code sType} must be #STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID
+
+
+ See Also
+ ##VkComponentMapping
+ """
+
+ Expression("#STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID")..VkStructureType("sType", "the type of this structure.").mutable()
+ nullable..opaque_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.").mutable()
+ VkFormat("format", "the Vulkan format corresponding to the Android hardware buffer’s format, or #FORMAT_UNDEFINED if there is not an equivalent Vulkan format.")
+ uint64_t("externalFormat", "an implementation-defined external format identifier for use with ##VkExternalFormatANDROID. It must not be zero.")
+ VkFormatFeatureFlags2("formatFeatures", "describes the capabilities of this external format when used with an image bound to memory imported from {@code buffer}.")
+ VkComponentMapping("samplerYcbcrConversionComponents", "the component swizzle that should be used in ##VkSamplerYcbcrConversionCreateInfo.")
+ VkSamplerYcbcrModelConversion("suggestedYcbcrModel", "a suggested color model to use in the ##VkSamplerYcbcrConversionCreateInfo.")
+ VkSamplerYcbcrRange("suggestedYcbcrRange", "a suggested numerical value range to use in ##VkSamplerYcbcrConversionCreateInfo.")
+ VkChromaLocation("suggestedXChromaOffset", "a suggested X chroma offset to use in ##VkSamplerYcbcrConversionCreateInfo.")
+ VkChromaLocation("suggestedYChromaOffset", "a suggested Y chroma offset to use in ##VkSamplerYcbcrConversionCreateInfo.")
+}
+
val VkSamplerReductionModeCreateInfoEXT = struct(Module.VULKAN, "VkSamplerReductionModeCreateInfoEXT", alias = VkSamplerReductionModeCreateInfo) {
documentation = "See ##VkSamplerReductionModeCreateInfo."
@@ -7225,6 +7672,8 @@ val VkCopyAccelerationStructureInfoKHR = struct(Module.VULKAN, "VkCopyAccelerati
- If {@code mode} is #COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR, {@code src} must have been constructed with #BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR in the build
- The {@code buffer} used to create {@code src} must be bound to device memory
- The {@code buffer} used to create {@code dst} must be bound to device memory
+ - The range of memory backing {@code dst} that is accessed by this command must not overlap the memory backing {@code src} that is accessed by this command
+ - {@code dst} must be bound completely and contiguously to a single {@code VkDeviceMemory} object via #BindAccelerationStructureMemoryNV()
Valid Usage (Implicit)
@@ -7275,6 +7724,9 @@ val VkRayTracingShaderGroupCreateInfoKHR = struct(Module.VULKAN, "VkRayTracingSh
"""
Structure specifying shaders in a shader group.
+ Description
+ If the pipeline is created with #PIPELINE_CREATE_LIBRARY_BIT_KHR and the pipelineLibraryGroupHandles feature is enabled, {@code pShaderGroupCaptureReplayHandle} is inherited by all pipelines which link against this pipeline and remains bitwise identical for any pipeline which references this pipeline library.
+
Valid Usage
- If {@code type} is #RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR then {@code generalShader} must be a valid index into ##VkRayTracingPipelineCreateInfoKHR{@code ::pStages} referring to a shader of #SHADER_STAGE_RAYGEN_BIT_KHR, #SHADER_STAGE_MISS_BIT_KHR, or #SHADER_STAGE_CALLABLE_BIT_KHR
@@ -9106,7 +9558,7 @@ val VkPhysicalDeviceShaderCorePropertiesAMD = struct(Module.VULKAN, "VkPhysicalD
uint32_t("vgprAllocationGranularity", "an unsigned integer value indicating the granularity of VGPR allocation for a wave.")
}
-val VkVideoDecodeH265ProfileInfoEXT = struct(Module.VULKAN, "VkVideoDecodeH265ProfileInfoEXT") {
+val VkVideoDecodeH265ProfileInfoKHR = struct(Module.VULKAN, "VkVideoDecodeH265ProfileInfoKHR") {
javaImport("org.lwjgl.vulkan.video.*")
documentation =
"""
@@ -9114,138 +9566,200 @@ val VkVideoDecodeH265ProfileInfoEXT = struct(Module.VULKAN, "VkVideoDecodeH265Pr
Valid Usage (Implicit)
- - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_EXT
+ - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR
"""
- Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_EXT")..VkStructureType("sType", "the type of this structure.")
+ Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR")..VkStructureType("sType", "the type of this structure.")
nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
- StdVideoH265ProfileIdc("stdProfileIdc", "a {@code StdVideoH265ProfileIdc} value specifying the H.265 codec profile IDC.")
+ StdVideoH265ProfileIdc("stdProfileIdc", "a {@code StdVideoH265ProfileIdc} value specifying the H.265 codec profile IDC, as defined in section A3 of the ITU-T H.265 Specification.")
}
-val VkVideoDecodeH265CapabilitiesEXT = struct(Module.VULKAN, "VkVideoDecodeH265CapabilitiesEXT", mutable = false) {
+val VkVideoDecodeH265CapabilitiesKHR = struct(Module.VULKAN, "VkVideoDecodeH265CapabilitiesKHR", mutable = false) {
javaImport("org.lwjgl.vulkan.video.*")
documentation =
"""
- Structure specifies H.265 decode capabilities parameters when decoding a frame.
+ Structure describing H.265 decode capabilities.
Valid Usage (Implicit)
- - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT
+ - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR
"""
- Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT")..VkStructureType("sType", "the type of this structure.").mutable()
+ Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR")..VkStructureType("sType", "the type of this structure.").mutable()
nullable..opaque_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.").mutable()
- StdVideoH265LevelIdc("maxLevelIdc", "")
+ StdVideoH265LevelIdc("maxLevelIdc", "a {@code StdVideoH265LevelIdc} value specifying the maximum H.265 level supported by the profile, as defined in section A.4 of the ITU-T H.265 Specification.")
}
-val VkVideoDecodeH265SessionParametersAddInfoEXT = struct(Module.VULKAN, "VkVideoDecodeH265SessionParametersAddInfoEXT") {
+val VkVideoDecodeH265SessionParametersAddInfoKHR = struct(Module.VULKAN, "VkVideoDecodeH265SessionParametersAddInfoKHR") {
javaImport("org.lwjgl.vulkan.video.*")
documentation =
"""
Structure specifies H.265 decoder parameter set information.
+ Description
+ This structure can be specified in the following places:
+
+
+ - In the {@code pParametersAddInfo} member of the ##VkVideoDecodeH265SessionParametersCreateInfoKHR structure specified in the {@code pNext} chain of ##VkVideoSessionParametersCreateInfoKHR used to create a video session parameters object. In this case, if the video codec operation the video session parameters object is created with is #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then it defines the set of initial parameters to add to the created object (see Creating Video Session Parameters).
+ - In the {@code pNext} chain of ##VkVideoSessionParametersUpdateInfoKHR. In this case, if the video codec operation the video session parameters object to be updated was created with is #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then it defines the set of parameters to add to it (see Updating Video Session Parameters).
+
+
Valid Usage
- - The values of {@code stdVPSCount}, {@code stdSPSCount} and {@code stdPPSCount} must be less than or equal to the values of {@code maxStdVPSCount}, {@code maxStdSPSCount} and {@code maxStdPPSCount}, respectively
- - When the {@code maxStdVPSCount} number of parameters of type StdVideoH265VideoParameterSet in the Video Session Parameters object is reached, no additional parameters of that type can be added to the object. #ERROR_TOO_MANY_OBJECTS will be returned if an attempt is made to add additional data to this object at this point
- - When the {@code maxStdSPSCount} number of parameters of type StdVideoH265SequenceParameterSet in the Video Session Parameters object is reached, no additional parameters of that type can be added to the object. #ERROR_TOO_MANY_OBJECTS will be returned if an attempt is made to add additional data to this object at this point
- - When the {@code maxStdPPSCount} number of parameters of type StdVideoH265PictureParameterSet in the Video Session Parameters object is reached, no additional parameters of that type can be added to the object. #ERROR_TOO_MANY_OBJECTS will be returned if an attempt is made to add additional data to this object at this point
- - Each entry to be added must have a unique, to the rest of the parameter array entries and the existing parameters in the Video Session Parameters Object that is being updated, VPS-SPS-PPS IDs
- - Parameter entries that already exist in Video Session Parameters object with a particular VPS-SPS-PPS IDs cannot be replaced nor updated
- - When creating a new object using a Video Session Parameters as a template, the array’s parameters with the same VPS-SPS-PPS IDs as the ones from the template take precedence
- - VPS/SPS/PPS parameters must comply with the limits specified in ##VkVideoSessionCreateInfoKHR during Video Session creation
+ - The {@code vps_video_parameter_set_id} member of each {@code StdVideoH265VideoParameterSet} structure specified in the elements of {@code pStdVPSs} must be unique within {@code pStdVPSs}
+ - The pair constructed from the {@code sps_video_parameter_set_id} and {@code sps_seq_parameter_set_id} members of each {@code StdVideoH265SequenceParameterSet} structure specified in the elements of {@code pStdSPSs} must be unique within {@code pStdSPSs}
+ - The triplet constructed from the {@code sps_video_parameter_set_id}, {@code pps_seq_parameter_set_id}, and {@code pps_pic_parameter_set_id} members of each {@code StdVideoH265PictureParameterSet} structure specified in the elements of {@code pStdPPSs} must be unique within {@code pStdPPSs}
Valid Usage (Implicit)
- - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT
+ - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR
- If {@code stdVPSCount} is not 0, {@code pStdVPSs} must be a valid pointer to an array of {@code stdVPSCount} {@code StdVideoH265VideoParameterSet} values
- If {@code stdSPSCount} is not 0, {@code pStdSPSs} must be a valid pointer to an array of {@code stdSPSCount} {@code StdVideoH265SequenceParameterSet} values
- If {@code stdPPSCount} is not 0, {@code pStdPPSs} must be a valid pointer to an array of {@code stdPPSCount} {@code StdVideoH265PictureParameterSet} values
See Also
- ##VkVideoDecodeH265SessionParametersCreateInfoEXT
+ ##VkVideoDecodeH265SessionParametersCreateInfoKHR
"""
- Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT")..VkStructureType("sType", "the type of this structure.")
+ Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR")..VkStructureType("sType", "the type of this structure.")
nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
- AutoSize("pStdVPSs", optional = true)..uint32_t("stdVPSCount", "the number of VPS elements in {@code pStdVPSs}.")
- StdVideoH265VideoParameterSet.const.p("pStdVPSs", "a pointer to an array of {@code stdVPSCount} {@code StdVideoH265VideoParameterSet} structures representing H.265 video parameter sets.")
- AutoSize("pStdSPSs", optional = true)..uint32_t("stdSPSCount", "the number of SPS elements in the {@code pStdSPSs}. Its value must be less than or equal to the value of {@code maxStdSPSCount}.")
- StdVideoH265SequenceParameterSet.const.p("pStdSPSs", "a pointer to an array of {@code StdVideoH265SequenceParameterSet} structures representing H.265 sequence parameter sets. Each element of the array must have a unique H.265 VPS-SPS ID pair.")
- AutoSize("pStdPPSs", optional = true)..uint32_t("stdPPSCount", "the number of PPS provided in {@code pStdPPSs}. Its value must be less than or equal to the value of {@code maxStdPPSCount}.")
- StdVideoH265PictureParameterSet.const.p("pStdPPSs", "a pointer to an array of {@code StdVideoH265PictureParameterSet} structures representing H.265 picture parameter sets. Each element of the array entry must have a unique H.265 VPS-SPS-PPS ID tuple.")
+ AutoSize("pStdVPSs", optional = true)..uint32_t("stdVPSCount", "the number of elements in the {@code pStdVPSs} array.")
+ StdVideoH265VideoParameterSet.const.p("pStdVPSs", "a pointer to an array of {@code StdVideoH265VideoParameterSet} structures describing the H.265 VPS entries to add.")
+ AutoSize("pStdSPSs", optional = true)..uint32_t("stdSPSCount", "the number of elements in the {@code pStdSPSs} array.")
+ StdVideoH265SequenceParameterSet.const.p("pStdSPSs", "a pointer to an array of {@code StdVideoH265SequenceParameterSet} structures describing the H.265 SPS entries to add.")
+ AutoSize("pStdPPSs", optional = true)..uint32_t("stdPPSCount", "the number of elements in the {@code pStdPPSs} array.")
+ StdVideoH265PictureParameterSet.const.p("pStdPPSs", "a pointer to an array of {@code StdVideoH265PictureParameterSet} structures describing the H.265 PPS entries to add.")
}
-val VkVideoDecodeH265SessionParametersCreateInfoEXT = struct(Module.VULKAN, "VkVideoDecodeH265SessionParametersCreateInfoEXT") {
+val VkVideoDecodeH265SessionParametersCreateInfoKHR = struct(Module.VULKAN, "VkVideoDecodeH265SessionParametersCreateInfoKHR") {
documentation =
"""
Structure specifies H.265 decoder parameter set information.
- Description
- When a {@code VkVideoSessionParametersKHR} object contains {@code maxStdVPSCount} {@code StdVideoH265VideoParameterSet} entries, no additional {@code StdVideoH265VideoParameterSet} entries can be added to it, and #ERROR_TOO_MANY_OBJECTS will be returned if an attempt is made to add these entries. When a {@code VkVideoSessionParametersKHR} object contains {@code maxStdSPSCount} {@code StdVideoH265SequenceParameterSet} entries, no additional {@code StdVideoH265SequenceParameterSet} entries can be added to it, and #ERROR_TOO_MANY_OBJECTS will be returned if an attempt is made to add these entries. When a {@code VkVideoSessionParametersKHR} object contains {@code maxStdPPSCount} {@code StdVideoH265PictureParameterSet} entries, no additional {@code StdVideoH265PictureParameterSet} entries can be added to it, and #ERROR_TOO_MANY_OBJECTS will be returned if an attempt is made to add these entries.
-
- The provided H.265 VPS/SPS/PPS parameters must be within the limits specified during decoder creation for the decoder specified in ##VkVideoSessionParametersCreateInfoKHR.
-
Valid Usage (Implicit)
- - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT
- - If {@code pParametersAddInfo} is not {@code NULL}, {@code pParametersAddInfo} must be a valid pointer to a valid ##VkVideoDecodeH265SessionParametersAddInfoEXT structure
+ - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR
+ - If {@code pParametersAddInfo} is not {@code NULL}, {@code pParametersAddInfo} must be a valid pointer to a valid ##VkVideoDecodeH265SessionParametersAddInfoKHR structure
See Also
- ##VkVideoDecodeH265SessionParametersAddInfoEXT
+ ##VkVideoDecodeH265SessionParametersAddInfoKHR
"""
- Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT")..VkStructureType("sType", "the type of this structure.")
+ Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR")..VkStructureType("sType", "the type of this structure.")
nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
- uint32_t("maxStdVPSCount", "the maximum number of entries of type {@code StdVideoH265VideoParameterSet} within {@code VkVideoSessionParametersKHR}.")
- uint32_t("maxStdSPSCount", "the maximum number of SPS parameters that the {@code VkVideoSessionParametersKHR} can contain.")
- uint32_t("maxStdPPSCount", "the maximum number of PPS parameters that the {@code VkVideoSessionParametersKHR} can contain.")
- nullable..VkVideoDecodeH265SessionParametersAddInfoEXT.const.p("pParametersAddInfo", "{@code NULL} or a pointer to a ##VkVideoDecodeH265SessionParametersAddInfoEXT structure specifying H.265 parameters to add upon object creation.")
+ uint32_t("maxStdVPSCount", "the maximum number of H.265 VPS entries the created {@code VkVideoSessionParametersKHR} can contain.")
+ uint32_t("maxStdSPSCount", "the maximum number of H.265 SPS entries the created {@code VkVideoSessionParametersKHR} can contain.")
+ uint32_t("maxStdPPSCount", "the maximum number of H.265 PPS entries the created {@code VkVideoSessionParametersKHR} can contain.")
+ nullable..VkVideoDecodeH265SessionParametersAddInfoKHR.const.p("pParametersAddInfo", "{@code NULL} or a pointer to a ##VkVideoDecodeH265SessionParametersAddInfoKHR structure specifying H.265 parameters to add upon object creation.")
}
-val VkVideoDecodeH265PictureInfoEXT = struct(Module.VULKAN, "VkVideoDecodeH265PictureInfoEXT") {
+val VkVideoDecodeH265PictureInfoKHR = struct(Module.VULKAN, "VkVideoDecodeH265PictureInfoKHR") {
javaImport("org.lwjgl.vulkan.video.*")
documentation =
"""
Structure specifies H.265 picture information when decoding a frame.
+ Description
+ This structure is specified in the {@code pNext} chain of the ##VkVideoDecodeInfoKHR structure passed to #CmdDecodeVideoKHR() to specify the codec-specific picture information for an H.265 decode operation.
+
+
+ - Decode Output Picture Information
+
+
+
+
+ - Std Picture Information
+
+ - {@code reserved} is used only for padding purposes and is otherwise ignored;
+ - {@code flags.IrapPicFlag} as defined in section 3.73 of the ITU-T H.265 Specification;
+ - {@code flags.IdrPicFlag} as defined in section 3.67 of the ITU-T H.265 Specification;
+ - {@code flags.IsReference} as defined in section 3.132 of the ITU-T H.265 Specification;
+ - {@code sps_video_parameter_set_id}, {@code pps_seq_parameter_set_id}, and {@code pps_pic_parameter_set_id} are used to identify the active parameter sets, as described below;
+ - {@code PicOrderCntVal} as defined in section 8.3.1 of the ITU-T H.265 Specification;
+ - {@code NumBitsForSTRefPicSetInSlice} is the number of bits used in {@code st_ref_pic_set} when {@code short_term_ref_pic_set_sps_flag} is 0, or 0 otherwise, as defined in sections 7.4.7 and 7.4.8 of the ITU-T H.265 Specification;
+ - {@code NumDeltaPocsOfRefRpsIdx} is the value of {@code NumDeltaPocs[RefRpsIdx]} when {@code short_term_ref_pic_set_sps_flag} is 1, or 0 otherwise, as defined in sections 7.4.7 and 7.4.8 of the ITU-T H.265 Specification;
+ - {@code RefPicSetStCurrBefore}, {@code RefPicSetStCurrAfter}, and {@code RefPicSetLtCurr} are interpreted as defined in section 8.3.2 of the ITU-T H.265 Specification where each element of these arrays either identifies an active reference picture using its DPB slot index or contains the value 0xFF to indicate "no reference picture";
+ - all other members are interpreted as defined in section 8.3.2 of the ITU-T H.265 Specification.
+
+
+ - Active Parameter Sets
+
+ - The active VPS is the VPS identified by the key specified in {@code StdVideoDecodeH265PictureInfo}{@code ::sps_video_parameter_set_id}.
+ - The active SPS is the SPS identified by the key specified by the pair constructed from {@code StdVideoDecodeH265PictureInfo}{@code ::sps_video_parameter_set_id} and {@code StdVideoDecodeH265PictureInfo}{@code ::pps_seq_parameter_set_id}.
+ - The active PPS is the PPS identified by the key specified by the triplet constructed from {@code StdVideoDecodeH265PictureInfo}{@code ::sps_video_parameter_set_id}, {@code StdVideoDecodeH265PictureInfo}{@code ::pps_seq_parameter_set_id}, and {@code StdVideoDecodeH265PictureInfo}{@code ::pps_pic_parameter_set_id}.
+
+
+
Valid Usage (Implicit)
- - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT
+ - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR
- {@code pStdPictureInfo} must be a valid pointer to a {@code StdVideoDecodeH265PictureInfo} value
- {@code pSliceSegmentOffsets} must be a valid pointer to an array of {@code sliceSegmentCount} {@code uint32_t} values
- {@code sliceSegmentCount} must be greater than 0
"""
- Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT")..VkStructureType("sType", "the type of this structure.")
+ Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR")..VkStructureType("sType", "the type of this structure.")
nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
- StdVideoDecodeH265PictureInfo.p("pStdPictureInfo", "a pointer to a {@code StdVideoDecodeH265PictureInfo} structure specifying codec standard specific picture information from the H.265 specification.")
- AutoSize("pSliceSegmentOffsets")..uint32_t("sliceSegmentCount", "the number of slice segments in this picture.")
- uint32_t.const.p("pSliceSegmentOffsets", "a pointer to an array of {@code sliceSegmentCount} offsets indicating the start offset of each slice segment within the bitstream buffer.")
+ StdVideoDecodeH265PictureInfo.p("pStdPictureInfo", "a pointer to a {@code StdVideoDecodeH265PictureInfo} structure specifying H.265 picture information.")
+ AutoSize("pSliceSegmentOffsets")..uint32_t("sliceSegmentCount", "the number of elements in {@code pSliceSegmentOffsets}.")
+ uint32_t.const.p("pSliceSegmentOffsets", "a pointer to an array of {@code sliceSegmentCount} offsets specifying the start offset of the slice segments of the picture within the video bitstream buffer range specified in ##VkVideoDecodeInfoKHR.")
}
-val VkVideoDecodeH265DpbSlotInfoEXT = struct(Module.VULKAN, "VkVideoDecodeH265DpbSlotInfoEXT") {
+val VkVideoDecodeH265DpbSlotInfoKHR = struct(Module.VULKAN, "VkVideoDecodeH265DpbSlotInfoKHR") {
javaImport("org.lwjgl.vulkan.video.*")
documentation =
"""
Structure specifies H.265 DPB information when decoding a frame.
+ Description
+ This structure is specified in the {@code pNext} chain of ##VkVideoDecodeInfoKHR{@code ::pSetupReferenceSlot}, if not {@code NULL}, and the {@code pNext} chain of the elements of ##VkVideoDecodeInfoKHR{@code ::pReferenceSlots} to specify the codec-specific reference picture information for an H.265 decode operation.
+
+
+ - Active Reference Picture Information
+
+ - The image subregion used is determined according to the H.265 Decode Picture Data Access section.
+ - The reference picture is associated with the DPB slot index specified in the {@code slotIndex} member of the corresponding element of ##VkVideoDecodeInfoKHR{@code ::pReferenceSlots}.
+ - The reference picture is associated with the H.265 reference information provided in {@code pStdReferenceInfo}.
+
+
+
+
+ - Reconstructed Picture Information
+
+
+
+
+ - Std Reference Information
+
+ - {@code flags.used_for_long_term_reference} is used to indicate whether the picture is marked as “used for long-term reference” as defined in section 8.3.2 of the ITU-T H.265 Specification;
+ - {@code flags.unused_for_reference} is used to indicate whether the picture is marked as “unused for reference” as defined in section 8.3.2 of the ITU-T H.265 Specification;
+ - all other members are interpreted as defined in section 8.3 of the ITU-T H.265 Specification.
+
+
+
Valid Usage (Implicit)
- - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT
+ - {@code sType} must be #STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR
- {@code pStdReferenceInfo} must be a valid pointer to a valid {@code StdVideoDecodeH265ReferenceInfo} value
"""
- Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT")..VkStructureType("sType", "the type of this structure.")
+ Expression("#STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR")..VkStructureType("sType", "the type of this structure.")
nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
- StdVideoDecodeH265ReferenceInfo.const.p("pStdReferenceInfo", "a pointer to a {@code StdVideoDecodeH265ReferenceInfo} structure specifying the codec standard specific picture reference information from the H.264 specification.")
+ StdVideoDecodeH265ReferenceInfo.const.p("pStdReferenceInfo", "a pointer to a {@code StdVideoDecodeH265ReferenceInfo} structure specifying reference picture information described in section 8.3 of the ITU-T H.265 Specification.")
}
val VkDeviceQueueGlobalPriorityCreateInfoKHR = struct(Module.VULKAN, "VkDeviceQueueGlobalPriorityCreateInfoKHR") {
@@ -11652,17 +12166,17 @@ val VkSwapchainPresentScalingCreateInfoEXT = struct(Module.VULKAN, "VkSwapchainP
Scaling behavior when presenting to the surface.
Description
- If {@code presentScaling} is 0, the result of presenting a swapchain image with dimensions that do not match the surface dimensions is implementation and platform-dependent. If {@code presentGravityX} or {@code presentGravityY} are 0, the presentation gravity must match that defined by the native platform surface on platforms which define surface gravity.
+ If {@code scalingBehavior} is 0, the result of presenting a swapchain image with dimensions that do not match the surface dimensions is implementation and platform-dependent. If {@code presentGravityX} or {@code presentGravityY} are 0, the presentation gravity must match that defined by the native platform surface on platforms which define surface gravity.
Valid Usage
- If {@code presentGravityX} is 0, {@code presentGravityY} must be 0
- If {@code presentGravityX} is not 0, {@code presentGravityY} must not be 0
- - {@code presentScaling} must not have more than one bit set
+ - {@code scalingBehavior} must not have more than one bit set
- {@code presentGravityX} must not have more than one bit set
- {@code presentGravityY} must not have more than one bit set
- - {@code presentScaling} must be a valid scaling method for the surface as returned in ##VkSurfacePresentScalingCapabilitiesEXT{@code ::supportedPresentScaling}, given ##VkSwapchainCreateInfoKHR{@code ::presentMode} in ##VkSurfacePresentModeEXT
- - If the swapchain is created with ##VkSwapchainPresentModesCreateInfoEXT, {@code presentScaling} must be a valid scaling method for the surface as returned in ##VkSurfacePresentScalingCapabilitiesEXT{@code ::supportedPresentScaling}, given each present mode in ##VkSwapchainPresentModesCreateInfoEXT{@code ::pPresentModes} in ##VkSurfacePresentModeEXT
+ - {@code scalingBehavior} must be a valid scaling method for the surface as returned in ##VkSurfacePresentScalingCapabilitiesEXT{@code ::supportedPresentScaling}, given ##VkSwapchainCreateInfoKHR{@code ::presentMode} in ##VkSurfacePresentModeEXT
+ - If the swapchain is created with ##VkSwapchainPresentModesCreateInfoEXT, {@code scalingBehavior} must be a valid scaling method for the surface as returned in ##VkSurfacePresentScalingCapabilitiesEXT{@code ::supportedPresentScaling}, given each present mode in ##VkSwapchainPresentModesCreateInfoEXT{@code ::pPresentModes} in ##VkSurfacePresentModeEXT
- {@code presentGravityX} must be a valid x-axis present gravity for the surface as returned in ##VkSurfacePresentScalingCapabilitiesEXT{@code ::supportedPresentGravityX}, given ##VkSwapchainCreateInfoKHR{@code ::presentMode} in ##VkSurfacePresentModeEXT
- If the swapchain is created with ##VkSwapchainPresentModesCreateInfoEXT, {@code presentGravityX} must be a valid x-axis present gravity for the surface as returned in ##VkSurfacePresentScalingCapabilitiesEXT{@code ::supportedPresentGravityX}, given each present mode in ##VkSwapchainPresentModesCreateInfoEXT{@code ::pPresentModes} in ##VkSurfacePresentModeEXT
- {@code presentGravityY} must be a valid y-axis present gravity for the surface as returned in ##VkSurfacePresentScalingCapabilitiesEXT{@code ::supportedPresentGravityY}, given ##VkSwapchainCreateInfoKHR{@code ::presentMode} in ##VkSurfacePresentModeEXT
@@ -11680,9 +12194,9 @@ val VkSwapchainPresentScalingCreateInfoEXT = struct(Module.VULKAN, "VkSwapchainP
Expression("#STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT")..VkStructureType("sType", "the type of this structure.")
nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
- VkPresentScalingFlagsEXT("scalingBehavior", "")
- VkPresentGravityFlagsEXT("presentGravityX", "0 or the x-axis direction in which swapchain image pixels gravitate relative to the surface when {@code presentScaling} does not result in a one-to-one pixel mapping between the scaled swapchain image and the surface.")
- VkPresentGravityFlagsEXT("presentGravityY", "0 or the y-axis direction in which swapchain image pixels gravitate relative to the surface when {@code presentScaling} does not result in a one-to-one pixel mapping between the scaled swapchain image and the surface.")
+ VkPresentScalingFlagsEXT("scalingBehavior", "0 or the scaling method to use when the dimensions of the surface and swapchain images differ.")
+ VkPresentGravityFlagsEXT("presentGravityX", "0 or the x-axis direction in which swapchain image pixels gravitate relative to the surface when {@code scalingBehavior} does not result in a one-to-one pixel mapping between the scaled swapchain image and the surface.")
+ VkPresentGravityFlagsEXT("presentGravityY", "0 or the y-axis direction in which swapchain image pixels gravitate relative to the surface when {@code scalingBehavior} does not result in a one-to-one pixel mapping between the scaled swapchain image and the surface.")
}
val VkReleaseSwapchainImagesInfoEXT = struct(Module.VULKAN, "VkReleaseSwapchainImagesInfoEXT") {
@@ -12743,7 +13257,7 @@ val VkVideoEncodeInfoKHR = struct(Module.VULKAN, "VkVideoEncodeInfoKHR") {
Valid Usage
- - The bound video session object must not be in uninitialized state
+ - The bound video session must not be in uninitialized state at the time the command is executed on the device
Valid Usage (Implicit)
@@ -12870,7 +13384,7 @@ val VkVideoEncodeRateControlInfoKHR = struct(Module.VULKAN, "VkVideoEncodeRateCo
Description
Including this structure in the {@code pNext} chain of ##VkVideoCodingControlInfoKHR and including #VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR in ##VkVideoCodingControlInfoKHR{@code ::flags} will define stream rate control settings for video encoding.
- Additional structures providing codec-specific rate control parameters may need to be included in the {@code pNext} chain of ##VkVideoCodingControlInfoKHR depending on the codec profile the bound video session was created with and the parameters specified in ##VkVideoEncodeRateControlInfoKHR (see Video Session Control).
+ Additional structures providing codec-specific rate control parameters may need to be included in the {@code pNext} chain of ##VkVideoCodingControlInfoKHR depending on the codec profile the bound video session was created with and the parameters specified in ##VkVideoEncodeRateControlInfoKHR (see Video Coding Control).
To ensure that the video session is properly initialized with stream-level rate control settings, the application must call #CmdControlVideoCodingKHR() with stream-level rate control settings at least once in execution order before the first #CmdEncodeVideoKHR() command that is executed after video session reset. If not provided, default implementation-specific stream rate control settings will be used.
@@ -14975,6 +15489,35 @@ val VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT = struct(Module.VULKAN, "VkPhysic
VkBool32("formatRgba10x6WithoutYCbCrSampler", "indicates that #FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 can be used with a {@code VkImageView} with {@code subresourceRange.aspectMask} equal to #IMAGE_ASPECT_COLOR_BIT without a sampler Y′CBCR conversion enabled.")
}
+val VkDirectFBSurfaceCreateInfoEXT = struct(Module.VULKAN, "VkDirectFBSurfaceCreateInfoEXT") {
+ documentation =
+ """
+ Structure specifying parameters of a newly created DirectFB surface object.
+
+ Valid Usage
+
+ - {@code dfb} must point to a valid DirectFB {@code IDirectFB}
+ - {@code surface} must point to a valid DirectFB {@code IDirectFBSurface}
+
+
+ Valid Usage (Implicit)
+
+ - {@code sType} must be #STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT
+ - {@code pNext} must be {@code NULL}
+ - {@code flags} must be 0
+
+
+ See Also
+ #CreateDirectFBSurfaceEXT()
+ """
+
+ Expression("#STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT")..VkStructureType("sType", "the type of this structure.")
+ nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
+ VkDirectFBSurfaceCreateFlagsEXT("flags", "reserved for future use.")
+ nullable..IDirectFB.p("dfb", "a pointer to the {@code IDirectFB} main interface of DirectFB.")
+ nullable..IDirectFBSurface.p("surface", "a pointer to a {@code IDirectFBSurface} surface interface.")
+}
+
val _VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT = struct(Module.VULKAN, "VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT")
val VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = struct(Module.VULKAN, "VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE", alias = _VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT) {
documentation = "See ##VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT."
@@ -16249,6 +16792,47 @@ val VkMicromapTriangleEXT = struct(Module.VULKAN, "VkMicromapTriangleEXT") {
uint16_t("format", "the format of this triangle")
}
+val VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI = struct(Module.VULKAN, "VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI") {
+ documentation =
+ """
+ Structure describing whether cluster culling shader is enabled.
+
+ Description
+ If the ##VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI 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. ##VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI can also be used in the {@code pNext} chain of ##VkDeviceCreateInfo to selectively enable these features.
+
+ Valid Usage (Implicit)
+
+ - {@code sType} must be #STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI
+
+ """
+
+ Expression("#STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI")..VkStructureType("sType", "the type of this structure.")
+ nullable..opaque_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
+ VkBool32("clustercullingShader", "specifies whether cluster culling shader is supported.")
+ VkBool32("multiviewClusterCullingShader", "specifies whether multiview is supported.")
+}
+
+val VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI = struct(Module.VULKAN, "VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI", mutable = false) {
+ documentation =
+ """
+ Structure describing cluster culling shader properties supported by an implementation.
+
+ Description
+ If the ##VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI 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.
+
+ Valid Usage (Implicit)
+
+ - {@code sType} must be #STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI
+
+ """
+
+ Expression("#STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI")..VkStructureType("sType", "the type of this structure.").mutable()
+ nullable..opaque_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.").mutable()
+ uint32_t("maxWorkGroupCount", "the maximum number of local workgroups that can be launched by a single command. These three value represent the maximum local workgroup count in the X, Y and Z dimensions, respectively. In the current implementation, the values of Y and Z are both implicitly set as one. groupCountX of DrawCluster command must be less than or equal to maxWorkGroupCount[0].")[3]
+ uint32_t("maxWorkGroupSize", "the maximum size of a local workgroup. These three value represent the maximum local workgroup size in the X, Y and Z dimensions, respectively. The x, y and z sizes, as specified by the {@code LocalSize} or {@code LocalSizeId} execution mode or by the object decorated by the WorkgroupSize decoration in shader modules, must be less than or equal to the corresponding limit. In the current implementation, the maximum workgroup size of the X dimension is 32, the others are 1.")[3]
+ uint32_t("maxOutputClusterCount", "the maximum number of output cluster a single cluster culling shader workgroup can emit.")
+}
+
val VkPhysicalDeviceBorderColorSwizzleFeaturesEXT = struct(Module.VULKAN, "VkPhysicalDeviceBorderColorSwizzleFeaturesEXT") {
documentation =
"""
@@ -17823,4 +18407,23 @@ val VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM = struct(Module.VULKAN, "VkP
uint64_t("shaderCoreMask", "a bitfield where each bit set represents the presence of a shader core whose ID is the bit position. The highest ID for any shader core on the device is the position of the most significant bit set.")
uint32_t("shaderCoreCount", "the number of shader cores on the device.")
uint32_t("shaderWarpsPerCore", "the maximum number of simultaneously executing warps on a shader core.")
+}
+
+val VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT = struct(Module.VULKAN, "VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT") {
+ documentation =
+ """
+ Structure describing whether querying shader group handles from a pipeline library is supported by the implementation.
+
+ Description
+ If the ##VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT 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. ##VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT can also be used in the {@code pNext} chain of ##VkDeviceCreateInfo to selectively enable these features.
+
+ Valid Usage (Implicit)
+
+ - {@code sType} must be #STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT
+
+ """
+
+ Expression("#STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT")..VkStructureType("sType", "")
+ nullable..opaque_p("pNext", "")
+ VkBool32("pipelineLibraryGroupHandles", "indicates whether the implementation supports querying group handles directly from a ray tracing pipeline library, and guarantees bitwise identical group handles for such libraries when linked into other pipelines.")
}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/VKBase.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/VKBase.kt
index 7d5a2a97ca..e036a02b8e 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/VKBase.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/VKBase.kt
@@ -21,6 +21,14 @@ val PFN_vkGetInstanceProcAddr = "PFN_vkGetInstanceProcAddr".handle
val VkRemoteAddressNV = "VkRemoteAddressNV".handle
+// Android interop types
+val AHardwareBuffer = "AHardwareBuffer".opaque
+val ANativeWindow = "ANativeWindow".opaque
+
+// DirectFB interop types
+val IDirectFB = "IDirectFB".opaque
+val IDirectFBSurface = "IDirectFBSurface".opaque
+
// Metal interop types
val CAMetalLayer = "CAMetalLayer".handle
val MTLDevice_id = "MTLDevice_id".handle
@@ -28,4 +36,9 @@ val MTLCommandQueue_id = "MTLCommandQueue_id".handle
val MTLBuffer_id = "MTLBuffer_id".handle
val MTLTexture_id = "MTLTexture_id".handle
val MTLSharedEvent_id = "MTLSharedEvent_id".handle
-val IOSurfaceRef = "IOSurfaceRef".handle
\ No newline at end of file
+val IOSurfaceRef = "IOSurfaceRef".handle
+
+// XCB interop types
+val xcb_connection_t = "xcb_connection_t".opaque
+val xcb_visualid_t = typedef(uint32_t, "xcb_visualid_t")
+val xcb_window_t = typedef(uint32_t, "xcb_window_t")
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/VKTypes.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/VKTypes.kt
index 56aa88d683..dccaaaadce 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/VKTypes.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/VKTypes.kt
@@ -407,7 +407,7 @@ val PFN_vkReallocationFunction = Module.VULKAN.callback {
VkSystemAllocationScope allocationScope);
Description
- {@code pfnReallocation} must return an allocation with enough space for {@code size} bytes, and the contents of the original allocation from bytes zero to min(original size, new size) - 1
must be preserved in the returned allocation. If {@code size} is larger than the old size, the contents of the additional space are undefined. If satisfying these requirements involves creating a new allocation, then the old allocation should be freed.
+ If the reallocation was successful, {@code pfnReallocation} must return an allocation with enough space for {@code size} bytes, and the contents of the original allocation from bytes zero to min(original size, new size) - 1
must be preserved in the returned allocation. If {@code size} is larger than the old size, the contents of the additional space are undefined. If satisfying these requirements involves creating a new allocation, then the old allocation should be freed.
If {@code pOriginal} is {@code NULL}, then {@code pfnReallocation} must behave equivalently to a call to ##VkAllocationFunction with the same parameter values (without {@code pOriginal}).
@@ -459,7 +459,7 @@ val VkOffset2D = struct(Module.VULKAN, "VkOffset2D") {
Structure specifying a two-dimensional offset.
See Also
- ##VkDisplayPlaneCapabilitiesKHR, ##VkImageViewSampleWeightCreateInfoQCOM, ##VkRect2D, ##VkRectLayerKHR, ##VkSubpassFragmentDensityMapOffsetEndInfoQCOM, ##VkTilePropertiesQCOM, ##VkVideoDecodeH264CapabilitiesEXT, ##VkVideoPictureResourceInfoKHR
+ ##VkDisplayPlaneCapabilitiesKHR, ##VkImageViewSampleWeightCreateInfoQCOM, ##VkRect2D, ##VkRectLayerKHR, ##VkSubpassFragmentDensityMapOffsetEndInfoQCOM, ##VkTilePropertiesQCOM, ##VkVideoDecodeH264CapabilitiesKHR, ##VkVideoPictureResourceInfoKHR
"""
int32_t("x", "the x offset.")
@@ -614,7 +614,6 @@ val VkDrawIndexedIndirectCommand = struct(Module.VULKAN, "VkDrawIndexedIndirectC
Valid Usage
- For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description
- (indexSize × (firstIndex + indexCount) + offset)
must be less than or equal to the size of the bound index buffer, with {@code indexSize} being based on the type specified by {@code indexType}, where the index buffer, {@code indexType}, and {@code offset} are specified via {@code vkCmdBindIndexBuffer}
- If the {@code drawIndirectFirstInstance} feature is not enabled, {@code firstInstance} must be 0
@@ -722,11 +721,6 @@ val VkImageMemoryBarrier = struct(Module.VULKAN, "VkImageMemoryBarrier") {
Valid Usage
- - {@code subresourceRange.baseMipLevel} must be less than the {@code mipLevels} specified in ##VkImageCreateInfo when {@code image} was created
- - If {@code subresourceRange.levelCount} is not #REMAINING_MIP_LEVELS,
subresourceRange.baseMipLevel + subresourceRange.levelCount
must be less than or equal to the {@code mipLevels} specified in ##VkImageCreateInfo when {@code image} was created
- - {@code subresourceRange.baseArrayLayer} must be less than the {@code arrayLayers} specified in ##VkImageCreateInfo when {@code image} was created
- - If {@code subresourceRange.layerCount} is not #REMAINING_ARRAY_LAYERS,
subresourceRange.baseArrayLayer + subresourceRange.layerCount
must be less than or equal to the {@code arrayLayers} specified in ##VkImageCreateInfo when {@code image} was created
- - If {@code image} is non-sparse then it must be bound completely and contiguously to a single {@code VkDeviceMemory} object
- If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL then {@code image} must have been created with #IMAGE_USAGE_COLOR_ATTACHMENT_BIT
- If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL then {@code image} must have been created with #IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
- If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL then {@code image} must have been created with #IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
@@ -741,20 +735,35 @@ val VkImageMemoryBarrier = struct(Module.VULKAN, "VkImageMemoryBarrier") {
- If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL then {@code image} must have been created with #IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
- If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL then {@code image} must have been created with at least one of #IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, #IMAGE_USAGE_SAMPLED_BIT, or #IMAGE_USAGE_INPUT_ATTACHMENT_BIT
- If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL then {@code image} must have been created with #IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
- - If the {@code synchronization2} feature is not enabled, {@code layout} must not be #IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR or #IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
+ - If the {@code synchronization2} feature is not enabled, {@code oldLayout} must not be #IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR or #IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
+ - If the {@code synchronization2} feature is not enabled, {@code newLayout} must not be #IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR or #IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
- If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_ATTACHMENT_OPTIMAL, {@code image} must have been created with #IMAGE_USAGE_COLOR_ATTACHMENT_BIT or #IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
- If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_READ_ONLY_OPTIMAL, {@code image} must have been created with at least one of #IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, #IMAGE_USAGE_SAMPLED_BIT, or #IMAGE_USAGE_INPUT_ATTACHMENT_BIT
- If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR then {@code image} must have been created with #IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR set
- - If {@code image} has a single-plane color format or is not disjoint, then the {@code aspectMask} member of {@code subresourceRange} must be #IMAGE_ASPECT_COLOR_BIT
- - If {@code image} has a multi-planar format and the image is disjoint, then the {@code aspectMask} member of {@code subresourceRange} must include either at least one of #IMAGE_ASPECT_PLANE_0_BIT, #IMAGE_ASPECT_PLANE_1_BIT, and #IMAGE_ASPECT_PLANE_2_BIT; or must include #IMAGE_ASPECT_COLOR_BIT
- - If {@code image} has a multi-planar format with only two planes, then the {@code aspectMask} member of {@code subresourceRange} must not include #IMAGE_ASPECT_PLANE_2_BIT
- - If {@code image} has a depth/stencil format with both depth and stencil and the {@code separateDepthStencilLayouts} feature is enabled, then the {@code aspectMask} member of {@code subresourceRange} must include either or both #IMAGE_ASPECT_DEPTH_BIT and #IMAGE_ASPECT_STENCIL_BIT
- - If {@code image} has a depth/stencil format with both depth and stencil and the {@code separateDepthStencilLayouts} feature is not enabled, then the {@code aspectMask} member of {@code subresourceRange} must include both #IMAGE_ASPECT_DEPTH_BIT and #IMAGE_ASPECT_STENCIL_BIT
- If {@code srcQueueFamilyIndex} is not equal to {@code dstQueueFamilyIndex}, at least one must not be a special queue family reserved for external memory ownership transfers, as described in Queue Family Ownership Transfer
- If {@code image} was created with a sharing mode of #SHARING_MODE_CONCURRENT, {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} are not equal, and one of {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} is one of the special queue family values reserved for external memory transfers, the other must be #QUEUE_FAMILY_IGNORED
- If {@code image} was created with a sharing mode of #SHARING_MODE_EXCLUSIVE, and {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} are not equal, {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} must both be valid queue families, or one of the special queue family values reserved for external memory transfers, as described in Queue Family Ownership Transfer
+ - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR then {@code image} must have been created with #IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR
+ - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR then {@code image} must have been created with #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR
+ - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR then {@code image} must have been created with #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR
+ - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR then {@code image} must have been created with #IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR
+ - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR then {@code image} must have been created with #IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR
+ - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR then {@code image} must have been created with #IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR
- If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT then {@code image} must have been created with either the #IMAGE_USAGE_COLOR_ATTACHMENT_BIT or #IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT usage bits, and the #IMAGE_USAGE_INPUT_ATTACHMENT_BIT or #IMAGE_USAGE_SAMPLED_BIT usage bits, and the #IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT usage bit
- If the {@code attachmentFeedbackLoopLayout} feature is not enabled, {@code newLayout} must not be #IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
+
+
+
+ - {@code subresourceRange.baseMipLevel} must be less than the {@code mipLevels} specified in ##VkImageCreateInfo when {@code image} was created
+ - If {@code subresourceRange.levelCount} is not #REMAINING_MIP_LEVELS,
subresourceRange.baseMipLevel + subresourceRange.levelCount
must be less than or equal to the {@code mipLevels} specified in ##VkImageCreateInfo when {@code image} was created
+ - {@code subresourceRange.baseArrayLayer} must be less than the {@code arrayLayers} specified in ##VkImageCreateInfo when {@code image} was created
+ - If {@code subresourceRange.layerCount} is not #REMAINING_ARRAY_LAYERS,
subresourceRange.baseArrayLayer + subresourceRange.layerCount
must be less than or equal to the {@code arrayLayers} specified in ##VkImageCreateInfo when {@code image} was created
+ - If {@code image} is non-sparse then it must be bound completely and contiguously to a single {@code VkDeviceMemory} object
+ - If {@code image} has a single-plane color format or is not disjoint, then the {@code aspectMask} member of {@code subresourceRange} must be #IMAGE_ASPECT_COLOR_BIT
+ - If {@code image} has a multi-planar format and the image is disjoint, then the {@code aspectMask} member of {@code subresourceRange} must include either at least one of #IMAGE_ASPECT_PLANE_0_BIT, #IMAGE_ASPECT_PLANE_1_BIT, and #IMAGE_ASPECT_PLANE_2_BIT; or must include #IMAGE_ASPECT_COLOR_BIT
+ - If {@code image} has a multi-planar format with only two planes, then the {@code aspectMask} member of {@code subresourceRange} must not include #IMAGE_ASPECT_PLANE_2_BIT
+ - If {@code image} has a depth/stencil format with both depth and stencil and the {@code separateDepthStencilLayouts} feature is enabled, then the {@code aspectMask} member of {@code subresourceRange} must include either or both #IMAGE_ASPECT_DEPTH_BIT and #IMAGE_ASPECT_STENCIL_BIT
+ - If {@code image} has a depth/stencil format with both depth and stencil and the {@code separateDepthStencilLayouts} feature is not enabled, then the {@code aspectMask} member of {@code subresourceRange} must include both #IMAGE_ASPECT_DEPTH_BIT and #IMAGE_ASPECT_STENCIL_BIT
- If the {@code synchronization2} feature is not enabled, and {@code image} was created with a sharing mode of #SHARING_MODE_CONCURRENT, at least one of {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} must be #QUEUE_FAMILY_IGNORED
@@ -860,7 +869,7 @@ val VkAllocationCallbacks = struct(Module.VULKAN, "VkAllocationCallbacks") {
See Also
- ##VkAllocationFunction, ##VkFreeFunction, ##VkInternalAllocationNotification, ##VkInternalFreeNotification, ##VkReallocationFunction, #AllocateMemory(), #CreateAccelerationStructureKHR(), #CreateAccelerationStructureNV(), #CreateBuffer(), #CreateBufferView(), #CreateCommandPool(), #CreateComputePipelines(), #CreateCuFunctionNVX(), #CreateCuModuleNVX(), #CreateDebugReportCallbackEXT(), #CreateDebugUtilsMessengerEXT(), #CreateDeferredOperationKHR(), #CreateDescriptorPool(), #CreateDescriptorSetLayout(), #CreateDescriptorUpdateTemplate(), #CreateDescriptorUpdateTemplateKHR(), #CreateDevice(), #CreateDisplayModeKHR(), #CreateDisplayPlaneSurfaceKHR(), #CreateEvent(), #CreateFence(), #CreateFramebuffer(), #CreateGraphicsPipelines(), #CreateHeadlessSurfaceEXT(), #CreateImage(), #CreateImageView(), #CreateIndirectCommandsLayoutNV(), #CreateInstance(), #CreateMacOSSurfaceMVK(), #CreateMetalSurfaceEXT(), #CreateMicromapEXT(), #CreateOpticalFlowSessionNV(), #CreatePipelineCache(), #CreatePipelineLayout(), #CreatePrivateDataSlot(), #CreatePrivateDataSlotEXT(), #CreateQueryPool(), #CreateRayTracingPipelinesKHR(), #CreateRayTracingPipelinesNV(), #CreateRenderPass(), #CreateRenderPass2(), #CreateRenderPass2KHR(), #CreateSampler(), #CreateSamplerYcbcrConversion(), #CreateSamplerYcbcrConversionKHR(), #CreateSemaphore(), #CreateShaderModule(), #CreateSharedSwapchainsKHR(), #CreateSwapchainKHR(), #CreateValidationCacheEXT(), #CreateVideoSessionKHR(), #CreateVideoSessionParametersKHR(), #CreateWaylandSurfaceKHR(), #CreateWin32SurfaceKHR(), #CreateXlibSurfaceKHR(), #DestroyAccelerationStructureKHR(), #DestroyAccelerationStructureNV(), #DestroyBuffer(), #DestroyBufferView(), #DestroyCommandPool(), #DestroyCuFunctionNVX(), #DestroyCuModuleNVX(), #DestroyDebugReportCallbackEXT(), #DestroyDebugUtilsMessengerEXT(), #DestroyDeferredOperationKHR(), #DestroyDescriptorPool(), #DestroyDescriptorSetLayout(), #DestroyDescriptorUpdateTemplate(), #DestroyDescriptorUpdateTemplateKHR(), #DestroyDevice(), #DestroyEvent(), #DestroyFence(), #DestroyFramebuffer(), #DestroyImage(), #DestroyImageView(), #DestroyIndirectCommandsLayoutNV(), #DestroyInstance(), #DestroyMicromapEXT(), #DestroyOpticalFlowSessionNV(), #DestroyPipeline(), #DestroyPipelineCache(), #DestroyPipelineLayout(), #DestroyPrivateDataSlot(), #DestroyPrivateDataSlotEXT(), #DestroyQueryPool(), #DestroyRenderPass(), #DestroySampler(), #DestroySamplerYcbcrConversion(), #DestroySamplerYcbcrConversionKHR(), #DestroySemaphore(), #DestroyShaderModule(), #DestroySurfaceKHR(), #DestroySwapchainKHR(), #DestroyValidationCacheEXT(), #DestroyVideoSessionKHR(), #DestroyVideoSessionParametersKHR(), #FreeMemory(), #RegisterDeviceEventEXT(), #RegisterDisplayEventEXT()
+ ##VkAllocationFunction, ##VkFreeFunction, ##VkInternalAllocationNotification, ##VkInternalFreeNotification, ##VkReallocationFunction, #AllocateMemory(), #CreateAccelerationStructureKHR(), #CreateAccelerationStructureNV(), #CreateAndroidSurfaceKHR(), #CreateBuffer(), #CreateBufferView(), #CreateCommandPool(), #CreateComputePipelines(), #CreateCuFunctionNVX(), #CreateCuModuleNVX(), #CreateDebugReportCallbackEXT(), #CreateDebugUtilsMessengerEXT(), #CreateDeferredOperationKHR(), #CreateDescriptorPool(), #CreateDescriptorSetLayout(), #CreateDescriptorUpdateTemplate(), #CreateDescriptorUpdateTemplateKHR(), #CreateDevice(), #CreateDirectFBSurfaceEXT(), #CreateDisplayModeKHR(), #CreateDisplayPlaneSurfaceKHR(), #CreateEvent(), #CreateFence(), #CreateFramebuffer(), #CreateGraphicsPipelines(), #CreateHeadlessSurfaceEXT(), #CreateImage(), #CreateImageView(), #CreateIndirectCommandsLayoutNV(), #CreateInstance(), #CreateMacOSSurfaceMVK(), #CreateMetalSurfaceEXT(), #CreateMicromapEXT(), #CreateOpticalFlowSessionNV(), #CreatePipelineCache(), #CreatePipelineLayout(), #CreatePrivateDataSlot(), #CreatePrivateDataSlotEXT(), #CreateQueryPool(), #CreateRayTracingPipelinesKHR(), #CreateRayTracingPipelinesNV(), #CreateRenderPass(), #CreateRenderPass2(), #CreateRenderPass2KHR(), #CreateSampler(), #CreateSamplerYcbcrConversion(), #CreateSamplerYcbcrConversionKHR(), #CreateSemaphore(), #CreateShaderModule(), #CreateSharedSwapchainsKHR(), #CreateSwapchainKHR(), #CreateValidationCacheEXT(), #CreateVideoSessionKHR(), #CreateVideoSessionParametersKHR(), #CreateWaylandSurfaceKHR(), #CreateWin32SurfaceKHR(), #CreateXcbSurfaceKHR(), #CreateXlibSurfaceKHR(), #DestroyAccelerationStructureKHR(), #DestroyAccelerationStructureNV(), #DestroyBuffer(), #DestroyBufferView(), #DestroyCommandPool(), #DestroyCuFunctionNVX(), #DestroyCuModuleNVX(), #DestroyDebugReportCallbackEXT(), #DestroyDebugUtilsMessengerEXT(), #DestroyDeferredOperationKHR(), #DestroyDescriptorPool(), #DestroyDescriptorSetLayout(), #DestroyDescriptorUpdateTemplate(), #DestroyDescriptorUpdateTemplateKHR(), #DestroyDevice(), #DestroyEvent(), #DestroyFence(), #DestroyFramebuffer(), #DestroyImage(), #DestroyImageView(), #DestroyIndirectCommandsLayoutNV(), #DestroyInstance(), #DestroyMicromapEXT(), #DestroyOpticalFlowSessionNV(), #DestroyPipeline(), #DestroyPipelineCache(), #DestroyPipelineLayout(), #DestroyPrivateDataSlot(), #DestroyPrivateDataSlotEXT(), #DestroyQueryPool(), #DestroyRenderPass(), #DestroySampler(), #DestroySamplerYcbcrConversion(), #DestroySamplerYcbcrConversionKHR(), #DestroySemaphore(), #DestroyShaderModule(), #DestroySurfaceKHR(), #DestroySwapchainKHR(), #DestroyValidationCacheEXT(), #DestroyVideoSessionKHR(), #DestroyVideoSessionParametersKHR(), #FreeMemory(), #RegisterDeviceEventEXT(), #RegisterDisplayEventEXT()
"""
nullable..opaque_p("pUserData", "a value to be interpreted by the implementation of the callbacks. When any of the callbacks in ##VkAllocationCallbacks are called, the Vulkan implementation will pass this value as the first parameter to the callback. This value can vary each time an allocator is passed into a command, even when the same object takes an allocator in multiple commands.")
@@ -1293,8 +1302,8 @@ val VkPhysicalDeviceFeatures = struct(Module.VULKAN, "VkPhysicalDeviceFeatures")
#FORMAT_R32G32_UINT, #FORMAT_R32G32_SINT, and #FORMAT_R32G32_SFLOAT from {@code StorageImageExtendedFormats} SPIR-V capability, are already covered by core Vulkan mandatory format support.
""")
VkBool32("shaderStorageImageMultisample", "specifies whether multisampled storage images are supported. If this feature is not enabled, images that are created with a {@code usage} that includes #IMAGE_USAGE_STORAGE_BIT must be created with {@code samples} equal to #SAMPLE_COUNT_1_BIT. This also specifies whether shader modules can declare the {@code StorageImageMultisample} and {@code ImageMSArray} capabilities.")
- VkBool32("shaderStorageImageReadWithoutFormat", "specifies whether storage images require a format qualifier to be specified when reading. {@code shaderStorageImageReadWithoutFormat} applies only to formats listed in the storage without format list.")
- VkBool32("shaderStorageImageWriteWithoutFormat", "specifies whether storage images require a format qualifier to be specified when writing. {@code shaderStorageImageWriteWithoutFormat} applies only to formats listed in the storage without format list.")
+ VkBool32("shaderStorageImageReadWithoutFormat", "specifies whether storage images and storage texel buffers require a format qualifier to be specified when reading. {@code shaderStorageImageReadWithoutFormat} applies only to formats listed in the storage without format list.")
+ VkBool32("shaderStorageImageWriteWithoutFormat", "specifies whether storage images and storage texel buffers require a format qualifier to be specified when writing. {@code shaderStorageImageWriteWithoutFormat} applies only to formats listed in the storage without format list.")
VkBool32("shaderUniformBufferArrayDynamicIndexing", "specifies whether arrays of uniform buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of #DESCRIPTOR_TYPE_UNIFORM_BUFFER or #DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare the {@code UniformBufferArrayDynamicIndexing} capability.")
VkBool32("shaderSampledImageArrayDynamicIndexing", "specifies whether arrays of samplers or sampled images can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of #DESCRIPTOR_TYPE_SAMPLER, #DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, or #DESCRIPTOR_TYPE_SAMPLED_IMAGE must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare the {@code SampledImageArrayDynamicIndexing} capability.")
VkBool32("shaderStorageBufferArrayDynamicIndexing", "specifies whether arrays of storage buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type of #DESCRIPTOR_TYPE_STORAGE_BUFFER or #DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare the {@code StorageBufferArrayDynamicIndexing} capability.")
@@ -1744,7 +1753,7 @@ val VkDeviceCreateInfo = struct(Module.VULKAN, "VkDeviceCreateInfo") {
Valid Usage (Implicit)
- {@code sType} must be #STRUCTURE_TYPE_DEVICE_CREATE_INFO
- - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkDeviceDeviceMemoryReportCreateInfoEXT, ##VkDeviceDiagnosticsConfigCreateInfoNV, ##VkDeviceGroupDeviceCreateInfo, ##VkDeviceMemoryOverallocationCreateInfoAMD, ##VkDevicePrivateDataCreateInfo, ##VkPhysicalDevice16BitStorageFeatures, ##VkPhysicalDevice4444FormatsFeaturesEXT, ##VkPhysicalDevice8BitStorageFeatures, ##VkPhysicalDeviceASTCDecodeFeaturesEXT, ##VkPhysicalDeviceAccelerationStructureFeaturesKHR, ##VkPhysicalDeviceAddressBindingReportFeaturesEXT, ##VkPhysicalDeviceAmigoProfilingFeaturesSEC, ##VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT, ##VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, ##VkPhysicalDeviceBorderColorSwizzleFeaturesEXT, ##VkPhysicalDeviceBufferDeviceAddressFeatures, ##VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, ##VkPhysicalDeviceCoherentMemoryFeaturesAMD, ##VkPhysicalDeviceColorWriteEnableFeaturesEXT, ##VkPhysicalDeviceComputeShaderDerivativesFeaturesNV, ##VkPhysicalDeviceConditionalRenderingFeaturesEXT, ##VkPhysicalDeviceCooperativeMatrixFeaturesNV, ##VkPhysicalDeviceCopyMemoryIndirectFeaturesNV, ##VkPhysicalDeviceCornerSampledImageFeaturesNV, ##VkPhysicalDeviceCoverageReductionModeFeaturesNV, ##VkPhysicalDeviceCustomBorderColorFeaturesEXT, ##VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV, ##VkPhysicalDeviceDepthClampZeroOneFeaturesEXT, ##VkPhysicalDeviceDepthClipControlFeaturesEXT, ##VkPhysicalDeviceDepthClipEnableFeaturesEXT, ##VkPhysicalDeviceDescriptorBufferFeaturesEXT, ##VkPhysicalDeviceDescriptorIndexingFeatures, ##VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE, ##VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV, ##VkPhysicalDeviceDeviceMemoryReportFeaturesEXT, ##VkPhysicalDeviceDiagnosticsConfigFeaturesNV, ##VkPhysicalDeviceDynamicRenderingFeatures, ##VkPhysicalDeviceExclusiveScissorFeaturesNV, ##VkPhysicalDeviceExtendedDynamicState2FeaturesEXT, ##VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, ##VkPhysicalDeviceExtendedDynamicStateFeaturesEXT, ##VkPhysicalDeviceExternalMemoryRDMAFeaturesNV, ##VkPhysicalDeviceFaultFeaturesEXT, ##VkPhysicalDeviceFeatures2, ##VkPhysicalDeviceFragmentDensityMap2FeaturesEXT, ##VkPhysicalDeviceFragmentDensityMapFeaturesEXT, ##VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM, ##VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR, ##VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, ##VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV, ##VkPhysicalDeviceFragmentShadingRateFeaturesKHR, ##VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR, ##VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT, ##VkPhysicalDeviceHostQueryResetFeatures, ##VkPhysicalDeviceImage2DViewOf3DFeaturesEXT, ##VkPhysicalDeviceImageCompressionControlFeaturesEXT, ##VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT, ##VkPhysicalDeviceImageProcessingFeaturesQCOM, ##VkPhysicalDeviceImageRobustnessFeatures, ##VkPhysicalDeviceImageViewMinLodFeaturesEXT, ##VkPhysicalDeviceImagelessFramebufferFeatures, ##VkPhysicalDeviceIndexTypeUint8FeaturesEXT, ##VkPhysicalDeviceInheritedViewportScissorFeaturesNV, ##VkPhysicalDeviceInlineUniformBlockFeatures, ##VkPhysicalDeviceInvocationMaskFeaturesHUAWEI, ##VkPhysicalDeviceLegacyDitheringFeaturesEXT, ##VkPhysicalDeviceLineRasterizationFeaturesEXT, ##VkPhysicalDeviceLinearColorAttachmentFeaturesNV, ##VkPhysicalDeviceMaintenance4Features, ##VkPhysicalDeviceMemoryDecompressionFeaturesNV, ##VkPhysicalDeviceMemoryPriorityFeaturesEXT, ##VkPhysicalDeviceMeshShaderFeaturesEXT, ##VkPhysicalDeviceMeshShaderFeaturesNV, ##VkPhysicalDeviceMultiDrawFeaturesEXT, ##VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT, ##VkPhysicalDeviceMultiviewFeatures, ##VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM, ##VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT, ##VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT, ##VkPhysicalDeviceOpacityMicromapFeaturesEXT, ##VkPhysicalDeviceOpticalFlowFeaturesNV, ##VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT, ##VkPhysicalDevicePerformanceQueryFeaturesKHR, ##VkPhysicalDevicePipelineCreationCacheControlFeatures, ##VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR, ##VkPhysicalDevicePipelinePropertiesFeaturesEXT, ##VkPhysicalDevicePipelineProtectedAccessFeaturesEXT, ##VkPhysicalDevicePipelineRobustnessFeaturesEXT, ##VkPhysicalDevicePortabilitySubsetFeaturesKHR, ##VkPhysicalDevicePresentBarrierFeaturesNV, ##VkPhysicalDevicePresentIdFeaturesKHR, ##VkPhysicalDevicePresentWaitFeaturesKHR, ##VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT, ##VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT, ##VkPhysicalDevicePrivateDataFeatures, ##VkPhysicalDeviceProtectedMemoryFeatures, ##VkPhysicalDeviceProvokingVertexFeaturesEXT, ##VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT, ##VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT, ##VkPhysicalDeviceRayQueryFeaturesKHR, ##VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV, ##VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR, ##VkPhysicalDeviceRayTracingMotionBlurFeaturesNV, ##VkPhysicalDeviceRayTracingPipelineFeaturesKHR, ##VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV, ##VkPhysicalDeviceRobustness2FeaturesEXT, ##VkPhysicalDeviceSamplerYcbcrConversionFeatures, ##VkPhysicalDeviceScalarBlockLayoutFeatures, ##VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, ##VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, ##VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, ##VkPhysicalDeviceShaderAtomicInt64Features, ##VkPhysicalDeviceShaderClockFeaturesKHR, ##VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM, ##VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures, ##VkPhysicalDeviceShaderDrawParametersFeatures, ##VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD, ##VkPhysicalDeviceShaderFloat16Int8Features, ##VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT, ##VkPhysicalDeviceShaderImageFootprintFeaturesNV, ##VkPhysicalDeviceShaderIntegerDotProductFeatures, ##VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL, ##VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT, ##VkPhysicalDeviceShaderSMBuiltinsFeaturesNV, ##VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, ##VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR, ##VkPhysicalDeviceShaderTerminateInvocationFeatures, ##VkPhysicalDeviceShadingRateImageFeaturesNV, ##VkPhysicalDeviceSubgroupSizeControlFeatures, ##VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT, ##VkPhysicalDeviceSubpassShadingFeaturesHUAWEI, ##VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT, ##VkPhysicalDeviceSynchronization2Features, ##VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT, ##VkPhysicalDeviceTextureCompressionASTCHDRFeatures, ##VkPhysicalDeviceTilePropertiesFeaturesQCOM, ##VkPhysicalDeviceTimelineSemaphoreFeatures, ##VkPhysicalDeviceTransformFeedbackFeaturesEXT, ##VkPhysicalDeviceUniformBufferStandardLayoutFeatures, ##VkPhysicalDeviceVariablePointersFeatures, ##VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT, ##VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT, ##VkPhysicalDeviceVulkan11Features, ##VkPhysicalDeviceVulkan12Features, ##VkPhysicalDeviceVulkan13Features, ##VkPhysicalDeviceVulkanMemoryModelFeatures, ##VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR, ##VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT, ##VkPhysicalDeviceYcbcrImageArraysFeaturesEXT, or ##VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
+ - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkDeviceDeviceMemoryReportCreateInfoEXT, ##VkDeviceDiagnosticsConfigCreateInfoNV, ##VkDeviceGroupDeviceCreateInfo, ##VkDeviceMemoryOverallocationCreateInfoAMD, ##VkDevicePrivateDataCreateInfo, ##VkPhysicalDevice16BitStorageFeatures, ##VkPhysicalDevice4444FormatsFeaturesEXT, ##VkPhysicalDevice8BitStorageFeatures, ##VkPhysicalDeviceASTCDecodeFeaturesEXT, ##VkPhysicalDeviceAccelerationStructureFeaturesKHR, ##VkPhysicalDeviceAddressBindingReportFeaturesEXT, ##VkPhysicalDeviceAmigoProfilingFeaturesSEC, ##VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT, ##VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, ##VkPhysicalDeviceBorderColorSwizzleFeaturesEXT, ##VkPhysicalDeviceBufferDeviceAddressFeatures, ##VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, ##VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI, ##VkPhysicalDeviceCoherentMemoryFeaturesAMD, ##VkPhysicalDeviceColorWriteEnableFeaturesEXT, ##VkPhysicalDeviceComputeShaderDerivativesFeaturesNV, ##VkPhysicalDeviceConditionalRenderingFeaturesEXT, ##VkPhysicalDeviceCooperativeMatrixFeaturesNV, ##VkPhysicalDeviceCopyMemoryIndirectFeaturesNV, ##VkPhysicalDeviceCornerSampledImageFeaturesNV, ##VkPhysicalDeviceCoverageReductionModeFeaturesNV, ##VkPhysicalDeviceCustomBorderColorFeaturesEXT, ##VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV, ##VkPhysicalDeviceDepthClampZeroOneFeaturesEXT, ##VkPhysicalDeviceDepthClipControlFeaturesEXT, ##VkPhysicalDeviceDepthClipEnableFeaturesEXT, ##VkPhysicalDeviceDescriptorBufferFeaturesEXT, ##VkPhysicalDeviceDescriptorIndexingFeatures, ##VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE, ##VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV, ##VkPhysicalDeviceDeviceMemoryReportFeaturesEXT, ##VkPhysicalDeviceDiagnosticsConfigFeaturesNV, ##VkPhysicalDeviceDynamicRenderingFeatures, ##VkPhysicalDeviceExclusiveScissorFeaturesNV, ##VkPhysicalDeviceExtendedDynamicState2FeaturesEXT, ##VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, ##VkPhysicalDeviceExtendedDynamicStateFeaturesEXT, ##VkPhysicalDeviceExternalMemoryRDMAFeaturesNV, ##VkPhysicalDeviceFaultFeaturesEXT, ##VkPhysicalDeviceFeatures2, ##VkPhysicalDeviceFragmentDensityMap2FeaturesEXT, ##VkPhysicalDeviceFragmentDensityMapFeaturesEXT, ##VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM, ##VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR, ##VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, ##VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV, ##VkPhysicalDeviceFragmentShadingRateFeaturesKHR, ##VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR, ##VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT, ##VkPhysicalDeviceHostQueryResetFeatures, ##VkPhysicalDeviceImage2DViewOf3DFeaturesEXT, ##VkPhysicalDeviceImageCompressionControlFeaturesEXT, ##VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT, ##VkPhysicalDeviceImageProcessingFeaturesQCOM, ##VkPhysicalDeviceImageRobustnessFeatures, ##VkPhysicalDeviceImageViewMinLodFeaturesEXT, ##VkPhysicalDeviceImagelessFramebufferFeatures, ##VkPhysicalDeviceIndexTypeUint8FeaturesEXT, ##VkPhysicalDeviceInheritedViewportScissorFeaturesNV, ##VkPhysicalDeviceInlineUniformBlockFeatures, ##VkPhysicalDeviceInvocationMaskFeaturesHUAWEI, ##VkPhysicalDeviceLegacyDitheringFeaturesEXT, ##VkPhysicalDeviceLineRasterizationFeaturesEXT, ##VkPhysicalDeviceLinearColorAttachmentFeaturesNV, ##VkPhysicalDeviceMaintenance4Features, ##VkPhysicalDeviceMemoryDecompressionFeaturesNV, ##VkPhysicalDeviceMemoryPriorityFeaturesEXT, ##VkPhysicalDeviceMeshShaderFeaturesEXT, ##VkPhysicalDeviceMeshShaderFeaturesNV, ##VkPhysicalDeviceMultiDrawFeaturesEXT, ##VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT, ##VkPhysicalDeviceMultiviewFeatures, ##VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM, ##VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT, ##VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT, ##VkPhysicalDeviceOpacityMicromapFeaturesEXT, ##VkPhysicalDeviceOpticalFlowFeaturesNV, ##VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT, ##VkPhysicalDevicePerformanceQueryFeaturesKHR, ##VkPhysicalDevicePipelineCreationCacheControlFeatures, ##VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR, ##VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT, ##VkPhysicalDevicePipelinePropertiesFeaturesEXT, ##VkPhysicalDevicePipelineProtectedAccessFeaturesEXT, ##VkPhysicalDevicePipelineRobustnessFeaturesEXT, ##VkPhysicalDevicePortabilitySubsetFeaturesKHR, ##VkPhysicalDevicePresentBarrierFeaturesNV, ##VkPhysicalDevicePresentIdFeaturesKHR, ##VkPhysicalDevicePresentWaitFeaturesKHR, ##VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT, ##VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT, ##VkPhysicalDevicePrivateDataFeatures, ##VkPhysicalDeviceProtectedMemoryFeatures, ##VkPhysicalDeviceProvokingVertexFeaturesEXT, ##VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT, ##VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT, ##VkPhysicalDeviceRayQueryFeaturesKHR, ##VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV, ##VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR, ##VkPhysicalDeviceRayTracingMotionBlurFeaturesNV, ##VkPhysicalDeviceRayTracingPipelineFeaturesKHR, ##VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV, ##VkPhysicalDeviceRobustness2FeaturesEXT, ##VkPhysicalDeviceSamplerYcbcrConversionFeatures, ##VkPhysicalDeviceScalarBlockLayoutFeatures, ##VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, ##VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, ##VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, ##VkPhysicalDeviceShaderAtomicInt64Features, ##VkPhysicalDeviceShaderClockFeaturesKHR, ##VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM, ##VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures, ##VkPhysicalDeviceShaderDrawParametersFeatures, ##VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD, ##VkPhysicalDeviceShaderFloat16Int8Features, ##VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT, ##VkPhysicalDeviceShaderImageFootprintFeaturesNV, ##VkPhysicalDeviceShaderIntegerDotProductFeatures, ##VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL, ##VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT, ##VkPhysicalDeviceShaderSMBuiltinsFeaturesNV, ##VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, ##VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR, ##VkPhysicalDeviceShaderTerminateInvocationFeatures, ##VkPhysicalDeviceShadingRateImageFeaturesNV, ##VkPhysicalDeviceSubgroupSizeControlFeatures, ##VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT, ##VkPhysicalDeviceSubpassShadingFeaturesHUAWEI, ##VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT, ##VkPhysicalDeviceSynchronization2Features, ##VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT, ##VkPhysicalDeviceTextureCompressionASTCHDRFeatures, ##VkPhysicalDeviceTilePropertiesFeaturesQCOM, ##VkPhysicalDeviceTimelineSemaphoreFeatures, ##VkPhysicalDeviceTransformFeedbackFeaturesEXT, ##VkPhysicalDeviceUniformBufferStandardLayoutFeatures, ##VkPhysicalDeviceVariablePointersFeatures, ##VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT, ##VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT, ##VkPhysicalDeviceVulkan11Features, ##VkPhysicalDeviceVulkan12Features, ##VkPhysicalDeviceVulkan13Features, ##VkPhysicalDeviceVulkanMemoryModelFeatures, ##VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR, ##VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT, ##VkPhysicalDeviceYcbcrImageArraysFeaturesEXT, or ##VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
- The {@code sType} value of each struct in the {@code pNext} chain must be unique, with the exception of structures of type ##VkDeviceDeviceMemoryReportCreateInfoEXT or ##VkDevicePrivateDataCreateInfo
- {@code flags} must be 0
- {@code pQueueCreateInfos} must be a valid pointer to an array of {@code queueCreateInfoCount} valid ##VkDeviceQueueCreateInfo structures
@@ -1760,7 +1769,7 @@ val VkDeviceCreateInfo = struct(Module.VULKAN, "VkDeviceCreateInfo") {
Expression("#STRUCTURE_TYPE_DEVICE_CREATE_INFO")..VkStructureType("sType", "the type of this structure.")
PointerSetter(
- "VkDeviceDeviceMemoryReportCreateInfoEXT", "VkDeviceDiagnosticsConfigCreateInfoNV", "VkDeviceGroupDeviceCreateInfo", "VkDeviceGroupDeviceCreateInfoKHR", "VkDeviceMemoryOverallocationCreateInfoAMD", "VkDevicePrivateDataCreateInfo", "VkDevicePrivateDataCreateInfoEXT", "VkPhysicalDevice16BitStorageFeatures", "VkPhysicalDevice16BitStorageFeaturesKHR", "VkPhysicalDevice4444FormatsFeaturesEXT", "VkPhysicalDevice8BitStorageFeatures", "VkPhysicalDevice8BitStorageFeaturesKHR", "VkPhysicalDeviceASTCDecodeFeaturesEXT", "VkPhysicalDeviceAccelerationStructureFeaturesKHR", "VkPhysicalDeviceAddressBindingReportFeaturesEXT", "VkPhysicalDeviceAmigoProfilingFeaturesSEC", "VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT", "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT", "VkPhysicalDeviceBorderColorSwizzleFeaturesEXT", "VkPhysicalDeviceBufferAddressFeaturesEXT", "VkPhysicalDeviceBufferDeviceAddressFeatures", "VkPhysicalDeviceBufferDeviceAddressFeaturesEXT", "VkPhysicalDeviceBufferDeviceAddressFeaturesKHR", "VkPhysicalDeviceCoherentMemoryFeaturesAMD", "VkPhysicalDeviceColorWriteEnableFeaturesEXT", "VkPhysicalDeviceComputeShaderDerivativesFeaturesNV", "VkPhysicalDeviceConditionalRenderingFeaturesEXT", "VkPhysicalDeviceCooperativeMatrixFeaturesNV", "VkPhysicalDeviceCopyMemoryIndirectFeaturesNV", "VkPhysicalDeviceCornerSampledImageFeaturesNV", "VkPhysicalDeviceCoverageReductionModeFeaturesNV", "VkPhysicalDeviceCustomBorderColorFeaturesEXT", "VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV", "VkPhysicalDeviceDepthClampZeroOneFeaturesEXT", "VkPhysicalDeviceDepthClipControlFeaturesEXT", "VkPhysicalDeviceDepthClipEnableFeaturesEXT", "VkPhysicalDeviceDescriptorBufferFeaturesEXT", "VkPhysicalDeviceDescriptorIndexingFeatures", "VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE", "VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV", "VkPhysicalDeviceDeviceMemoryReportFeaturesEXT", "VkPhysicalDeviceDiagnosticsConfigFeaturesNV", "VkPhysicalDeviceDynamicRenderingFeatures", "VkPhysicalDeviceDynamicRenderingFeaturesKHR", "VkPhysicalDeviceExclusiveScissorFeaturesNV", "VkPhysicalDeviceExtendedDynamicState2FeaturesEXT", "VkPhysicalDeviceExtendedDynamicState3FeaturesEXT", "VkPhysicalDeviceExtendedDynamicStateFeaturesEXT", "VkPhysicalDeviceExternalMemoryRDMAFeaturesNV", "VkPhysicalDeviceFaultFeaturesEXT", "VkPhysicalDeviceFeatures2", "VkPhysicalDeviceFeatures2KHR", "VkPhysicalDeviceFloat16Int8FeaturesKHR", "VkPhysicalDeviceFragmentDensityMap2FeaturesEXT", "VkPhysicalDeviceFragmentDensityMapFeaturesEXT", "VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM", "VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR", "VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV", "VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT", "VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV", "VkPhysicalDeviceFragmentShadingRateFeaturesKHR", "VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT", "VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR", "VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT", "VkPhysicalDeviceHostQueryResetFeatures", "VkPhysicalDeviceHostQueryResetFeaturesEXT", "VkPhysicalDeviceImage2DViewOf3DFeaturesEXT", "VkPhysicalDeviceImageCompressionControlFeaturesEXT", "VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT", "VkPhysicalDeviceImageProcessingFeaturesQCOM", "VkPhysicalDeviceImageRobustnessFeatures", "VkPhysicalDeviceImageRobustnessFeaturesEXT", "VkPhysicalDeviceImageViewMinLodFeaturesEXT", "VkPhysicalDeviceImagelessFramebufferFeatures", "VkPhysicalDeviceImagelessFramebufferFeaturesKHR", "VkPhysicalDeviceIndexTypeUint8FeaturesEXT", "VkPhysicalDeviceInheritedViewportScissorFeaturesNV", "VkPhysicalDeviceInlineUniformBlockFeatures", "VkPhysicalDeviceInlineUniformBlockFeaturesEXT", "VkPhysicalDeviceInvocationMaskFeaturesHUAWEI", "VkPhysicalDeviceLegacyDitheringFeaturesEXT", "VkPhysicalDeviceLineRasterizationFeaturesEXT", "VkPhysicalDeviceLinearColorAttachmentFeaturesNV", "VkPhysicalDeviceMaintenance4Features", "VkPhysicalDeviceMaintenance4FeaturesKHR", "VkPhysicalDeviceMemoryDecompressionFeaturesNV", "VkPhysicalDeviceMemoryPriorityFeaturesEXT", "VkPhysicalDeviceMeshShaderFeaturesEXT", "VkPhysicalDeviceMeshShaderFeaturesNV", "VkPhysicalDeviceMultiDrawFeaturesEXT", "VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT", "VkPhysicalDeviceMultiviewFeatures", "VkPhysicalDeviceMultiviewFeaturesKHR", "VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM", "VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT", "VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE", "VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT", "VkPhysicalDeviceOpacityMicromapFeaturesEXT", "VkPhysicalDeviceOpticalFlowFeaturesNV", "VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT", "VkPhysicalDevicePerformanceQueryFeaturesKHR", "VkPhysicalDevicePipelineCreationCacheControlFeatures", "VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT", "VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR", "VkPhysicalDevicePipelinePropertiesFeaturesEXT", "VkPhysicalDevicePipelineProtectedAccessFeaturesEXT", "VkPhysicalDevicePipelineRobustnessFeaturesEXT", "VkPhysicalDevicePortabilitySubsetFeaturesKHR", "VkPhysicalDevicePresentBarrierFeaturesNV", "VkPhysicalDevicePresentIdFeaturesKHR", "VkPhysicalDevicePresentWaitFeaturesKHR", "VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT", "VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT", "VkPhysicalDevicePrivateDataFeatures", "VkPhysicalDevicePrivateDataFeaturesEXT", "VkPhysicalDeviceProtectedMemoryFeatures", "VkPhysicalDeviceProvokingVertexFeaturesEXT", "VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT", "VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM", "VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT", "VkPhysicalDeviceRayQueryFeaturesKHR", "VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV", "VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR", "VkPhysicalDeviceRayTracingMotionBlurFeaturesNV", "VkPhysicalDeviceRayTracingPipelineFeaturesKHR", "VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV", "VkPhysicalDeviceRobustness2FeaturesEXT", "VkPhysicalDeviceSamplerYcbcrConversionFeatures", "VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR", "VkPhysicalDeviceScalarBlockLayoutFeatures", "VkPhysicalDeviceScalarBlockLayoutFeaturesEXT", "VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures", "VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR", "VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT", "VkPhysicalDeviceShaderAtomicFloatFeaturesEXT", "VkPhysicalDeviceShaderAtomicInt64Features", "VkPhysicalDeviceShaderAtomicInt64FeaturesKHR", "VkPhysicalDeviceShaderClockFeaturesKHR", "VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM", "VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures", "VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT", "VkPhysicalDeviceShaderDrawParameterFeatures", "VkPhysicalDeviceShaderDrawParametersFeatures", "VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD", "VkPhysicalDeviceShaderFloat16Int8Features", "VkPhysicalDeviceShaderFloat16Int8FeaturesKHR", "VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT", "VkPhysicalDeviceShaderImageFootprintFeaturesNV", "VkPhysicalDeviceShaderIntegerDotProductFeatures", "VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR", "VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL", "VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT", "VkPhysicalDeviceShaderSMBuiltinsFeaturesNV", "VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures", "VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR", "VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR", "VkPhysicalDeviceShaderTerminateInvocationFeatures", "VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR", "VkPhysicalDeviceShadingRateImageFeaturesNV", "VkPhysicalDeviceSubgroupSizeControlFeatures", "VkPhysicalDeviceSubgroupSizeControlFeaturesEXT", "VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT", "VkPhysicalDeviceSubpassShadingFeaturesHUAWEI", "VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT", "VkPhysicalDeviceSynchronization2Features", "VkPhysicalDeviceSynchronization2FeaturesKHR", "VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT", "VkPhysicalDeviceTextureCompressionASTCHDRFeatures", "VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT", "VkPhysicalDeviceTilePropertiesFeaturesQCOM", "VkPhysicalDeviceTimelineSemaphoreFeatures", "VkPhysicalDeviceTimelineSemaphoreFeaturesKHR", "VkPhysicalDeviceTransformFeedbackFeaturesEXT", "VkPhysicalDeviceUniformBufferStandardLayoutFeatures", "VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR", "VkPhysicalDeviceVariablePointerFeatures", "VkPhysicalDeviceVariablePointerFeaturesKHR", "VkPhysicalDeviceVariablePointersFeatures", "VkPhysicalDeviceVariablePointersFeaturesKHR", "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT", "VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT", "VkPhysicalDeviceVulkan11Features", "VkPhysicalDeviceVulkan12Features", "VkPhysicalDeviceVulkan13Features", "VkPhysicalDeviceVulkanMemoryModelFeatures", "VkPhysicalDeviceVulkanMemoryModelFeaturesKHR", "VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR", "VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT", "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT", "VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures", "VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR",
+ "VkDeviceDeviceMemoryReportCreateInfoEXT", "VkDeviceDiagnosticsConfigCreateInfoNV", "VkDeviceGroupDeviceCreateInfo", "VkDeviceGroupDeviceCreateInfoKHR", "VkDeviceMemoryOverallocationCreateInfoAMD", "VkDevicePrivateDataCreateInfo", "VkDevicePrivateDataCreateInfoEXT", "VkPhysicalDevice16BitStorageFeatures", "VkPhysicalDevice16BitStorageFeaturesKHR", "VkPhysicalDevice4444FormatsFeaturesEXT", "VkPhysicalDevice8BitStorageFeatures", "VkPhysicalDevice8BitStorageFeaturesKHR", "VkPhysicalDeviceASTCDecodeFeaturesEXT", "VkPhysicalDeviceAccelerationStructureFeaturesKHR", "VkPhysicalDeviceAddressBindingReportFeaturesEXT", "VkPhysicalDeviceAmigoProfilingFeaturesSEC", "VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT", "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT", "VkPhysicalDeviceBorderColorSwizzleFeaturesEXT", "VkPhysicalDeviceBufferAddressFeaturesEXT", "VkPhysicalDeviceBufferDeviceAddressFeatures", "VkPhysicalDeviceBufferDeviceAddressFeaturesEXT", "VkPhysicalDeviceBufferDeviceAddressFeaturesKHR", "VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI", "VkPhysicalDeviceCoherentMemoryFeaturesAMD", "VkPhysicalDeviceColorWriteEnableFeaturesEXT", "VkPhysicalDeviceComputeShaderDerivativesFeaturesNV", "VkPhysicalDeviceConditionalRenderingFeaturesEXT", "VkPhysicalDeviceCooperativeMatrixFeaturesNV", "VkPhysicalDeviceCopyMemoryIndirectFeaturesNV", "VkPhysicalDeviceCornerSampledImageFeaturesNV", "VkPhysicalDeviceCoverageReductionModeFeaturesNV", "VkPhysicalDeviceCustomBorderColorFeaturesEXT", "VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV", "VkPhysicalDeviceDepthClampZeroOneFeaturesEXT", "VkPhysicalDeviceDepthClipControlFeaturesEXT", "VkPhysicalDeviceDepthClipEnableFeaturesEXT", "VkPhysicalDeviceDescriptorBufferFeaturesEXT", "VkPhysicalDeviceDescriptorIndexingFeatures", "VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE", "VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV", "VkPhysicalDeviceDeviceMemoryReportFeaturesEXT", "VkPhysicalDeviceDiagnosticsConfigFeaturesNV", "VkPhysicalDeviceDynamicRenderingFeatures", "VkPhysicalDeviceDynamicRenderingFeaturesKHR", "VkPhysicalDeviceExclusiveScissorFeaturesNV", "VkPhysicalDeviceExtendedDynamicState2FeaturesEXT", "VkPhysicalDeviceExtendedDynamicState3FeaturesEXT", "VkPhysicalDeviceExtendedDynamicStateFeaturesEXT", "VkPhysicalDeviceExternalMemoryRDMAFeaturesNV", "VkPhysicalDeviceFaultFeaturesEXT", "VkPhysicalDeviceFeatures2", "VkPhysicalDeviceFeatures2KHR", "VkPhysicalDeviceFloat16Int8FeaturesKHR", "VkPhysicalDeviceFragmentDensityMap2FeaturesEXT", "VkPhysicalDeviceFragmentDensityMapFeaturesEXT", "VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM", "VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR", "VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV", "VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT", "VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV", "VkPhysicalDeviceFragmentShadingRateFeaturesKHR", "VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT", "VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR", "VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT", "VkPhysicalDeviceHostQueryResetFeatures", "VkPhysicalDeviceHostQueryResetFeaturesEXT", "VkPhysicalDeviceImage2DViewOf3DFeaturesEXT", "VkPhysicalDeviceImageCompressionControlFeaturesEXT", "VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT", "VkPhysicalDeviceImageProcessingFeaturesQCOM", "VkPhysicalDeviceImageRobustnessFeatures", "VkPhysicalDeviceImageRobustnessFeaturesEXT", "VkPhysicalDeviceImageViewMinLodFeaturesEXT", "VkPhysicalDeviceImagelessFramebufferFeatures", "VkPhysicalDeviceImagelessFramebufferFeaturesKHR", "VkPhysicalDeviceIndexTypeUint8FeaturesEXT", "VkPhysicalDeviceInheritedViewportScissorFeaturesNV", "VkPhysicalDeviceInlineUniformBlockFeatures", "VkPhysicalDeviceInlineUniformBlockFeaturesEXT", "VkPhysicalDeviceInvocationMaskFeaturesHUAWEI", "VkPhysicalDeviceLegacyDitheringFeaturesEXT", "VkPhysicalDeviceLineRasterizationFeaturesEXT", "VkPhysicalDeviceLinearColorAttachmentFeaturesNV", "VkPhysicalDeviceMaintenance4Features", "VkPhysicalDeviceMaintenance4FeaturesKHR", "VkPhysicalDeviceMemoryDecompressionFeaturesNV", "VkPhysicalDeviceMemoryPriorityFeaturesEXT", "VkPhysicalDeviceMeshShaderFeaturesEXT", "VkPhysicalDeviceMeshShaderFeaturesNV", "VkPhysicalDeviceMultiDrawFeaturesEXT", "VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT", "VkPhysicalDeviceMultiviewFeatures", "VkPhysicalDeviceMultiviewFeaturesKHR", "VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM", "VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT", "VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE", "VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT", "VkPhysicalDeviceOpacityMicromapFeaturesEXT", "VkPhysicalDeviceOpticalFlowFeaturesNV", "VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT", "VkPhysicalDevicePerformanceQueryFeaturesKHR", "VkPhysicalDevicePipelineCreationCacheControlFeatures", "VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT", "VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR", "VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT", "VkPhysicalDevicePipelinePropertiesFeaturesEXT", "VkPhysicalDevicePipelineProtectedAccessFeaturesEXT", "VkPhysicalDevicePipelineRobustnessFeaturesEXT", "VkPhysicalDevicePortabilitySubsetFeaturesKHR", "VkPhysicalDevicePresentBarrierFeaturesNV", "VkPhysicalDevicePresentIdFeaturesKHR", "VkPhysicalDevicePresentWaitFeaturesKHR", "VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT", "VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT", "VkPhysicalDevicePrivateDataFeatures", "VkPhysicalDevicePrivateDataFeaturesEXT", "VkPhysicalDeviceProtectedMemoryFeatures", "VkPhysicalDeviceProvokingVertexFeaturesEXT", "VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT", "VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM", "VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT", "VkPhysicalDeviceRayQueryFeaturesKHR", "VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV", "VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR", "VkPhysicalDeviceRayTracingMotionBlurFeaturesNV", "VkPhysicalDeviceRayTracingPipelineFeaturesKHR", "VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV", "VkPhysicalDeviceRobustness2FeaturesEXT", "VkPhysicalDeviceSamplerYcbcrConversionFeatures", "VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR", "VkPhysicalDeviceScalarBlockLayoutFeatures", "VkPhysicalDeviceScalarBlockLayoutFeaturesEXT", "VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures", "VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR", "VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT", "VkPhysicalDeviceShaderAtomicFloatFeaturesEXT", "VkPhysicalDeviceShaderAtomicInt64Features", "VkPhysicalDeviceShaderAtomicInt64FeaturesKHR", "VkPhysicalDeviceShaderClockFeaturesKHR", "VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM", "VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures", "VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT", "VkPhysicalDeviceShaderDrawParameterFeatures", "VkPhysicalDeviceShaderDrawParametersFeatures", "VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD", "VkPhysicalDeviceShaderFloat16Int8Features", "VkPhysicalDeviceShaderFloat16Int8FeaturesKHR", "VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT", "VkPhysicalDeviceShaderImageFootprintFeaturesNV", "VkPhysicalDeviceShaderIntegerDotProductFeatures", "VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR", "VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL", "VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT", "VkPhysicalDeviceShaderSMBuiltinsFeaturesNV", "VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures", "VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR", "VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR", "VkPhysicalDeviceShaderTerminateInvocationFeatures", "VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR", "VkPhysicalDeviceShadingRateImageFeaturesNV", "VkPhysicalDeviceSubgroupSizeControlFeatures", "VkPhysicalDeviceSubgroupSizeControlFeaturesEXT", "VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT", "VkPhysicalDeviceSubpassShadingFeaturesHUAWEI", "VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT", "VkPhysicalDeviceSynchronization2Features", "VkPhysicalDeviceSynchronization2FeaturesKHR", "VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT", "VkPhysicalDeviceTextureCompressionASTCHDRFeatures", "VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT", "VkPhysicalDeviceTilePropertiesFeaturesQCOM", "VkPhysicalDeviceTimelineSemaphoreFeatures", "VkPhysicalDeviceTimelineSemaphoreFeaturesKHR", "VkPhysicalDeviceTransformFeedbackFeaturesEXT", "VkPhysicalDeviceUniformBufferStandardLayoutFeatures", "VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR", "VkPhysicalDeviceVariablePointerFeatures", "VkPhysicalDeviceVariablePointerFeaturesKHR", "VkPhysicalDeviceVariablePointersFeatures", "VkPhysicalDeviceVariablePointersFeaturesKHR", "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT", "VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT", "VkPhysicalDeviceVulkan11Features", "VkPhysicalDeviceVulkan12Features", "VkPhysicalDeviceVulkan13Features", "VkPhysicalDeviceVulkanMemoryModelFeatures", "VkPhysicalDeviceVulkanMemoryModelFeaturesKHR", "VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR", "VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT", "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT", "VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures", "VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR",
prepend = true
)..nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
VkDeviceCreateFlags("flags", "reserved for future use.")
@@ -1914,6 +1923,7 @@ val VkMemoryAllocateInfo = struct(Module.VULKAN, "VkMemoryAllocateInfo") {
- ##VkImportMemoryWin32HandleInfoKHR with a non-zero {@code handleType} value
- ##VkImportMemoryFdInfoKHR with a non-zero {@code handleType} value
- ##VkImportMemoryHostPointerInfoEXT with a non-zero {@code handleType} value
+ - ##VkImportAndroidHardwareBufferInfoANDROID with a non-{@code NULL} {@code buffer} value
If the parameters define an import operation and the external handle type is #EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT, #EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT, or #EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT, {@code allocationSize} is ignored. The implementation must query the size of these allocations from the OS.
@@ -1931,12 +1941,11 @@ val VkMemoryAllocateInfo = struct(Module.VULKAN, "VkMemoryAllocateInfo") {
- ##VkPhysicalDeviceMemoryBudgetPropertiesEXT{@code ::heapUsage}
- When performing a memory import operation, it is the responsibility of the application to ensure the external handles and their associated payloads meet all valid usage requirements. However, implementations must perform sufficient validation of external handles and payloads to ensure that the operation results in a valid memory object which will not cause program termination, device loss, queue stalls, or corruption of other resources when used as allowed according to its allocation parameters. If the external handle provided does not meet these requirements, the implementation must fail the memory import operation with the error code #ERROR_INVALID_EXTERNAL_HANDLE.
+ When performing a memory import operation, it is the responsibility of the application to ensure the external handles and their associated payloads meet all valid usage requirements. However, implementations must perform sufficient validation of external handles and payloads to ensure that the operation results in a valid memory object which will not cause program termination, device loss, queue stalls, or corruption of other resources when used as allowed according to its allocation parameters. If the external handle provided does not meet these requirements, the implementation must fail the memory import operation with the error code #ERROR_INVALID_EXTERNAL_HANDLE. If the parameters define an export operation and the external handle type is #EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID, implementations should not strictly follow {@code memoryTypeIndex}. Instead, they should modify the allocation internally to use the required memory type for the application’s given usage. This is because for an export operation, there is currently no way for the client to know the memory type index before allocating.
Valid Usage
- The parameters must not define more than one import operation
- - {@code allocationSize} must be greater than 0
- If the {@code pNext} chain includes a ##VkExportMemoryAllocateInfo structure, and any of the handle types specified in ##VkExportMemoryAllocateInfo{@code ::handleTypes} require a dedicated allocation, as reported by #GetPhysicalDeviceImageFormatProperties2() in ##VkExternalImageFormatProperties{@code ::externalMemoryProperties.externalMemoryFeatures} or ##VkExternalBufferProperties{@code ::externalMemoryProperties.externalMemoryFeatures}, the {@code pNext} chain must include a ##VkMemoryDedicatedAllocateInfo or ##VkDedicatedAllocationMemoryAllocateInfoNV structure with either its {@code image} or {@code buffer} member set to a value other than #NULL_HANDLE
- If the {@code pNext} chain includes a ##VkExportMemoryAllocateInfo structure, it must not include a ##VkExportMemoryAllocateInfoNV or ##VkExportMemoryWin32HandleInfoNV structure
- If the {@code pNext} chain includes a ##VkImportMemoryWin32HandleInfoKHR structure, it must not include a ##VkImportMemoryWin32HandleInfoNV structure
@@ -1952,6 +1961,16 @@ val VkMemoryAllocateInfo = struct(Module.VULKAN, "VkMemoryAllocateInfo") {
- If the parameters define an import operation and the external handle is a host pointer, {@code allocationSize} must be an integer multiple of ##VkPhysicalDeviceExternalMemoryHostPropertiesEXT{@code ::minImportedHostPointerAlignment}
- If the parameters define an import operation and the external handle is a host pointer, the {@code pNext} chain must not include a ##VkDedicatedAllocationMemoryAllocateInfoNV structure with either its {@code image} or {@code buffer} field set to a value other than #NULL_HANDLE
- If the parameters define an import operation and the external handle is a host pointer, the {@code pNext} chain must not include a ##VkMemoryDedicatedAllocateInfo structure with either its {@code image} or {@code buffer} field set to a value other than #NULL_HANDLE
+ - If the parameters define an import operation and the external handle type is #EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID, {@code allocationSize} must be the size returned by #GetAndroidHardwareBufferPropertiesANDROID() for the Android hardware buffer
+ - If the parameters define an import operation and the external handle type is #EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID, and the {@code pNext} chain does not include a ##VkMemoryDedicatedAllocateInfo structure or ##VkMemoryDedicatedAllocateInfo{@code ::image} is #NULL_HANDLE, the Android hardware buffer must have a {@code AHardwareBuffer_Desc}{@code ::format} of {@code AHARDWAREBUFFER_FORMAT_BLOB} and a {@code AHardwareBuffer_Desc}{@code ::usage} that includes {@code AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER}
+ - If the parameters define an import operation and the external handle type is #EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID, {@code memoryTypeIndex} must be one of those returned by #GetAndroidHardwareBufferPropertiesANDROID() for the Android hardware buffer
+ - If the parameters do not define an import operation, and the {@code pNext} chain includes a ##VkExportMemoryAllocateInfo structure with #EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID included in its {@code handleTypes} member, and the {@code pNext} chain includes a ##VkMemoryDedicatedAllocateInfo structure with {@code image} not equal to #NULL_HANDLE, then {@code allocationSize} must be 0, otherwise {@code allocationSize} must be greater than 0
+ - If the parameters define an import operation, the external handle is an Android hardware buffer, and the {@code pNext} chain includes a ##VkMemoryDedicatedAllocateInfo with {@code image} that is not #NULL_HANDLE, the Android hardware buffer’s {@code AHardwareBuffer}{@code ::usage} must include at least one of {@code AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER}, {@code AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE} or {@code AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER}
+ - If the parameters define an import operation, the external handle is an Android hardware buffer, and the {@code pNext} chain includes a ##VkMemoryDedicatedAllocateInfo with {@code image} that is not #NULL_HANDLE, the format of {@code image} must be #FORMAT_UNDEFINED or the format returned by #GetAndroidHardwareBufferPropertiesANDROID() in ##VkAndroidHardwareBufferFormatPropertiesANDROID{@code ::format} for the Android hardware buffer
+ - If the parameters define an import operation, the external handle is an Android hardware buffer, and the {@code pNext} chain includes a ##VkMemoryDedicatedAllocateInfo structure with {@code image} that is not #NULL_HANDLE, the width, height, and array layer dimensions of {@code image} and the Android hardware buffer’s {@code AHardwareBuffer_Desc} must be identical
+ - If the parameters define an import operation, the external handle is an Android hardware buffer, and the {@code pNext} chain includes a ##VkMemoryDedicatedAllocateInfo structure with {@code image} that is not #NULL_HANDLE, and the Android hardware buffer’s {@code AHardwareBuffer}{@code ::usage} includes {@code AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE}, the {@code image} must have a complete mipmap chain
+ - If the parameters define an import operation, the external handle is an Android hardware buffer, and the {@code pNext} chain includes a ##VkMemoryDedicatedAllocateInfo structure with {@code image} that is not #NULL_HANDLE, and the Android hardware buffer’s {@code AHardwareBuffer}{@code ::usage} does not include {@code AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE}, the {@code image} must have exactly one mipmap level
+ - If the parameters define an import operation, the external handle is an Android hardware buffer, and the {@code pNext} chain includes a ##VkMemoryDedicatedAllocateInfo structure with {@code image} that is not #NULL_HANDLE, each bit set in the usage of {@code image} must be listed in AHardwareBuffer Usage Equivalence, and if there is a corresponding {@code AHARDWAREBUFFER_USAGE} bit listed that bit must be included in the Android hardware buffer’s {@code AHardwareBuffer_Desc}{@code ::usage}
- If ##VkMemoryOpaqueCaptureAddressAllocateInfo{@code ::opaqueCaptureAddress} is not zero, ##VkMemoryAllocateFlagsInfo{@code ::flags} must include #MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT
- If ##VkMemoryAllocateFlagsInfo{@code ::flags} includes #MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, the {@code bufferDeviceAddressCaptureReplay} feature must be enabled
- If ##VkMemoryAllocateFlagsInfo{@code ::flags} includes #MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT, the {@code bufferDeviceAddress} feature must be enabled
@@ -1963,7 +1982,7 @@ val VkMemoryAllocateInfo = struct(Module.VULKAN, "VkMemoryAllocateInfo") {
Valid Usage (Implicit)
- {@code sType} must be #STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
- - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkDedicatedAllocationMemoryAllocateInfoNV, ##VkExportMemoryAllocateInfo, ##VkExportMemoryAllocateInfoNV, ##VkExportMemoryWin32HandleInfoKHR, ##VkExportMemoryWin32HandleInfoNV, ##VkExportMetalObjectCreateInfoEXT, ##VkImportMemoryFdInfoKHR, ##VkImportMemoryHostPointerInfoEXT, ##VkImportMemoryWin32HandleInfoKHR, ##VkImportMemoryWin32HandleInfoNV, ##VkImportMetalBufferInfoEXT, ##VkMemoryAllocateFlagsInfo, ##VkMemoryDedicatedAllocateInfo, ##VkMemoryOpaqueCaptureAddressAllocateInfo, or ##VkMemoryPriorityAllocateInfoEXT
+ - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkDedicatedAllocationMemoryAllocateInfoNV, ##VkExportMemoryAllocateInfo, ##VkExportMemoryAllocateInfoNV, ##VkExportMemoryWin32HandleInfoKHR, ##VkExportMemoryWin32HandleInfoNV, ##VkExportMetalObjectCreateInfoEXT, ##VkImportAndroidHardwareBufferInfoANDROID, ##VkImportMemoryFdInfoKHR, ##VkImportMemoryHostPointerInfoEXT, ##VkImportMemoryWin32HandleInfoKHR, ##VkImportMemoryWin32HandleInfoNV, ##VkImportMetalBufferInfoEXT, ##VkMemoryAllocateFlagsInfo, ##VkMemoryDedicatedAllocateInfo, ##VkMemoryOpaqueCaptureAddressAllocateInfo, or ##VkMemoryPriorityAllocateInfoEXT
- The {@code sType} value of each struct in the {@code pNext} chain must be unique, with the exception of structures of type ##VkExportMetalObjectCreateInfoEXT
@@ -1973,7 +1992,7 @@ val VkMemoryAllocateInfo = struct(Module.VULKAN, "VkMemoryAllocateInfo") {
Expression("#STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO")..VkStructureType("sType", "the type of this structure.")
PointerSetter(
- "VkDedicatedAllocationMemoryAllocateInfoNV", "VkExportMemoryAllocateInfo", "VkExportMemoryAllocateInfoKHR", "VkExportMemoryAllocateInfoNV", "VkExportMemoryWin32HandleInfoKHR", "VkExportMemoryWin32HandleInfoNV", "VkExportMetalObjectCreateInfoEXT", "VkImportMemoryFdInfoKHR", "VkImportMemoryHostPointerInfoEXT", "VkImportMemoryWin32HandleInfoKHR", "VkImportMemoryWin32HandleInfoNV", "VkImportMetalBufferInfoEXT", "VkMemoryAllocateFlagsInfo", "VkMemoryAllocateFlagsInfoKHR", "VkMemoryDedicatedAllocateInfo", "VkMemoryDedicatedAllocateInfoKHR", "VkMemoryOpaqueCaptureAddressAllocateInfo", "VkMemoryOpaqueCaptureAddressAllocateInfoKHR", "VkMemoryPriorityAllocateInfoEXT",
+ "VkDedicatedAllocationMemoryAllocateInfoNV", "VkExportMemoryAllocateInfo", "VkExportMemoryAllocateInfoKHR", "VkExportMemoryAllocateInfoNV", "VkExportMemoryWin32HandleInfoKHR", "VkExportMemoryWin32HandleInfoNV", "VkExportMetalObjectCreateInfoEXT", "VkImportAndroidHardwareBufferInfoANDROID", "VkImportMemoryFdInfoKHR", "VkImportMemoryHostPointerInfoEXT", "VkImportMemoryWin32HandleInfoKHR", "VkImportMemoryWin32HandleInfoNV", "VkImportMetalBufferInfoEXT", "VkMemoryAllocateFlagsInfo", "VkMemoryAllocateFlagsInfoKHR", "VkMemoryDedicatedAllocateInfo", "VkMemoryDedicatedAllocateInfoKHR", "VkMemoryOpaqueCaptureAddressAllocateInfo", "VkMemoryOpaqueCaptureAddressAllocateInfoKHR", "VkMemoryPriorityAllocateInfoEXT",
prepend = true
)..nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
VkDeviceSize("allocationSize", "the size of the allocation in bytes.")
@@ -2358,12 +2377,13 @@ val VkQueryPoolCreateInfo = struct(Module.VULKAN, "VkQueryPoolCreateInfo") {
- If {@code queryType} is #QUERY_TYPE_PIPELINE_STATISTICS, {@code pipelineStatistics} must be a valid combination of {@code VkQueryPipelineStatisticFlagBits} values
- If {@code queryType} is #QUERY_TYPE_PERFORMANCE_QUERY_KHR, the {@code pNext} chain must include a ##VkQueryPoolPerformanceCreateInfoKHR structure
- {@code queryCount} must be greater than 0
+ - If {@code queryType} is #QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR, then the {@code pNext} chain must include a ##VkVideoProfileInfoKHR structure with {@code videoCodecOperation} specifying an encode operation
Valid Usage (Implicit)
- {@code sType} must be #STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO
- - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkQueryPoolPerformanceCreateInfoKHR, ##VkQueryPoolPerformanceQueryCreateInfoINTEL, ##VkVideoDecodeH264ProfileInfoEXT, ##VkVideoDecodeH265ProfileInfoEXT, ##VkVideoDecodeUsageInfoKHR, ##VkVideoEncodeH264ProfileInfoEXT, ##VkVideoEncodeH265ProfileInfoEXT, ##VkVideoEncodeUsageInfoKHR, or ##VkVideoProfileInfoKHR
+ - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkQueryPoolPerformanceCreateInfoKHR, ##VkQueryPoolPerformanceQueryCreateInfoINTEL, ##VkVideoDecodeH264ProfileInfoKHR, ##VkVideoDecodeH265ProfileInfoKHR, ##VkVideoDecodeUsageInfoKHR, ##VkVideoEncodeH264ProfileInfoEXT, ##VkVideoEncodeH265ProfileInfoEXT, ##VkVideoEncodeUsageInfoKHR, or ##VkVideoProfileInfoKHR
- The {@code sType} value of each struct in the {@code pNext} chain must be unique
- {@code flags} must be 0
- {@code queryType} must be a valid {@code VkQueryType} value
@@ -2375,7 +2395,7 @@ val VkQueryPoolCreateInfo = struct(Module.VULKAN, "VkQueryPoolCreateInfo") {
Expression("#STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO")..VkStructureType("sType", "the type of this structure.")
PointerSetter(
- "VkQueryPoolCreateInfoINTEL", "VkQueryPoolPerformanceCreateInfoKHR", "VkQueryPoolPerformanceQueryCreateInfoINTEL", "VkVideoDecodeH264ProfileInfoEXT", "VkVideoDecodeH265ProfileInfoEXT", "VkVideoDecodeUsageInfoKHR", "VkVideoEncodeH264ProfileInfoEXT", "VkVideoEncodeH265ProfileInfoEXT", "VkVideoEncodeUsageInfoKHR", "VkVideoProfileInfoKHR",
+ "VkQueryPoolCreateInfoINTEL", "VkQueryPoolPerformanceCreateInfoKHR", "VkQueryPoolPerformanceQueryCreateInfoINTEL", "VkVideoDecodeH264ProfileInfoKHR", "VkVideoDecodeH265ProfileInfoKHR", "VkVideoDecodeUsageInfoKHR", "VkVideoEncodeH264ProfileInfoEXT", "VkVideoEncodeH265ProfileInfoEXT", "VkVideoEncodeUsageInfoKHR", "VkVideoProfileInfoKHR",
prepend = true
)..nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
VkQueryPoolCreateFlags("flags", "reserved for future use.")
@@ -2406,8 +2426,8 @@ val VkBufferCreateInfo = struct(Module.VULKAN, "VkBufferCreateInfo") {
- If ##VkBufferDeviceAddressCreateInfoEXT{@code ::deviceAddress} is not zero, {@code flags} must include #BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT
- If ##VkBufferOpaqueCaptureAddressCreateInfo{@code ::opaqueCaptureAddress} is not zero, {@code flags} must include #BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT
- If {@code flags} includes #BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, the {@code bufferDeviceAddressCaptureReplay} or {@code bufferDeviceAddressCaptureReplayEXT} feature must be enabled
- - If {@code usage} includes #BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR, #BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR, then the {@code pNext} chain must include a valid ##VkVideoProfileListInfoKHR structure with {@code profileCount} greater than 0 and {@code pProfiles} including at least one ##VkVideoProfileInfoKHR{@code ::videoCodecOperation} specifying a decode operation
- - If {@code usage} includes #BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR, #BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR, then the {@code pNext} chain must include a valid ##VkVideoProfileListInfoKHR structure with {@code profileCount} greater than 0 and {@code pProfiles} including at least one ##VkVideoProfileInfoKHR{@code ::videoCodecOperation} specifying an encode operation
+ - If {@code usage} includes #BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR or #BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR, then the {@code pNext} chain must include a ##VkVideoProfileListInfoKHR structure with {@code profileCount} greater than 0 and {@code pProfiles} including at least one ##VkVideoProfileInfoKHR structure with a {@code videoCodecOperation} member specifying a decode operation
+ - If {@code usage} includes #BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR or #BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR, then the {@code pNext} chain must include a ##VkVideoProfileListInfoKHR structure with {@code profileCount} greater than 0 and {@code pProfiles} including at least one ##VkVideoProfileInfoKHR structure with a {@code videoCodecOperation} member specifying an encode operation
- {@code size} must be less than or equal to ##VkPhysicalDeviceMaintenance4Properties{@code ::maxBufferSize}
- If {@code usage} includes #BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT, creating this {@code VkBuffer} must not cause the total required space for all currently valid buffers using this flag on the device to exceed VkPhysicalDeviceDescriptorBufferPropertiesEXT{@code ::samplerDescriptorBufferAddressSpaceSize} or VkPhysicalDeviceDescriptorBufferPropertiesEXT{@code ::descriptorBufferAddressSpaceSize}
- If {@code usage} includes #BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT, creating this {@code VkBuffer} must not cause the total required space for all currently valid buffers using this flag on the device to exceed VkPhysicalDeviceDescriptorBufferPropertiesEXT{@code ::resourceDescriptorBufferAddressSpaceSize} or VkPhysicalDeviceDescriptorBufferPropertiesEXT{@code ::descriptorBufferAddressSpaceSize}
@@ -2559,29 +2579,44 @@ val VkImageCreateInfo = struct(Module.VULKAN, "VkImageCreateInfo") {
Let {@code VkFormatFeatureFlags imageCreateFormatFeatures} be the set of valid format features available during image creation.
- If {@code tiling} is #IMAGE_TILING_LINEAR, then {@code imageCreateFormatFeatures} is the value of ##VkFormatProperties{@code ::linearTilingFeatures} found by calling #GetPhysicalDeviceFormatProperties() with parameter {@code format} equal to ##VkImageCreateInfo{@code ::format}.
- - If {@code tiling} is #IMAGE_TILING_OPTIMAL, then {@code imageCreateFormatFeatures} is the value of ##VkFormatProperties{@code ::optimalTilingFeatures} found by calling #GetPhysicalDeviceFormatProperties() with parameter {@code format} equal to ##VkImageCreateInfo{@code ::format}.
+ - If {@code tiling} is #IMAGE_TILING_OPTIMAL, and if the {@code pNext} chain includes no ##VkExternalFormatANDROID structure with non-zero {@code externalFormat}, then {@code imageCreateFormatFeatures} is the value of ##VkFormatProperties{@code ::optimalTilingFeatures} found by calling #GetPhysicalDeviceFormatProperties() with parameter {@code format} equal to ##VkImageCreateInfo{@code ::format}.
+ - If {@code tiling} is #IMAGE_TILING_OPTIMAL, and if the {@code pNext} chain includes a ##VkExternalFormatANDROID structure with non-zero {@code externalFormat}, then {@code imageCreateFormatFeatures} is the value of ##VkAndroidHardwareBufferFormatPropertiesANDROID{@code ::formatFeatures} obtained by #GetAndroidHardwareBufferPropertiesANDROID() with a matching {@code externalFormat} value.
- If {@code tiling} is #IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then the value of {@code imageCreateFormatFeatures} is found by calling #GetPhysicalDeviceFormatProperties2() with ##VkImageFormatProperties{@code ::format} equal to ##VkImageCreateInfo{@code ::format} and with ##VkDrmFormatModifierPropertiesListEXT chained into ##VkFormatProperties2; by collecting all members of the returned array ##VkDrmFormatModifierPropertiesListEXT{@code ::pDrmFormatModifierProperties} whose {@code drmFormatModifier} belongs to {@code imageCreateDrmFormatModifiers}; and by taking the bitwise intersection, over the collected array members, of {@code drmFormatModifierTilingFeatures}. (The resultant {@code imageCreateFormatFeatures} may be empty).
-
- Let {@code VkImageFormatProperties2 imageCreateImageFormatPropertiesList[]} be the list of structures obtained by calling #GetPhysicalDeviceImageFormatProperties2(), possibly multiple times, as follows:
+ Let {@code VkImageFormatProperties2 imageCreateImageFormatPropertiesList[]} be defined as follows.
- - The parameters ##VkPhysicalDeviceImageFormatInfo2{@code ::format}, {@code imageType}, {@code tiling}, {@code usage}, and {@code flags} must be equal to those in ##VkImageCreateInfo.
- - If ##VkImageCreateInfo{@code ::pNext} contains a ##VkExternalMemoryImageCreateInfo structure whose {@code handleTypes} is not 0, then ##VkPhysicalDeviceImageFormatInfo2{@code ::pNext} must contain a ##VkPhysicalDeviceExternalImageFormatInfo structure whose {@code handleType} is not 0; and #GetPhysicalDeviceImageFormatProperties2() must be called for each handle type in ##VkExternalMemoryImageCreateInfo{@code ::handleTypes}, successively setting ##VkPhysicalDeviceExternalImageFormatInfo{@code ::handleType} on each call.
- - If ##VkImageCreateInfo{@code ::pNext} contains no ##VkExternalMemoryImageCreateInfo structure, or contains a structure whose {@code handleTypes} is 0, then ##VkPhysicalDeviceImageFormatInfo2{@code ::pNext} must either contain no ##VkPhysicalDeviceExternalImageFormatInfo structure, or contain a structure whose {@code handleType} is 0.
- - If ##VkImageCreateInfo{@code ::pNext} contains a ##VkVideoProfileListInfoKHR structure then ##VkPhysicalDeviceImageFormatInfo2{@code ::pNext} must also contain the same ##VkVideoProfileListInfoKHR structure on each call.
-
- If {@code tiling} is #IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then:
+ If ##VkImageCreateInfo{@code ::pNext} contains no ##VkExternalFormatANDROID structure with non-zero {@code externalFormat}, then {@code imageCreateImageFormatPropertiesList} is the list of structures obtained by calling #GetPhysicalDeviceImageFormatProperties2(), possibly multiple times, as follows:
+
+ - The parameters ##VkPhysicalDeviceImageFormatInfo2{@code ::format}, {@code imageType}, {@code tiling}, {@code usage}, and {@code flags} must be equal to those in ##VkImageCreateInfo.
+ - If ##VkImageCreateInfo{@code ::pNext} contains a ##VkExternalMemoryImageCreateInfo structure whose {@code handleTypes} is not 0, then ##VkPhysicalDeviceImageFormatInfo2{@code ::pNext} must contain a ##VkPhysicalDeviceExternalImageFormatInfo structure whose {@code handleType} is not 0; and #GetPhysicalDeviceImageFormatProperties2() must be called for each handle type in ##VkExternalMemoryImageCreateInfo{@code ::handleTypes}, successively setting ##VkPhysicalDeviceExternalImageFormatInfo{@code ::handleType} on each call.
+ - If ##VkImageCreateInfo{@code ::pNext} contains no ##VkExternalMemoryImageCreateInfo structure, or contains a structure whose {@code handleTypes} is 0, then ##VkPhysicalDeviceImageFormatInfo2{@code ::pNext} must either contain no ##VkPhysicalDeviceExternalImageFormatInfo structure, or contain a structure whose {@code handleType} is 0.
+ - If ##VkImageCreateInfo{@code ::pNext} contains a ##VkVideoProfileListInfoKHR structure then ##VkPhysicalDeviceImageFormatInfo2{@code ::pNext} must also contain the same ##VkVideoProfileListInfoKHR structure on each call.
+ -
+ If {@code tiling} is #IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then:
+
+ - ##VkPhysicalDeviceImageFormatInfo2{@code ::pNext} must contain a ##VkPhysicalDeviceImageDrmFormatModifierInfoEXT structure where {@code sharingMode} is equal to ##VkImageCreateInfo{@code ::sharingMode};
+ - if {@code sharingMode} is #SHARING_MODE_CONCURRENT, then {@code queueFamilyIndexCount} and {@code pQueueFamilyIndices} must be equal to those in ##VkImageCreateInfo;
+ - if {@code flags} contains #IMAGE_CREATE_MUTABLE_FORMAT_BIT, then the ##VkImageFormatListCreateInfo structure included in the {@code pNext} chain of ##VkPhysicalDeviceImageFormatInfo2 must be equivalent to the one included in the {@code pNext} chain of ##VkImageCreateInfo;
+ - if ##VkImageCreateInfo{@code ::pNext} contains a ##VkImageCompressionControlEXT structure, then the ##VkPhysicalDeviceImageFormatInfo2{@code ::pNext} chain must contain an equivalent structure;
+ - #GetPhysicalDeviceImageFormatProperties2() must be called for each modifier in {@code imageCreateDrmFormatModifiers}, successively setting ##VkPhysicalDeviceImageDrmFormatModifierInfoEXT{@code ::drmFormatModifier} on each call.
+
+
+ - If {@code tiling} is not #IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then ##VkPhysicalDeviceImageFormatInfo2{@code ::pNext} must contain no ##VkPhysicalDeviceImageDrmFormatModifierInfoEXT structure.
+ - If any call to #GetPhysicalDeviceImageFormatProperties2() returns an error, then {@code imageCreateImageFormatPropertiesList} is defined to be the empty list.
+
+
+ -
+ If ##VkImageCreateInfo{@code ::pNext} contains a ##VkExternalFormatANDROID structure with non-zero {@code externalFormat}, then {@code imageCreateImageFormatPropertiesList} contains a single element where:
- - ##VkPhysicalDeviceImageFormatInfo2{@code ::pNext} must contain a ##VkPhysicalDeviceImageDrmFormatModifierInfoEXT structure where {@code sharingMode} is equal to ##VkImageCreateInfo{@code ::sharingMode};
- - if {@code sharingMode} is #SHARING_MODE_CONCURRENT, then {@code queueFamilyIndexCount} and {@code pQueueFamilyIndices} must be equal to those in ##VkImageCreateInfo;
- - if {@code flags} contains #IMAGE_CREATE_MUTABLE_FORMAT_BIT, then the ##VkImageFormatListCreateInfo structure included in the {@code pNext} chain of ##VkPhysicalDeviceImageFormatInfo2 must be equivalent to the one included in the {@code pNext} chain of ##VkImageCreateInfo;
- - if ##VkImageCreateInfo{@code ::pNext} contains a ##VkImageCompressionControlEXT structure, then the ##VkPhysicalDeviceImageFormatInfo2{@code ::pNext} chain must contain an equivalent structure;
- - #GetPhysicalDeviceImageFormatProperties2() must be called for each modifier in {@code imageCreateDrmFormatModifiers}, successively setting ##VkPhysicalDeviceImageDrmFormatModifierInfoEXT{@code ::drmFormatModifier} on each call.
+ - ##VkImageFormatProperties{@code ::maxMipLevels} is
⌊log2(max(extent.width, extent.height, extent.depth))⌋ + 1
.
+ - ##VkImageFormatProperties{@code ::maxArrayLayers} is ##VkPhysicalDeviceLimits{@code ::maxImageArrayLayers}.
+ - Each component of ##VkImageFormatProperties{@code ::maxExtent} is ##VkPhysicalDeviceLimits{@code ::maxImageDimension2D}.
+ - ##VkImageFormatProperties{@code ::sampleCounts} contains exactly #SAMPLE_COUNT_1_BIT.
- - If {@code tiling} is not #IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then ##VkPhysicalDeviceImageFormatInfo2{@code ::pNext} must contain no ##VkPhysicalDeviceImageDrmFormatModifierInfoEXT structure.
- - If any call to #GetPhysicalDeviceImageFormatProperties2() returns an error, then {@code imageCreateImageFormatPropertiesList} is defined to be the empty list.
- Let {@code uint32_t imageCreateMaxMipLevels} be the minimum value of ##VkImageFormatProperties{@code ::maxMipLevels} in {@code imageCreateImageFormatPropertiesList}. The value is undefined if {@code imageCreateImageFormatPropertiesList} is empty.
@@ -2619,7 +2654,8 @@ val VkImageCreateInfo = struct(Module.VULKAN, "VkImageCreateInfo") {
- If {@code sharingMode} is #SHARING_MODE_CONCURRENT, {@code pQueueFamilyIndices} must be a valid pointer to an array of {@code queueFamilyIndexCount} {@code uint32_t} values
- If {@code sharingMode} is #SHARING_MODE_CONCURRENT, {@code queueFamilyIndexCount} must be greater than 1
- If {@code sharingMode} is #SHARING_MODE_CONCURRENT, each element of {@code pQueueFamilyIndices} must be unique and must be less than {@code pQueueFamilyPropertyCount} returned by either #GetPhysicalDeviceQueueFamilyProperties() or #GetPhysicalDeviceQueueFamilyProperties2() for the {@code physicalDevice} that was used to create {@code device}
- - {@code format} must not be #FORMAT_UNDEFINED
+ - If the {@code pNext} chain includes a ##VkExternalFormatANDROID structure, and its {@code externalFormat} member is non-zero the {@code format} must be #FORMAT_UNDEFINED
+ - If the {@code pNext} chain does not include a ##VkExternalFormatANDROID structure, or does and its {@code externalFormat} member is 0, the {@code format} must not be #FORMAT_UNDEFINED
- {@code extent.width} must be greater than 0
- {@code extent.height} must be greater than 0
- {@code extent.depth} must be greater than 0
@@ -2683,6 +2719,11 @@ val VkImageCreateInfo = struct(Module.VULKAN, "VkImageCreateInfo") {
- If the {@code pNext} chain includes a ##VkImageDrmFormatModifierListCreateInfoEXT or ##VkImageDrmFormatModifierExplicitCreateInfoEXT structure, then {@code tiling} must be #IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
- If {@code tiling} is #IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT and {@code flags} contains #IMAGE_CREATE_MUTABLE_FORMAT_BIT, then the {@code pNext} chain must include a ##VkImageFormatListCreateInfo structure with non-zero {@code viewFormatCount}
- If {@code flags} contains #IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT {@code format} must be a depth or depth/stencil format
+ - If the {@code pNext} chain includes a ##VkExternalMemoryImageCreateInfo structure whose {@code handleTypes} member includes #EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID, {@code imageType} must be #IMAGE_TYPE_2D
+ - If the {@code pNext} chain includes a ##VkExternalMemoryImageCreateInfo structure whose {@code handleTypes} member includes #EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID, {@code mipLevels} must either be 1 or equal to the number of levels in the complete mipmap chain based on
extent.width
, extent.height
, and extent.depth
+ - If the {@code pNext} chain includes a ##VkExternalFormatANDROID structure whose {@code externalFormat} member is not 0, {@code flags} must not include #IMAGE_CREATE_MUTABLE_FORMAT_BIT
+ - If the {@code pNext} chain includes a ##VkExternalFormatANDROID structure whose {@code externalFormat} member is not 0, {@code usage} must not include any usages except #IMAGE_USAGE_SAMPLED_BIT
+ - If the {@code pNext} chain includes a ##VkExternalFormatANDROID structure whose {@code externalFormat} member is not 0, {@code tiling} must be #IMAGE_TILING_OPTIMAL
- If {@code format} is a depth-stencil format, {@code usage} includes #IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and the {@code pNext} chain includes a ##VkImageStencilUsageCreateInfo structure, then its ##VkImageStencilUsageCreateInfo{@code ::stencilUsage} member must also include #IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
- If {@code format} is a depth-stencil format, {@code usage} does not include #IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and the {@code pNext} chain includes a ##VkImageStencilUsageCreateInfo structure, then its ##VkImageStencilUsageCreateInfo{@code ::stencilUsage} member must also not include #IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
- If {@code format} is a depth-stencil format, {@code usage} includes #IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, and the {@code pNext} chain includes a ##VkImageStencilUsageCreateInfo structure, then its ##VkImageStencilUsageCreateInfo{@code ::stencilUsage} member must also include #IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
@@ -2706,9 +2747,9 @@ val VkImageCreateInfo = struct(Module.VULKAN, "VkImageCreateInfo") {
- If the {@link KHRPortabilitySubset VK_KHR_portability_subset} extension is enabled, and ##VkPhysicalDevicePortabilitySubsetFeaturesKHR{@code ::multisampleArrayImage} is #FALSE, and {@code samples} is not #SAMPLE_COUNT_1_BIT, then {@code arrayLayers} must be 1
- If a ##VkImageFormatListCreateInfo structure was included in the {@code pNext} chain and ##VkImageFormatListCreateInfo{@code ::viewFormatCount} is not zero, then each format in ##VkImageFormatListCreateInfo{@code ::pViewFormats} must either be compatible with the {@code format} as described in the compatibility table or, if {@code flags} contains #IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT, be an uncompressed format that is size-compatible with {@code format}
- If {@code flags} does not contain #IMAGE_CREATE_MUTABLE_FORMAT_BIT and the {@code pNext} chain includes a ##VkImageFormatListCreateInfo structure, then ##VkImageFormatListCreateInfo{@code ::viewFormatCount} must be 0 or 1
- - If {@code usage} includes #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR, #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR, then the {@code pNext} chain must include a valid ##VkVideoProfileListInfoKHR structure with {@code profileCount} greater than 0 and {@code pProfiles} including at least one ##VkVideoProfileInfoKHR{@code ::videoCodecOperation} specifying a decode operation
- - If {@code usage} includes #IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR, #IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR, #IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR, then the {@code pNext} chain must include a valid ##VkVideoProfileListInfoKHR structure with {@code profileCount} greater than 0 and {@code pProfiles} including at least one ##VkVideoProfileInfoKHR{@code ::videoCodecOperation} specifying an encode operation
- - If the {@code pNext} chain includes a ##VkVideoProfileListInfoKHR structure then {@code supportedVideoFormat} must be #TRUE
+ - If {@code usage} includes #IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR, #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR, or #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR, then the {@code pNext} chain must include a ##VkVideoProfileListInfoKHR structure with {@code profileCount} greater than 0 and {@code pProfiles} including at least one ##VkVideoProfileInfoKHR structure with a {@code videoCodecOperation} member specifying a decode operation
+ - If {@code usage} includes #IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR, #IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR, or #IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR, then the {@code pNext} chain must include a ##VkVideoProfileListInfoKHR structure with {@code profileCount} greater than 0 and {@code pProfiles} including at least one ##VkVideoProfileInfoKHR structure with a {@code videoCodecOperation} member specifying an encode operation
+ - If the {@code pNext} chain includes a ##VkVideoProfileListInfoKHR structure with {@code profileCount} greater than 0, then {@code supportedVideoFormat} must be #TRUE
- If the {@code multisampledRenderToSingleSampled} feature is not enabled, {@code flags} must not contain #IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT
- If {@code flags} contains #IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT, {@code samples} must be #SAMPLE_COUNT_1_BIT
- If the {@code pNext} chain includes a ##VkImageCompressionControlEXT structure, {@code format} is a multi-planar format, and ##VkImageCompressionControlEXT{@code ::flags} includes #IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT, then ##VkImageCompressionControlEXT{@code ::compressionControlPlaneCount} must be equal to the number of planes in {@code format}
@@ -2725,7 +2766,7 @@ val VkImageCreateInfo = struct(Module.VULKAN, "VkImageCreateInfo") {
Valid Usage (Implicit)
- {@code sType} must be #STRUCTURE_TYPE_IMAGE_CREATE_INFO
- - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkDedicatedAllocationImageCreateInfoNV, ##VkExportMetalObjectCreateInfoEXT, ##VkExternalMemoryImageCreateInfo, ##VkExternalMemoryImageCreateInfoNV, ##VkImageCompressionControlEXT, ##VkImageDrmFormatModifierExplicitCreateInfoEXT, ##VkImageDrmFormatModifierListCreateInfoEXT, ##VkImageFormatListCreateInfo, ##VkImageStencilUsageCreateInfo, ##VkImageSwapchainCreateInfoKHR, ##VkImportMetalIOSurfaceInfoEXT, ##VkImportMetalTextureInfoEXT, ##VkOpaqueCaptureDescriptorDataCreateInfoEXT, ##VkOpticalFlowImageFormatInfoNV, or ##VkVideoProfileListInfoKHR
+ - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkDedicatedAllocationImageCreateInfoNV, ##VkExportMetalObjectCreateInfoEXT, ##VkExternalFormatANDROID, ##VkExternalMemoryImageCreateInfo, ##VkExternalMemoryImageCreateInfoNV, ##VkImageCompressionControlEXT, ##VkImageDrmFormatModifierExplicitCreateInfoEXT, ##VkImageDrmFormatModifierListCreateInfoEXT, ##VkImageFormatListCreateInfo, ##VkImageStencilUsageCreateInfo, ##VkImageSwapchainCreateInfoKHR, ##VkImportMetalIOSurfaceInfoEXT, ##VkImportMetalTextureInfoEXT, ##VkOpaqueCaptureDescriptorDataCreateInfoEXT, ##VkOpticalFlowImageFormatInfoNV, or ##VkVideoProfileListInfoKHR
- The {@code sType} value of each struct in the {@code pNext} chain must be unique, with the exception of structures of type ##VkExportMetalObjectCreateInfoEXT or ##VkImportMetalTextureInfoEXT
- {@code flags} must be a valid combination of {@code VkImageCreateFlagBits} values
- {@code imageType} must be a valid {@code VkImageType} value
@@ -2744,7 +2785,7 @@ val VkImageCreateInfo = struct(Module.VULKAN, "VkImageCreateInfo") {
Expression("#STRUCTURE_TYPE_IMAGE_CREATE_INFO")..VkStructureType("sType", "the type of this structure.")
PointerSetter(
- "VkDedicatedAllocationImageCreateInfoNV", "VkExportMetalObjectCreateInfoEXT", "VkExternalMemoryImageCreateInfo", "VkExternalMemoryImageCreateInfoKHR", "VkExternalMemoryImageCreateInfoNV", "VkImageCompressionControlEXT", "VkImageDrmFormatModifierExplicitCreateInfoEXT", "VkImageDrmFormatModifierListCreateInfoEXT", "VkImageFormatListCreateInfo", "VkImageFormatListCreateInfoKHR", "VkImageStencilUsageCreateInfo", "VkImageStencilUsageCreateInfoEXT", "VkImageSwapchainCreateInfoKHR", "VkImportMetalIOSurfaceInfoEXT", "VkImportMetalTextureInfoEXT", "VkOpaqueCaptureDescriptorDataCreateInfoEXT", "VkOpticalFlowImageFormatInfoNV", "VkVideoProfileListInfoKHR",
+ "VkDedicatedAllocationImageCreateInfoNV", "VkExportMetalObjectCreateInfoEXT", "VkExternalFormatANDROID", "VkExternalMemoryImageCreateInfo", "VkExternalMemoryImageCreateInfoKHR", "VkExternalMemoryImageCreateInfoNV", "VkImageCompressionControlEXT", "VkImageDrmFormatModifierExplicitCreateInfoEXT", "VkImageDrmFormatModifierListCreateInfoEXT", "VkImageFormatListCreateInfo", "VkImageFormatListCreateInfoKHR", "VkImageStencilUsageCreateInfo", "VkImageStencilUsageCreateInfoEXT", "VkImageSwapchainCreateInfoKHR", "VkImportMetalIOSurfaceInfoEXT", "VkImportMetalTextureInfoEXT", "VkOpaqueCaptureDescriptorDataCreateInfoEXT", "VkOpticalFlowImageFormatInfoNV", "VkVideoProfileListInfoKHR",
prepend = true
)..nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
VkImageCreateFlags("flags", "a bitmask of {@code VkImageCreateFlagBits} describing additional parameters of the image.")
@@ -2815,7 +2856,7 @@ val VkComponentMapping = struct(Module.VULKAN, "VkComponentMapping") {
See Also
- ##VkImageViewCreateInfo, ##VkSamplerBorderColorComponentMappingCreateInfoEXT, ##VkSamplerYcbcrConversionCreateInfo, ##VkVideoFormatPropertiesKHR
+ ##VkAndroidHardwareBufferFormatProperties2ANDROID, ##VkAndroidHardwareBufferFormatPropertiesANDROID, ##VkImageViewCreateInfo, ##VkSamplerBorderColorComponentMappingCreateInfoEXT, ##VkSamplerYcbcrConversionCreateInfo, ##VkVideoFormatPropertiesKHR
"""
VkComponentSwizzle("r", "a {@code VkComponentSwizzle} specifying the component value placed in the R component of the output vector.")
@@ -2850,9 +2891,9 @@ val VkImageViewCreateInfo = struct(Module.VULKAN, "VkImageViewCreateInfo") {
If the image view is to be used with a sampler which supports sampler Y′CBCR conversion, an identically defined object of type {@code VkSamplerYcbcrConversion} to that used to create the sampler must be passed to #CreateImageView() in a ##VkSamplerYcbcrConversionInfo included in the {@code pNext} chain of ##VkImageViewCreateInfo. Conversely, if a {@code VkSamplerYcbcrConversion} object is passed to #CreateImageView(), an identically defined {@code VkSamplerYcbcrConversion} object must be used when sampling the image.
- If the image has a multi-planar {@code format} and {@code subresourceRange.aspectMask} is #IMAGE_ASPECT_COLOR_BIT, and it was created with {@code usage} value containing flags other than #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR, #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR , #IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR, #IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR, then the {@code format} must be identical to the image {@code format}, and the sampler to be used with the image view must enable sampler Y′CBCR conversion.
+ If the image has a multi-planar {@code format}, {@code subresourceRange.aspectMask} is #IMAGE_ASPECT_COLOR_BIT, and {@code usage} includes #IMAGE_USAGE_SAMPLED_BIT, then the {@code format} must be identical to the image {@code format} and the sampler to be used with the image view must enable sampler Y′CBCR conversion.
- If the image has a multi-planar {@code format} and the {@code image} has been created with a {@code usage} value containing any of the #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR, #IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR, and #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR flags, then all of the video decode operations would ignore the ##VkSamplerYcbcrConversionInfo structure and/or sampler Y′CBCR conversion object, associated with the image view. If the image has a multi-planar {@code format} and the {@code image} has been created with a {@code usage} value containing any of the #IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR, #IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR, and #IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR flags, then all of the video encode operations would ignore the ##VkSamplerYcbcrConversionInfo structure and/or sampler Y′CBCR conversion object, associated with the image view.
+ When such an image is used in a video coding operation, the sampler Y′CBCR conversion has no effect.
If {@code image} was created with the #IMAGE_CREATE_MUTABLE_FORMAT_BIT and the image has a multi-planar {@code format}, and if {@code subresourceRange.aspectMask} is #IMAGE_ASPECT_PLANE_0_BIT, #IMAGE_ASPECT_PLANE_1_BIT, or #IMAGE_ASPECT_PLANE_2_BIT, {@code format} must be compatible with the corresponding plane of the image, and the sampler to be used with the image view must not enable sampler Y′CBCR conversion. The {@code width} and {@code height} of the single-plane image view must be derived from the multi-planar image’s dimensions in the manner listed for plane compatibility for the plane.
@@ -2902,6 +2943,7 @@ val VkImageViewCreateInfo = struct(Module.VULKAN, "VkImageViewCreateInfo") {
- If {@code image} was created with the #IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT flag and {@code format} is a non-compressed format, the {@code levelCount} and {@code layerCount} members of {@code subresourceRange} must both be 1
- If a ##VkImageFormatListCreateInfo structure was included in the {@code pNext} chain of the ##VkImageCreateInfo structure used when creating {@code image} and ##VkImageFormatListCreateInfo{@code ::viewFormatCount} is not zero then {@code format} must be one of the formats in ##VkImageFormatListCreateInfo{@code ::pViewFormats}
- If {@code image} was created with the #IMAGE_CREATE_MUTABLE_FORMAT_BIT flag, if the {@code format} of the {@code image} is a multi-planar format, and if {@code subresourceRange.aspectMask} is one of #IMAGE_ASPECT_PLANE_0_BIT, #IMAGE_ASPECT_PLANE_1_BIT, or #IMAGE_ASPECT_PLANE_2_BIT, then {@code format} must be compatible with the {@code VkFormat} for the plane of the {@code image} {@code format} indicated by {@code subresourceRange.aspectMask}, as defined in Compatible formats of planes of multi-planar formats
+ - If {@code subresourceRange.aspectMask} contains any of #IMAGE_ASPECT_PLANE_0_BIT, #IMAGE_ASPECT_PLANE_1_BIT, or #IMAGE_ASPECT_PLANE_2_BIT, then it must only have a single bit set
- If {@code image} was not created with the #IMAGE_CREATE_MUTABLE_FORMAT_BIT flag, or if the {@code format} of the {@code image} is a multi-planar format and if {@code subresourceRange.aspectMask} is #IMAGE_ASPECT_COLOR_BIT, {@code format} must be identical to the {@code format} used to create {@code image}
- If the image view requires a sampler Y′CBCR conversion and {@code usage} contains #IMAGE_USAGE_SAMPLED_BIT, then the {@code pNext} chain must include a ##VkSamplerYcbcrConversionInfo structure with a conversion value other than #NULL_HANDLE
- If {@code format} has a {@code _422} or {@code _420} suffix then {@code image} must have been created with a width that is a multiple of 2
@@ -2910,6 +2952,9 @@ val VkImageViewCreateInfo = struct(Module.VULKAN, "VkImageViewCreateInfo") {
- If the {@code pNext} chain includes a ##VkSamplerYcbcrConversionInfo structure with a {@code conversion} value other than #NULL_HANDLE, {@code format} must be the same used in ##VkSamplerYcbcrConversionCreateInfo{@code ::format}
- If {@code image} is non-sparse then it must be bound completely and contiguously to a single {@code VkDeviceMemory} object
- {@code viewType} must be compatible with the type of {@code image} as shown in the view type compatibility table
+ - If {@code image} has an external format, {@code format} must be #FORMAT_UNDEFINED
+ - If {@code image} has an external format, the {@code pNext} chain must include a ##VkSamplerYcbcrConversionInfo structure with a {@code conversion} object created with the same external format as {@code image}
+ - If {@code image} has an external format, all members of {@code components} must be the identity swizzle
- If {@code image} was created with {@code usage} containing #IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, {@code viewType} must be #IMAGE_VIEW_TYPE_2D or #IMAGE_VIEW_TYPE_2D_ARRAY
- If the {@code shadingRateImage} feature is enabled, and If {@code image} was created with {@code usage} containing #IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV, {@code format} must be #FORMAT_R8_UINT
- If the {@code attachmentFragmentShadingRate} feature is enabled, and the {@code usage} for the image view includes #IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, then the image view’s format features must contain #FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
@@ -2931,8 +2976,8 @@ val VkImageViewCreateInfo = struct(Module.VULKAN, "VkImageViewCreateInfo") {
- If {@code viewType} is #IMAGE_VIEW_TYPE_CUBE_ARRAY and {@code subresourceRange.layerCount} is #REMAINING_ARRAY_LAYERS, the remaining number of layers must be a multiple of 6
- If the {@link KHRPortabilitySubset VK_KHR_portability_subset} extension is enabled, and ##VkPhysicalDevicePortabilitySubsetFeaturesKHR{@code ::imageViewFormatSwizzle} is #FALSE, all elements of {@code components} must have the identity swizzle
- If the {@link KHRPortabilitySubset VK_KHR_portability_subset} extension is enabled, and ##VkPhysicalDevicePortabilitySubsetFeaturesKHR{@code ::imageViewFormatReinterpretation} is #FALSE, the {@code VkFormat} in {@code format} must not contain a different number of components, or a different number of bits in each component, than the format of the {@code VkImage} in {@code image}
- - If {@code image} was created with {@code usage} containing #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR, #IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR, #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR, then the {@code viewType} must be #IMAGE_VIEW_TYPE_2D or #IMAGE_VIEW_TYPE_2D_ARRAY and all members of {@code components} must have the identity swizzle
- - If {@code image} was created with {@code usage} containing #IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR, #IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR, #IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR, then the {@code viewType} must be #IMAGE_VIEW_TYPE_2D or #IMAGE_VIEW_TYPE_2D_ARRAY and all members of {@code components} must have the identity swizzle
+ - If {@code image} was created with {@code usage} containing #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR, #IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR, or #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR, then the {@code viewType} must be #IMAGE_VIEW_TYPE_2D or #IMAGE_VIEW_TYPE_2D_ARRAY
+ - If {@code image} was created with {@code usage} containing #IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR, #IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR, or #IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR, then the {@code viewType} must be #IMAGE_VIEW_TYPE_2D or #IMAGE_VIEW_TYPE_2D_ARRAY
- If {@code flags} includes #IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT, the {@code descriptorBufferCaptureReplay} feature must be enabled
- If the {@code pNext} chain includes a ##VkOpaqueCaptureDescriptorDataCreateInfoEXT structure, {@code flags} must contain #IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
- If the {@code pNext} chain includes a ##VkExportMetalObjectCreateInfoEXT structure, its {@code exportObjectType} member must be #EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT
@@ -3127,6 +3172,7 @@ val VkPipelineShaderStageCreateInfo = struct(Module.VULKAN, "VkPipelineShaderSta
- If the {@code tessellationShader} feature is not enabled, {@code stage} must not be #SHADER_STAGE_TESSELLATION_CONTROL_BIT or #SHADER_STAGE_TESSELLATION_EVALUATION_BIT
- If the {@code meshShaders} feature is not enabled, {@code stage} must not be #SHADER_STAGE_MESH_BIT_EXT
- If the {@code taskShaders} feature is not enabled, {@code stage} must not be #SHADER_STAGE_TASK_BIT_EXT
+ - If the {@code clustercullingShader} feature is not enabled, {@code stage} must not be #SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI
- {@code stage} must not be #SHADER_STAGE_ALL_GRAPHICS, or #SHADER_STAGE_ALL
- {@code pName} must be the name of an {@code OpEntryPoint} in {@code module} with an execution model that matches {@code stage}
- If the identified entry point includes any variable in its interface that is declared with the {@code ClipDistance} {@code BuiltIn} decoration, that variable must not have an array size greater than ##VkPhysicalDeviceLimits{@code ::maxClipDistances}
@@ -4106,8 +4152,10 @@ val VkGraphicsPipelineCreateInfo = struct(Module.VULKAN, "VkGraphicsPipelineCrea
- If ##VkPipelineLibraryCreateInfoKHR{@code ::pLibraries} includes at least one library, ##VkGraphicsPipelineLibraryCreateInfoEXT{@code ::flags} is non-zero, and any library was created with #PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR, {@code flags} must include #PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR
- If the pipeline is not created with a complete set of state, or ##VkPipelineLibraryCreateInfoKHR{@code ::libraryCount} is not 0, ##VkGraphicsPipelineShaderGroupsCreateInfoNV{@code ::groupCount} and ##VkGraphicsPipelineShaderGroupsCreateInfoNV{@code ::pipelineCount} must be 0
- If the pipeline is created with a complete set of state, ##VkPipelineLibraryCreateInfoKHR{@code ::libraryCount} is 0, and the {@code pNext} chain includes an instance of ##VkGraphicsPipelineShaderGroupsCreateInfoNV, ##VkGraphicsPipelineShaderGroupsCreateInfoNV{@code ::groupCount} must be greater than 0
- - If {@code flags} includes #PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT, the pipeline includes a complete set of state specified entirely by libraries, and each library was created with a {@code VkPipelineLayout} created with #PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, then {@code layout} must be a valid {@code VkPipelineLayout} that is compatible with the union of the libraries' pipeline layouts other than the inclusion/exclusion of #PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT
- - If {@code flags} does not include #PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT, the pipeline includes a complete set of state specified entirely by libraries, and each library was created with a {@code VkPipelineLayout} created with #PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, then {@code layout} must be a valid {@code VkPipelineLayout} that is compatible with the union of the libraries' pipeline layouts
+ - If the pipeline includes a complete set of state, {@code VkPipelineLayout} must be a valid pipeline layout
+ - If the pipeline includes a complete set of state specified entirely by libraries, and each library was created with a {@code VkPipelineLayout} created without #PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, then {@code layout} must be compatible with the layouts in those libraries
+ - If {@code flags} includes #PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT, the pipeline includes a complete set of state specified entirely by libraries, and each library was created with a {@code VkPipelineLayout} created with #PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, then {@code layout} must be compatible with the union of the libraries' pipeline layouts other than the inclusion/exclusion of #PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT
+ - If {@code flags} does not include #PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT, the pipeline includes a complete set of state specified entirely by libraries, and each library was created with a {@code VkPipelineLayout} created with #PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, then {@code layout} must be compatible with the union of the libraries' pipeline layouts
- If {@code conservativePointAndLineRasterization} is not supported; the pipeline is being created with vertex input state and pre-rasterization shader state; the pipeline does not include a geometry shader; and the value of ##VkPipelineInputAssemblyStateCreateInfo{@code ::topology} is #PRIMITIVE_TOPOLOGY_POINT_LIST, #PRIMITIVE_TOPOLOGY_LINE_LIST, or #PRIMITIVE_TOPOLOGY_LINE_STRIP, then ##VkPipelineRasterizationConservativeStateCreateInfoEXT{@code ::conservativeRasterizationMode} must be #CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
- If {@code conservativePointAndLineRasterization} is not supported, the pipeline is being created with pre-rasterization shader state, and the pipeline includes a geometry shader with either the {@code OutputPoints} or {@code OutputLineStrip} execution modes, ##VkPipelineRasterizationConservativeStateCreateInfoEXT{@code ::conservativeRasterizationMode} must be #CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
- If {@code conservativePointAndLineRasterization} is not supported, the pipeline is being created with pre-rasterization shader state, and the pipeline includes a mesh shader with either the {@code OutputPoints} or {@code OutputLinesNV} execution modes, ##VkPipelineRasterizationConservativeStateCreateInfoEXT{@code ::conservativeRasterizationMode} must be #CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
@@ -4524,6 +4572,8 @@ val VkDescriptorImageInfo = struct(Module.VULKAN, "VkDescriptorImageInfo") {
Valid Usage
- {@code imageView} must not be a 2D array image view created from a 3D image
+ - If {@code imageView} is a 2D view created from a 3D image, then {@code descriptorType} must be #DESCRIPTOR_TYPE_STORAGE_IMAGE, #DESCRIPTOR_TYPE_SAMPLED_IMAGE, or #DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
+ - If {@code imageView} is a 2D view created from a 3D image, then the image must have been created with #IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT set
- If the {@code image2DViewOf3D} feature is not enabled and {@code descriptorType} is #DESCRIPTOR_TYPE_STORAGE_IMAGE then {@code imageView} must not be a 2D view created from a 3D image
- If the {@code sampler2DViewOf3D} feature is not enabled and {@code descriptorType} is #DESCRIPTOR_TYPE_SAMPLED_IMAGE or #DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER then {@code imageView} must not be a 2D view created from a 3D image
- If {@code imageView} is created from a depth/stencil image, the {@code aspectMask} used to create the {@code imageView} must include either #IMAGE_ASPECT_DEPTH_BIT or #IMAGE_ASPECT_STENCIL_BIT but not both
@@ -4822,7 +4872,6 @@ val VkWriteDescriptorSet = struct(Module.VULKAN, "VkWriteDescriptorSet") {
- If {@code descriptorType} is #DESCRIPTOR_TYPE_STORAGE_IMAGE the {@code imageLayout} member of each element of {@code pImageInfo} must be a member of the list given in Storage Image
- If {@code descriptorType} is #DESCRIPTOR_TYPE_INPUT_ATTACHMENT, the {@code imageView} member of each element of {@code pImageInfo} must have been created with #IMAGE_USAGE_INPUT_ATTACHMENT_BIT set
- If {@code descriptorType} is #DESCRIPTOR_TYPE_STORAGE_IMAGE, the {@code imageView} member of each element of {@code pImageInfo} must have been created with #IMAGE_USAGE_STORAGE_BIT set
- - If {@code descriptorType} is #DESCRIPTOR_TYPE_STORAGE_IMAGE, #DESCRIPTOR_TYPE_SAMPLED_IMAGE, or #DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, each {@code imageView} member of each element of {@code pImageInfo} that is a 2D image view created from a 3D image must have been created from an image created with #IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT set
- If {@code descriptorType} is #DESCRIPTOR_TYPE_SAMPLER, then {@code dstSet} must not have been allocated with a layout that included immutable samplers for {@code dstBinding}
- If the ##VkDescriptorSetLayoutBinding for {@code dstSet} at {@code dstBinding} is #DESCRIPTOR_TYPE_MUTABLE_EXT, the new active descriptor type {@code descriptorType} must exist in the corresponding {@code pMutableDescriptorTypeLists} list for {@code dstBinding}
- If {@code descriptorType} is #DESCRIPTOR_TYPE_INPUT_ATTACHMENT, the {@code imageView} member of each element of {@code pImageInfo} must have either been created without a ##VkImageViewMinLodCreateInfoEXT present in the {@code pNext} chain or with a ##VkImageViewMinLodCreateInfoEXT{@code ::minLod} of {@code 0.0}
@@ -5856,7 +5905,8 @@ val VkBindBufferMemoryInfo = struct(Module.VULKAN, "VkBindBufferMemoryInfo") {
- If {@code buffer} was created with the #BUFFER_CREATE_PROTECTED_BIT bit not set, the buffer must not be bound to a memory object allocated with a memory type that reports #MEMORY_PROPERTY_PROTECTED_BIT
- If {@code buffer} was created with ##VkDedicatedAllocationBufferCreateInfoNV{@code ::dedicatedAllocation} equal to #TRUE, {@code memory} must have been allocated with ##VkDedicatedAllocationMemoryAllocateInfoNV{@code ::buffer} equal to a buffer handle created with identical creation parameters to {@code buffer} and {@code memoryOffset} must be zero
- If the value of ##VkExportMemoryAllocateInfo{@code ::handleTypes} used to allocate {@code memory} is not 0, it must include at least one of the handles set in ##VkExternalMemoryBufferCreateInfo{@code ::handleTypes} when {@code buffer} was created
- - If {@code memory} was allocated by a memory import operation, the external handle type of the imported memory must also have been set in ##VkExternalMemoryBufferCreateInfo{@code ::handleTypes} when {@code buffer} was created
+ - If {@code memory} was allocated by a memory import operation, that is not ##VkImportAndroidHardwareBufferInfoANDROID with a non-{@code NULL} {@code buffer} value, the external handle type of the imported memory must also have been set in ##VkExternalMemoryBufferCreateInfo{@code ::handleTypes} when {@code buffer} was created
+ - If {@code memory} was allocated with the ##VkImportAndroidHardwareBufferInfoANDROID memory import operation with a non-{@code NULL} {@code buffer} value, #EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID must also have been set in ##VkExternalMemoryBufferCreateInfo{@code ::handleTypes} when {@code buffer} was created
- If the ##VkPhysicalDeviceBufferDeviceAddressFeatures{@code ::bufferDeviceAddress} feature is enabled and {@code buffer} was created with the #BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT bit set, {@code memory} must have been allocated with the #MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT bit set
- If the ##VkPhysicalDeviceDescriptorBufferFeaturesEXT {@code ::descriptorBufferCaptureReplay} feature is enabled and {@code buffer} was created with the #BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT bit set, {@code memory} must have been allocated with the #MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT bit set
- If the {@code pNext} chain includes a ##VkBindBufferMemoryDeviceGroupInfo structure, all instances of {@code memory} specified by ##VkBindBufferMemoryDeviceGroupInfo{@code ::pDeviceIndices} must have been allocated
@@ -5903,7 +5953,8 @@ val VkBindImageMemoryInfo = struct(Module.VULKAN, "VkBindImageMemoryInfo") {
- If image was created with the #IMAGE_CREATE_PROTECTED_BIT bit not set, the image must not be bound to a memory object created with a memory type that reports #MEMORY_PROPERTY_PROTECTED_BIT
- If {@code image} was created with ##VkDedicatedAllocationImageCreateInfoNV{@code ::dedicatedAllocation} equal to #TRUE, {@code memory} must have been created with ##VkDedicatedAllocationMemoryAllocateInfoNV{@code ::image} equal to an image handle created with identical creation parameters to {@code image} and {@code memoryOffset} must be zero
- If the value of ##VkExportMemoryAllocateInfo{@code ::handleTypes} used to allocate {@code memory} is not 0, it must include at least one of the handles set in ##VkExternalMemoryImageCreateInfo{@code ::handleTypes} when {@code image} was created
- - If {@code memory} was created by a memory import operation, the external handle type of the imported memory must also have been set in ##VkExternalMemoryImageCreateInfo{@code ::handleTypes} when {@code image} was created
+ - If {@code memory} was created by a memory import operation, that is not ##VkImportAndroidHardwareBufferInfoANDROID with a non-{@code NULL} {@code buffer} value, the external handle type of the imported memory must also have been set in ##VkExternalMemoryImageCreateInfo{@code ::handleTypes} when {@code image} was created
+ - If {@code memory} was created with the ##VkImportAndroidHardwareBufferInfoANDROID memory import operation with a non-{@code NULL} {@code buffer} value, #EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID must also have been set in ##VkExternalMemoryImageCreateInfo{@code ::handleTypes} when {@code image} was created
- If the ##VkPhysicalDeviceDescriptorBufferFeaturesEXT {@code ::descriptorBufferCaptureReplay} feature is enabled and {@code image} was created with the #IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT bit set, {@code memory} must have been allocated with the #MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT bit set
- If the {@code pNext} chain does not include a ##VkBindImagePlaneMemoryInfo structure, {@code memory} must have been allocated using one of the memory types allowed in the {@code memoryTypeBits} member of the ##VkMemoryRequirements structure returned from a call to #GetImageMemoryRequirements2() with {@code image}
- If the {@code pNext} chain does not include a ##VkBindImagePlaneMemoryInfo structure, {@code memoryOffset} must be an integer multiple of the {@code alignment} member of the ##VkMemoryRequirements structure returned from a call to #GetImageMemoryRequirements2() with {@code image}
@@ -6012,9 +6063,9 @@ val VkMemoryDedicatedAllocateInfo = struct(Module.VULKAN, "VkMemoryDedicatedAllo
Valid Usage
- At least one of {@code image} and {@code buffer} must be #NULL_HANDLE
- - If {@code image} is not #NULL_HANDLE, ##VkMemoryAllocateInfo{@code ::allocationSize} must equal the ##VkMemoryRequirements{@code ::size} of the image
+ - If {@code image} is not #NULL_HANDLE and the memory is not an imported Android Hardware Buffer, ##VkMemoryAllocateInfo{@code ::allocationSize} must equal the ##VkMemoryRequirements{@code ::size} of the image
- If {@code image} is not #NULL_HANDLE, {@code image} must have been created without #IMAGE_CREATE_SPARSE_BINDING_BIT set in ##VkImageCreateInfo{@code ::flags}
- - If {@code buffer} is not #NULL_HANDLE, ##VkMemoryAllocateInfo{@code ::allocationSize} must equal the ##VkMemoryRequirements{@code ::size} of the buffer
+ - If {@code buffer} is not #NULL_HANDLE and the memory is not an imported Android Hardware Buffer, ##VkMemoryAllocateInfo{@code ::allocationSize} must equal the ##VkMemoryRequirements{@code ::size} of the buffer
- If {@code buffer} is not #NULL_HANDLE, {@code buffer} must have been created without #BUFFER_CREATE_SPARSE_BINDING_BIT set in ##VkBufferCreateInfo{@code ::flags}
- If {@code image} is not #NULL_HANDLE and ##VkMemoryAllocateInfo defines a memory import operation with handle type #EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT, #EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, #EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT, #EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT, #EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT, or #EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT, and the external handle was created by the Vulkan API, then the memory being imported must also be a dedicated image allocation and {@code image} must be identical to the image associated with the imported memory
- If {@code buffer} is not #NULL_HANDLE and ##VkMemoryAllocateInfo defines a memory import operation with handle type #EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT, #EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, #EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT, #EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT, #EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT, or #EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT, and the external handle was created by the Vulkan API, then the memory being imported must also be a dedicated buffer allocation and {@code buffer} must be identical to the buffer associated with the imported memory
@@ -6369,6 +6420,7 @@ val VkImageMemoryRequirementsInfo2 = struct(Module.VULKAN, "VkImageMemoryRequire
- If {@code image} was created with #IMAGE_CREATE_DISJOINT_BIT and with #IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then there must be a ##VkImagePlaneMemoryRequirementsInfo included in the {@code pNext} chain of the ##VkImageMemoryRequirementsInfo2 structure
- If {@code image} was not created with the #IMAGE_CREATE_DISJOINT_BIT flag, there must not be a ##VkImagePlaneMemoryRequirementsInfo included in the {@code pNext} chain of the ##VkImageMemoryRequirementsInfo2 structure
- If {@code image} was created with a single-plane format and with any {@code tiling} other than #IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then there must not be a ##VkImagePlaneMemoryRequirementsInfo included in the {@code pNext} chain of the ##VkImageMemoryRequirementsInfo2 structure
+ - If {@code image} was created with the #EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID external memory handle type, then {@code image} must be bound to memory
Valid Usage (Implicit)
@@ -6475,7 +6527,7 @@ val VkPhysicalDeviceFeatures2 = struct(Module.VULKAN, "VkPhysicalDeviceFeatures2
Expression("#STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2")..VkStructureType("sType", "the type of this structure.")
PointerSetter(
- "VkPhysicalDevice16BitStorageFeatures", "VkPhysicalDevice16BitStorageFeaturesKHR", "VkPhysicalDevice4444FormatsFeaturesEXT", "VkPhysicalDevice8BitStorageFeatures", "VkPhysicalDevice8BitStorageFeaturesKHR", "VkPhysicalDeviceASTCDecodeFeaturesEXT", "VkPhysicalDeviceAccelerationStructureFeaturesKHR", "VkPhysicalDeviceAddressBindingReportFeaturesEXT", "VkPhysicalDeviceAmigoProfilingFeaturesSEC", "VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT", "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT", "VkPhysicalDeviceBorderColorSwizzleFeaturesEXT", "VkPhysicalDeviceBufferAddressFeaturesEXT", "VkPhysicalDeviceBufferDeviceAddressFeatures", "VkPhysicalDeviceBufferDeviceAddressFeaturesEXT", "VkPhysicalDeviceBufferDeviceAddressFeaturesKHR", "VkPhysicalDeviceCoherentMemoryFeaturesAMD", "VkPhysicalDeviceColorWriteEnableFeaturesEXT", "VkPhysicalDeviceComputeShaderDerivativesFeaturesNV", "VkPhysicalDeviceConditionalRenderingFeaturesEXT", "VkPhysicalDeviceCooperativeMatrixFeaturesNV", "VkPhysicalDeviceCopyMemoryIndirectFeaturesNV", "VkPhysicalDeviceCornerSampledImageFeaturesNV", "VkPhysicalDeviceCoverageReductionModeFeaturesNV", "VkPhysicalDeviceCustomBorderColorFeaturesEXT", "VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV", "VkPhysicalDeviceDepthClampZeroOneFeaturesEXT", "VkPhysicalDeviceDepthClipControlFeaturesEXT", "VkPhysicalDeviceDepthClipEnableFeaturesEXT", "VkPhysicalDeviceDescriptorBufferFeaturesEXT", "VkPhysicalDeviceDescriptorIndexingFeatures", "VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE", "VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV", "VkPhysicalDeviceDeviceMemoryReportFeaturesEXT", "VkPhysicalDeviceDiagnosticsConfigFeaturesNV", "VkPhysicalDeviceDynamicRenderingFeatures", "VkPhysicalDeviceDynamicRenderingFeaturesKHR", "VkPhysicalDeviceExclusiveScissorFeaturesNV", "VkPhysicalDeviceExtendedDynamicState2FeaturesEXT", "VkPhysicalDeviceExtendedDynamicState3FeaturesEXT", "VkPhysicalDeviceExtendedDynamicStateFeaturesEXT", "VkPhysicalDeviceExternalMemoryRDMAFeaturesNV", "VkPhysicalDeviceFaultFeaturesEXT", "VkPhysicalDeviceFloat16Int8FeaturesKHR", "VkPhysicalDeviceFragmentDensityMap2FeaturesEXT", "VkPhysicalDeviceFragmentDensityMapFeaturesEXT", "VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM", "VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR", "VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV", "VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT", "VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV", "VkPhysicalDeviceFragmentShadingRateFeaturesKHR", "VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT", "VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR", "VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT", "VkPhysicalDeviceHostQueryResetFeatures", "VkPhysicalDeviceHostQueryResetFeaturesEXT", "VkPhysicalDeviceImage2DViewOf3DFeaturesEXT", "VkPhysicalDeviceImageCompressionControlFeaturesEXT", "VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT", "VkPhysicalDeviceImageProcessingFeaturesQCOM", "VkPhysicalDeviceImageRobustnessFeatures", "VkPhysicalDeviceImageRobustnessFeaturesEXT", "VkPhysicalDeviceImageViewMinLodFeaturesEXT", "VkPhysicalDeviceImagelessFramebufferFeatures", "VkPhysicalDeviceImagelessFramebufferFeaturesKHR", "VkPhysicalDeviceIndexTypeUint8FeaturesEXT", "VkPhysicalDeviceInheritedViewportScissorFeaturesNV", "VkPhysicalDeviceInlineUniformBlockFeatures", "VkPhysicalDeviceInlineUniformBlockFeaturesEXT", "VkPhysicalDeviceInvocationMaskFeaturesHUAWEI", "VkPhysicalDeviceLegacyDitheringFeaturesEXT", "VkPhysicalDeviceLineRasterizationFeaturesEXT", "VkPhysicalDeviceLinearColorAttachmentFeaturesNV", "VkPhysicalDeviceMaintenance4Features", "VkPhysicalDeviceMaintenance4FeaturesKHR", "VkPhysicalDeviceMemoryDecompressionFeaturesNV", "VkPhysicalDeviceMemoryPriorityFeaturesEXT", "VkPhysicalDeviceMeshShaderFeaturesEXT", "VkPhysicalDeviceMeshShaderFeaturesNV", "VkPhysicalDeviceMultiDrawFeaturesEXT", "VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT", "VkPhysicalDeviceMultiviewFeatures", "VkPhysicalDeviceMultiviewFeaturesKHR", "VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM", "VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT", "VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE", "VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT", "VkPhysicalDeviceOpacityMicromapFeaturesEXT", "VkPhysicalDeviceOpticalFlowFeaturesNV", "VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT", "VkPhysicalDevicePerformanceQueryFeaturesKHR", "VkPhysicalDevicePipelineCreationCacheControlFeatures", "VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT", "VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR", "VkPhysicalDevicePipelinePropertiesFeaturesEXT", "VkPhysicalDevicePipelineProtectedAccessFeaturesEXT", "VkPhysicalDevicePipelineRobustnessFeaturesEXT", "VkPhysicalDevicePortabilitySubsetFeaturesKHR", "VkPhysicalDevicePresentBarrierFeaturesNV", "VkPhysicalDevicePresentIdFeaturesKHR", "VkPhysicalDevicePresentWaitFeaturesKHR", "VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT", "VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT", "VkPhysicalDevicePrivateDataFeatures", "VkPhysicalDevicePrivateDataFeaturesEXT", "VkPhysicalDeviceProtectedMemoryFeatures", "VkPhysicalDeviceProvokingVertexFeaturesEXT", "VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT", "VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM", "VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT", "VkPhysicalDeviceRayQueryFeaturesKHR", "VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV", "VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR", "VkPhysicalDeviceRayTracingMotionBlurFeaturesNV", "VkPhysicalDeviceRayTracingPipelineFeaturesKHR", "VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV", "VkPhysicalDeviceRobustness2FeaturesEXT", "VkPhysicalDeviceSamplerYcbcrConversionFeatures", "VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR", "VkPhysicalDeviceScalarBlockLayoutFeatures", "VkPhysicalDeviceScalarBlockLayoutFeaturesEXT", "VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures", "VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR", "VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT", "VkPhysicalDeviceShaderAtomicFloatFeaturesEXT", "VkPhysicalDeviceShaderAtomicInt64Features", "VkPhysicalDeviceShaderAtomicInt64FeaturesKHR", "VkPhysicalDeviceShaderClockFeaturesKHR", "VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM", "VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures", "VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT", "VkPhysicalDeviceShaderDrawParameterFeatures", "VkPhysicalDeviceShaderDrawParametersFeatures", "VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD", "VkPhysicalDeviceShaderFloat16Int8Features", "VkPhysicalDeviceShaderFloat16Int8FeaturesKHR", "VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT", "VkPhysicalDeviceShaderImageFootprintFeaturesNV", "VkPhysicalDeviceShaderIntegerDotProductFeatures", "VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR", "VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL", "VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT", "VkPhysicalDeviceShaderSMBuiltinsFeaturesNV", "VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures", "VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR", "VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR", "VkPhysicalDeviceShaderTerminateInvocationFeatures", "VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR", "VkPhysicalDeviceShadingRateImageFeaturesNV", "VkPhysicalDeviceSubgroupSizeControlFeatures", "VkPhysicalDeviceSubgroupSizeControlFeaturesEXT", "VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT", "VkPhysicalDeviceSubpassShadingFeaturesHUAWEI", "VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT", "VkPhysicalDeviceSynchronization2Features", "VkPhysicalDeviceSynchronization2FeaturesKHR", "VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT", "VkPhysicalDeviceTextureCompressionASTCHDRFeatures", "VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT", "VkPhysicalDeviceTilePropertiesFeaturesQCOM", "VkPhysicalDeviceTimelineSemaphoreFeatures", "VkPhysicalDeviceTimelineSemaphoreFeaturesKHR", "VkPhysicalDeviceTransformFeedbackFeaturesEXT", "VkPhysicalDeviceUniformBufferStandardLayoutFeatures", "VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR", "VkPhysicalDeviceVariablePointerFeatures", "VkPhysicalDeviceVariablePointerFeaturesKHR", "VkPhysicalDeviceVariablePointersFeatures", "VkPhysicalDeviceVariablePointersFeaturesKHR", "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT", "VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT", "VkPhysicalDeviceVulkan11Features", "VkPhysicalDeviceVulkan12Features", "VkPhysicalDeviceVulkan13Features", "VkPhysicalDeviceVulkanMemoryModelFeatures", "VkPhysicalDeviceVulkanMemoryModelFeaturesKHR", "VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR", "VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT", "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT", "VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures", "VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR",
+ "VkPhysicalDevice16BitStorageFeatures", "VkPhysicalDevice16BitStorageFeaturesKHR", "VkPhysicalDevice4444FormatsFeaturesEXT", "VkPhysicalDevice8BitStorageFeatures", "VkPhysicalDevice8BitStorageFeaturesKHR", "VkPhysicalDeviceASTCDecodeFeaturesEXT", "VkPhysicalDeviceAccelerationStructureFeaturesKHR", "VkPhysicalDeviceAddressBindingReportFeaturesEXT", "VkPhysicalDeviceAmigoProfilingFeaturesSEC", "VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT", "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT", "VkPhysicalDeviceBorderColorSwizzleFeaturesEXT", "VkPhysicalDeviceBufferAddressFeaturesEXT", "VkPhysicalDeviceBufferDeviceAddressFeatures", "VkPhysicalDeviceBufferDeviceAddressFeaturesEXT", "VkPhysicalDeviceBufferDeviceAddressFeaturesKHR", "VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI", "VkPhysicalDeviceCoherentMemoryFeaturesAMD", "VkPhysicalDeviceColorWriteEnableFeaturesEXT", "VkPhysicalDeviceComputeShaderDerivativesFeaturesNV", "VkPhysicalDeviceConditionalRenderingFeaturesEXT", "VkPhysicalDeviceCooperativeMatrixFeaturesNV", "VkPhysicalDeviceCopyMemoryIndirectFeaturesNV", "VkPhysicalDeviceCornerSampledImageFeaturesNV", "VkPhysicalDeviceCoverageReductionModeFeaturesNV", "VkPhysicalDeviceCustomBorderColorFeaturesEXT", "VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV", "VkPhysicalDeviceDepthClampZeroOneFeaturesEXT", "VkPhysicalDeviceDepthClipControlFeaturesEXT", "VkPhysicalDeviceDepthClipEnableFeaturesEXT", "VkPhysicalDeviceDescriptorBufferFeaturesEXT", "VkPhysicalDeviceDescriptorIndexingFeatures", "VkPhysicalDeviceDescriptorIndexingFeaturesEXT", "VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE", "VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV", "VkPhysicalDeviceDeviceMemoryReportFeaturesEXT", "VkPhysicalDeviceDiagnosticsConfigFeaturesNV", "VkPhysicalDeviceDynamicRenderingFeatures", "VkPhysicalDeviceDynamicRenderingFeaturesKHR", "VkPhysicalDeviceExclusiveScissorFeaturesNV", "VkPhysicalDeviceExtendedDynamicState2FeaturesEXT", "VkPhysicalDeviceExtendedDynamicState3FeaturesEXT", "VkPhysicalDeviceExtendedDynamicStateFeaturesEXT", "VkPhysicalDeviceExternalMemoryRDMAFeaturesNV", "VkPhysicalDeviceFaultFeaturesEXT", "VkPhysicalDeviceFloat16Int8FeaturesKHR", "VkPhysicalDeviceFragmentDensityMap2FeaturesEXT", "VkPhysicalDeviceFragmentDensityMapFeaturesEXT", "VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM", "VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR", "VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV", "VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT", "VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV", "VkPhysicalDeviceFragmentShadingRateFeaturesKHR", "VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT", "VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR", "VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT", "VkPhysicalDeviceHostQueryResetFeatures", "VkPhysicalDeviceHostQueryResetFeaturesEXT", "VkPhysicalDeviceImage2DViewOf3DFeaturesEXT", "VkPhysicalDeviceImageCompressionControlFeaturesEXT", "VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT", "VkPhysicalDeviceImageProcessingFeaturesQCOM", "VkPhysicalDeviceImageRobustnessFeatures", "VkPhysicalDeviceImageRobustnessFeaturesEXT", "VkPhysicalDeviceImageViewMinLodFeaturesEXT", "VkPhysicalDeviceImagelessFramebufferFeatures", "VkPhysicalDeviceImagelessFramebufferFeaturesKHR", "VkPhysicalDeviceIndexTypeUint8FeaturesEXT", "VkPhysicalDeviceInheritedViewportScissorFeaturesNV", "VkPhysicalDeviceInlineUniformBlockFeatures", "VkPhysicalDeviceInlineUniformBlockFeaturesEXT", "VkPhysicalDeviceInvocationMaskFeaturesHUAWEI", "VkPhysicalDeviceLegacyDitheringFeaturesEXT", "VkPhysicalDeviceLineRasterizationFeaturesEXT", "VkPhysicalDeviceLinearColorAttachmentFeaturesNV", "VkPhysicalDeviceMaintenance4Features", "VkPhysicalDeviceMaintenance4FeaturesKHR", "VkPhysicalDeviceMemoryDecompressionFeaturesNV", "VkPhysicalDeviceMemoryPriorityFeaturesEXT", "VkPhysicalDeviceMeshShaderFeaturesEXT", "VkPhysicalDeviceMeshShaderFeaturesNV", "VkPhysicalDeviceMultiDrawFeaturesEXT", "VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT", "VkPhysicalDeviceMultiviewFeatures", "VkPhysicalDeviceMultiviewFeaturesKHR", "VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM", "VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT", "VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE", "VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT", "VkPhysicalDeviceOpacityMicromapFeaturesEXT", "VkPhysicalDeviceOpticalFlowFeaturesNV", "VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT", "VkPhysicalDevicePerformanceQueryFeaturesKHR", "VkPhysicalDevicePipelineCreationCacheControlFeatures", "VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT", "VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR", "VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT", "VkPhysicalDevicePipelinePropertiesFeaturesEXT", "VkPhysicalDevicePipelineProtectedAccessFeaturesEXT", "VkPhysicalDevicePipelineRobustnessFeaturesEXT", "VkPhysicalDevicePortabilitySubsetFeaturesKHR", "VkPhysicalDevicePresentBarrierFeaturesNV", "VkPhysicalDevicePresentIdFeaturesKHR", "VkPhysicalDevicePresentWaitFeaturesKHR", "VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT", "VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT", "VkPhysicalDevicePrivateDataFeatures", "VkPhysicalDevicePrivateDataFeaturesEXT", "VkPhysicalDeviceProtectedMemoryFeatures", "VkPhysicalDeviceProvokingVertexFeaturesEXT", "VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT", "VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM", "VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT", "VkPhysicalDeviceRayQueryFeaturesKHR", "VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV", "VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR", "VkPhysicalDeviceRayTracingMotionBlurFeaturesNV", "VkPhysicalDeviceRayTracingPipelineFeaturesKHR", "VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV", "VkPhysicalDeviceRobustness2FeaturesEXT", "VkPhysicalDeviceSamplerYcbcrConversionFeatures", "VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR", "VkPhysicalDeviceScalarBlockLayoutFeatures", "VkPhysicalDeviceScalarBlockLayoutFeaturesEXT", "VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures", "VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR", "VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT", "VkPhysicalDeviceShaderAtomicFloatFeaturesEXT", "VkPhysicalDeviceShaderAtomicInt64Features", "VkPhysicalDeviceShaderAtomicInt64FeaturesKHR", "VkPhysicalDeviceShaderClockFeaturesKHR", "VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM", "VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures", "VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT", "VkPhysicalDeviceShaderDrawParameterFeatures", "VkPhysicalDeviceShaderDrawParametersFeatures", "VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD", "VkPhysicalDeviceShaderFloat16Int8Features", "VkPhysicalDeviceShaderFloat16Int8FeaturesKHR", "VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT", "VkPhysicalDeviceShaderImageFootprintFeaturesNV", "VkPhysicalDeviceShaderIntegerDotProductFeatures", "VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR", "VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL", "VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT", "VkPhysicalDeviceShaderSMBuiltinsFeaturesNV", "VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures", "VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR", "VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR", "VkPhysicalDeviceShaderTerminateInvocationFeatures", "VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR", "VkPhysicalDeviceShadingRateImageFeaturesNV", "VkPhysicalDeviceSubgroupSizeControlFeatures", "VkPhysicalDeviceSubgroupSizeControlFeaturesEXT", "VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT", "VkPhysicalDeviceSubpassShadingFeaturesHUAWEI", "VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT", "VkPhysicalDeviceSynchronization2Features", "VkPhysicalDeviceSynchronization2FeaturesKHR", "VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT", "VkPhysicalDeviceTextureCompressionASTCHDRFeatures", "VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT", "VkPhysicalDeviceTilePropertiesFeaturesQCOM", "VkPhysicalDeviceTimelineSemaphoreFeatures", "VkPhysicalDeviceTimelineSemaphoreFeaturesKHR", "VkPhysicalDeviceTransformFeedbackFeaturesEXT", "VkPhysicalDeviceUniformBufferStandardLayoutFeatures", "VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR", "VkPhysicalDeviceVariablePointerFeatures", "VkPhysicalDeviceVariablePointerFeaturesKHR", "VkPhysicalDeviceVariablePointersFeatures", "VkPhysicalDeviceVariablePointersFeaturesKHR", "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT", "VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT", "VkPhysicalDeviceVulkan11Features", "VkPhysicalDeviceVulkan12Features", "VkPhysicalDeviceVulkan13Features", "VkPhysicalDeviceVulkanMemoryModelFeatures", "VkPhysicalDeviceVulkanMemoryModelFeaturesKHR", "VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR", "VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT", "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT", "VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures", "VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR",
prepend = true
)..nullable..opaque_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
VkPhysicalDeviceFeatures("features", "a ##VkPhysicalDeviceFeatures structure describing the fine-grained features of the Vulkan 1.0 API.")
@@ -6492,7 +6544,7 @@ val VkPhysicalDeviceProperties2 = struct(Module.VULKAN, "VkPhysicalDevicePropert
Valid Usage (Implicit)
- {@code sType} must be #STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2
- - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkPhysicalDeviceAccelerationStructurePropertiesKHR, ##VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, ##VkPhysicalDeviceConservativeRasterizationPropertiesEXT, ##VkPhysicalDeviceCooperativeMatrixPropertiesNV, ##VkPhysicalDeviceCopyMemoryIndirectPropertiesNV, ##VkPhysicalDeviceCustomBorderColorPropertiesEXT, ##VkPhysicalDeviceDepthStencilResolveProperties, ##VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT, ##VkPhysicalDeviceDescriptorBufferPropertiesEXT, ##VkPhysicalDeviceDescriptorIndexingProperties, ##VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV, ##VkPhysicalDeviceDiscardRectanglePropertiesEXT, ##VkPhysicalDeviceDriverProperties, ##VkPhysicalDeviceDrmPropertiesEXT, ##VkPhysicalDeviceExtendedDynamicState3PropertiesEXT, ##VkPhysicalDeviceExternalMemoryHostPropertiesEXT, ##VkPhysicalDeviceFloatControlsProperties, ##VkPhysicalDeviceFragmentDensityMap2PropertiesEXT, ##VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM, ##VkPhysicalDeviceFragmentDensityMapPropertiesEXT, ##VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR, ##VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV, ##VkPhysicalDeviceFragmentShadingRatePropertiesKHR, ##VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT, ##VkPhysicalDeviceIDProperties, ##VkPhysicalDeviceImageProcessingPropertiesQCOM, ##VkPhysicalDeviceInlineUniformBlockProperties, ##VkPhysicalDeviceLineRasterizationPropertiesEXT, ##VkPhysicalDeviceMaintenance3Properties, ##VkPhysicalDeviceMaintenance4Properties, ##VkPhysicalDeviceMemoryDecompressionPropertiesNV, ##VkPhysicalDeviceMeshShaderPropertiesEXT, ##VkPhysicalDeviceMeshShaderPropertiesNV, ##VkPhysicalDeviceMultiDrawPropertiesEXT, ##VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, ##VkPhysicalDeviceMultiviewProperties, ##VkPhysicalDeviceOpacityMicromapPropertiesEXT, ##VkPhysicalDeviceOpticalFlowPropertiesNV, ##VkPhysicalDevicePCIBusInfoPropertiesEXT, ##VkPhysicalDevicePerformanceQueryPropertiesKHR, ##VkPhysicalDevicePipelineRobustnessPropertiesEXT, ##VkPhysicalDevicePointClippingProperties, ##VkPhysicalDevicePortabilitySubsetPropertiesKHR, ##VkPhysicalDeviceProtectedMemoryProperties, ##VkPhysicalDeviceProvokingVertexPropertiesEXT, ##VkPhysicalDevicePushDescriptorPropertiesKHR, ##VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV, ##VkPhysicalDeviceRayTracingPipelinePropertiesKHR, ##VkPhysicalDeviceRayTracingPropertiesNV, ##VkPhysicalDeviceRobustness2PropertiesEXT, ##VkPhysicalDeviceSampleLocationsPropertiesEXT, ##VkPhysicalDeviceSamplerFilterMinmaxProperties, ##VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM, ##VkPhysicalDeviceShaderCoreProperties2AMD, ##VkPhysicalDeviceShaderCorePropertiesAMD, ##VkPhysicalDeviceShaderIntegerDotProductProperties, ##VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT, ##VkPhysicalDeviceShaderSMBuiltinsPropertiesNV, ##VkPhysicalDeviceShadingRateImagePropertiesNV, ##VkPhysicalDeviceSubgroupProperties, ##VkPhysicalDeviceSubgroupSizeControlProperties, ##VkPhysicalDeviceSubpassShadingPropertiesHUAWEI, ##VkPhysicalDeviceTexelBufferAlignmentProperties, ##VkPhysicalDeviceTimelineSemaphoreProperties, ##VkPhysicalDeviceTransformFeedbackPropertiesEXT, ##VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, ##VkPhysicalDeviceVulkan11Properties, ##VkPhysicalDeviceVulkan12Properties, or ##VkPhysicalDeviceVulkan13Properties
+ - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkPhysicalDeviceAccelerationStructurePropertiesKHR, ##VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, ##VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI, ##VkPhysicalDeviceConservativeRasterizationPropertiesEXT, ##VkPhysicalDeviceCooperativeMatrixPropertiesNV, ##VkPhysicalDeviceCopyMemoryIndirectPropertiesNV, ##VkPhysicalDeviceCustomBorderColorPropertiesEXT, ##VkPhysicalDeviceDepthStencilResolveProperties, ##VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT, ##VkPhysicalDeviceDescriptorBufferPropertiesEXT, ##VkPhysicalDeviceDescriptorIndexingProperties, ##VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV, ##VkPhysicalDeviceDiscardRectanglePropertiesEXT, ##VkPhysicalDeviceDriverProperties, ##VkPhysicalDeviceDrmPropertiesEXT, ##VkPhysicalDeviceExtendedDynamicState3PropertiesEXT, ##VkPhysicalDeviceExternalMemoryHostPropertiesEXT, ##VkPhysicalDeviceFloatControlsProperties, ##VkPhysicalDeviceFragmentDensityMap2PropertiesEXT, ##VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM, ##VkPhysicalDeviceFragmentDensityMapPropertiesEXT, ##VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR, ##VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV, ##VkPhysicalDeviceFragmentShadingRatePropertiesKHR, ##VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT, ##VkPhysicalDeviceIDProperties, ##VkPhysicalDeviceImageProcessingPropertiesQCOM, ##VkPhysicalDeviceInlineUniformBlockProperties, ##VkPhysicalDeviceLineRasterizationPropertiesEXT, ##VkPhysicalDeviceMaintenance3Properties, ##VkPhysicalDeviceMaintenance4Properties, ##VkPhysicalDeviceMemoryDecompressionPropertiesNV, ##VkPhysicalDeviceMeshShaderPropertiesEXT, ##VkPhysicalDeviceMeshShaderPropertiesNV, ##VkPhysicalDeviceMultiDrawPropertiesEXT, ##VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, ##VkPhysicalDeviceMultiviewProperties, ##VkPhysicalDeviceOpacityMicromapPropertiesEXT, ##VkPhysicalDeviceOpticalFlowPropertiesNV, ##VkPhysicalDevicePCIBusInfoPropertiesEXT, ##VkPhysicalDevicePerformanceQueryPropertiesKHR, ##VkPhysicalDevicePipelineRobustnessPropertiesEXT, ##VkPhysicalDevicePointClippingProperties, ##VkPhysicalDevicePortabilitySubsetPropertiesKHR, ##VkPhysicalDeviceProtectedMemoryProperties, ##VkPhysicalDeviceProvokingVertexPropertiesEXT, ##VkPhysicalDevicePushDescriptorPropertiesKHR, ##VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV, ##VkPhysicalDeviceRayTracingPipelinePropertiesKHR, ##VkPhysicalDeviceRayTracingPropertiesNV, ##VkPhysicalDeviceRobustness2PropertiesEXT, ##VkPhysicalDeviceSampleLocationsPropertiesEXT, ##VkPhysicalDeviceSamplerFilterMinmaxProperties, ##VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM, ##VkPhysicalDeviceShaderCoreProperties2AMD, ##VkPhysicalDeviceShaderCorePropertiesAMD, ##VkPhysicalDeviceShaderIntegerDotProductProperties, ##VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT, ##VkPhysicalDeviceShaderSMBuiltinsPropertiesNV, ##VkPhysicalDeviceShadingRateImagePropertiesNV, ##VkPhysicalDeviceSubgroupProperties, ##VkPhysicalDeviceSubgroupSizeControlProperties, ##VkPhysicalDeviceSubpassShadingPropertiesHUAWEI, ##VkPhysicalDeviceTexelBufferAlignmentProperties, ##VkPhysicalDeviceTimelineSemaphoreProperties, ##VkPhysicalDeviceTransformFeedbackPropertiesEXT, ##VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, ##VkPhysicalDeviceVulkan11Properties, ##VkPhysicalDeviceVulkan12Properties, or ##VkPhysicalDeviceVulkan13Properties
- The {@code sType} value of each struct in the {@code pNext} chain must be unique
@@ -6502,7 +6554,7 @@ val VkPhysicalDeviceProperties2 = struct(Module.VULKAN, "VkPhysicalDevicePropert
Expression("#STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2")..VkStructureType("sType", "the type of this structure.").mutable()
PointerSetter(
- "VkPhysicalDeviceAccelerationStructurePropertiesKHR", "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT", "VkPhysicalDeviceConservativeRasterizationPropertiesEXT", "VkPhysicalDeviceCooperativeMatrixPropertiesNV", "VkPhysicalDeviceCopyMemoryIndirectPropertiesNV", "VkPhysicalDeviceCustomBorderColorPropertiesEXT", "VkPhysicalDeviceDepthStencilResolveProperties", "VkPhysicalDeviceDepthStencilResolvePropertiesKHR", "VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT", "VkPhysicalDeviceDescriptorBufferPropertiesEXT", "VkPhysicalDeviceDescriptorIndexingProperties", "VkPhysicalDeviceDescriptorIndexingPropertiesEXT", "VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV", "VkPhysicalDeviceDiscardRectanglePropertiesEXT", "VkPhysicalDeviceDriverProperties", "VkPhysicalDeviceDriverPropertiesKHR", "VkPhysicalDeviceDrmPropertiesEXT", "VkPhysicalDeviceExtendedDynamicState3PropertiesEXT", "VkPhysicalDeviceExternalMemoryHostPropertiesEXT", "VkPhysicalDeviceFloatControlsProperties", "VkPhysicalDeviceFloatControlsPropertiesKHR", "VkPhysicalDeviceFragmentDensityMap2PropertiesEXT", "VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM", "VkPhysicalDeviceFragmentDensityMapPropertiesEXT", "VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR", "VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV", "VkPhysicalDeviceFragmentShadingRatePropertiesKHR", "VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT", "VkPhysicalDeviceIDProperties", "VkPhysicalDeviceIDPropertiesKHR", "VkPhysicalDeviceImageProcessingPropertiesQCOM", "VkPhysicalDeviceInlineUniformBlockProperties", "VkPhysicalDeviceInlineUniformBlockPropertiesEXT", "VkPhysicalDeviceLineRasterizationPropertiesEXT", "VkPhysicalDeviceMaintenance3Properties", "VkPhysicalDeviceMaintenance3PropertiesKHR", "VkPhysicalDeviceMaintenance4Properties", "VkPhysicalDeviceMaintenance4PropertiesKHR", "VkPhysicalDeviceMemoryDecompressionPropertiesNV", "VkPhysicalDeviceMeshShaderPropertiesEXT", "VkPhysicalDeviceMeshShaderPropertiesNV", "VkPhysicalDeviceMultiDrawPropertiesEXT", "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX", "VkPhysicalDeviceMultiviewProperties", "VkPhysicalDeviceMultiviewPropertiesKHR", "VkPhysicalDeviceOpacityMicromapPropertiesEXT", "VkPhysicalDeviceOpticalFlowPropertiesNV", "VkPhysicalDevicePCIBusInfoPropertiesEXT", "VkPhysicalDevicePerformanceQueryPropertiesKHR", "VkPhysicalDevicePipelineRobustnessPropertiesEXT", "VkPhysicalDevicePointClippingProperties", "VkPhysicalDevicePointClippingPropertiesKHR", "VkPhysicalDevicePortabilitySubsetPropertiesKHR", "VkPhysicalDeviceProtectedMemoryProperties", "VkPhysicalDeviceProvokingVertexPropertiesEXT", "VkPhysicalDevicePushDescriptorPropertiesKHR", "VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV", "VkPhysicalDeviceRayTracingPipelinePropertiesKHR", "VkPhysicalDeviceRayTracingPropertiesNV", "VkPhysicalDeviceRobustness2PropertiesEXT", "VkPhysicalDeviceSampleLocationsPropertiesEXT", "VkPhysicalDeviceSamplerFilterMinmaxProperties", "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT", "VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM", "VkPhysicalDeviceShaderCoreProperties2AMD", "VkPhysicalDeviceShaderCorePropertiesAMD", "VkPhysicalDeviceShaderIntegerDotProductProperties", "VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR", "VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT", "VkPhysicalDeviceShaderSMBuiltinsPropertiesNV", "VkPhysicalDeviceShadingRateImagePropertiesNV", "VkPhysicalDeviceSubgroupProperties", "VkPhysicalDeviceSubgroupSizeControlProperties", "VkPhysicalDeviceSubgroupSizeControlPropertiesEXT", "VkPhysicalDeviceSubpassShadingPropertiesHUAWEI", "VkPhysicalDeviceTexelBufferAlignmentProperties", "VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT", "VkPhysicalDeviceTimelineSemaphoreProperties", "VkPhysicalDeviceTimelineSemaphorePropertiesKHR", "VkPhysicalDeviceTransformFeedbackPropertiesEXT", "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT", "VkPhysicalDeviceVulkan11Properties", "VkPhysicalDeviceVulkan12Properties", "VkPhysicalDeviceVulkan13Properties",
+ "VkPhysicalDeviceAccelerationStructurePropertiesKHR", "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT", "VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI", "VkPhysicalDeviceConservativeRasterizationPropertiesEXT", "VkPhysicalDeviceCooperativeMatrixPropertiesNV", "VkPhysicalDeviceCopyMemoryIndirectPropertiesNV", "VkPhysicalDeviceCustomBorderColorPropertiesEXT", "VkPhysicalDeviceDepthStencilResolveProperties", "VkPhysicalDeviceDepthStencilResolvePropertiesKHR", "VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT", "VkPhysicalDeviceDescriptorBufferPropertiesEXT", "VkPhysicalDeviceDescriptorIndexingProperties", "VkPhysicalDeviceDescriptorIndexingPropertiesEXT", "VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV", "VkPhysicalDeviceDiscardRectanglePropertiesEXT", "VkPhysicalDeviceDriverProperties", "VkPhysicalDeviceDriverPropertiesKHR", "VkPhysicalDeviceDrmPropertiesEXT", "VkPhysicalDeviceExtendedDynamicState3PropertiesEXT", "VkPhysicalDeviceExternalMemoryHostPropertiesEXT", "VkPhysicalDeviceFloatControlsProperties", "VkPhysicalDeviceFloatControlsPropertiesKHR", "VkPhysicalDeviceFragmentDensityMap2PropertiesEXT", "VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM", "VkPhysicalDeviceFragmentDensityMapPropertiesEXT", "VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR", "VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV", "VkPhysicalDeviceFragmentShadingRatePropertiesKHR", "VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT", "VkPhysicalDeviceIDProperties", "VkPhysicalDeviceIDPropertiesKHR", "VkPhysicalDeviceImageProcessingPropertiesQCOM", "VkPhysicalDeviceInlineUniformBlockProperties", "VkPhysicalDeviceInlineUniformBlockPropertiesEXT", "VkPhysicalDeviceLineRasterizationPropertiesEXT", "VkPhysicalDeviceMaintenance3Properties", "VkPhysicalDeviceMaintenance3PropertiesKHR", "VkPhysicalDeviceMaintenance4Properties", "VkPhysicalDeviceMaintenance4PropertiesKHR", "VkPhysicalDeviceMemoryDecompressionPropertiesNV", "VkPhysicalDeviceMeshShaderPropertiesEXT", "VkPhysicalDeviceMeshShaderPropertiesNV", "VkPhysicalDeviceMultiDrawPropertiesEXT", "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX", "VkPhysicalDeviceMultiviewProperties", "VkPhysicalDeviceMultiviewPropertiesKHR", "VkPhysicalDeviceOpacityMicromapPropertiesEXT", "VkPhysicalDeviceOpticalFlowPropertiesNV", "VkPhysicalDevicePCIBusInfoPropertiesEXT", "VkPhysicalDevicePerformanceQueryPropertiesKHR", "VkPhysicalDevicePipelineRobustnessPropertiesEXT", "VkPhysicalDevicePointClippingProperties", "VkPhysicalDevicePointClippingPropertiesKHR", "VkPhysicalDevicePortabilitySubsetPropertiesKHR", "VkPhysicalDeviceProtectedMemoryProperties", "VkPhysicalDeviceProvokingVertexPropertiesEXT", "VkPhysicalDevicePushDescriptorPropertiesKHR", "VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV", "VkPhysicalDeviceRayTracingPipelinePropertiesKHR", "VkPhysicalDeviceRayTracingPropertiesNV", "VkPhysicalDeviceRobustness2PropertiesEXT", "VkPhysicalDeviceSampleLocationsPropertiesEXT", "VkPhysicalDeviceSamplerFilterMinmaxProperties", "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT", "VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM", "VkPhysicalDeviceShaderCoreProperties2AMD", "VkPhysicalDeviceShaderCorePropertiesAMD", "VkPhysicalDeviceShaderIntegerDotProductProperties", "VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR", "VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT", "VkPhysicalDeviceShaderSMBuiltinsPropertiesNV", "VkPhysicalDeviceShadingRateImagePropertiesNV", "VkPhysicalDeviceSubgroupProperties", "VkPhysicalDeviceSubgroupSizeControlProperties", "VkPhysicalDeviceSubgroupSizeControlPropertiesEXT", "VkPhysicalDeviceSubpassShadingPropertiesHUAWEI", "VkPhysicalDeviceTexelBufferAlignmentProperties", "VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT", "VkPhysicalDeviceTimelineSemaphoreProperties", "VkPhysicalDeviceTimelineSemaphorePropertiesKHR", "VkPhysicalDeviceTransformFeedbackPropertiesEXT", "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT", "VkPhysicalDeviceVulkan11Properties", "VkPhysicalDeviceVulkan12Properties", "VkPhysicalDeviceVulkan13Properties",
prepend = true
)..nullable..opaque_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.").mutable()
VkPhysicalDeviceProperties("properties", "a ##VkPhysicalDeviceProperties structure describing properties of the physical device. This structure is written with the same values as if it were written by #GetPhysicalDeviceProperties().")
@@ -6547,7 +6599,7 @@ val VkImageFormatProperties2 = struct(Module.VULKAN, "VkImageFormatProperties2",
Valid Usage (Implicit)
- {@code sType} must be #STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2
- - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkExternalImageFormatProperties, ##VkFilterCubicImageViewImageFormatPropertiesEXT, ##VkImageCompressionPropertiesEXT, ##VkSamplerYcbcrConversionImageFormatProperties, or ##VkTextureLODGatherFormatPropertiesAMD
+ - Each {@code pNext} member of any structure (including this one) in the {@code pNext} chain must be either {@code NULL} or a pointer to a valid instance of ##VkAndroidHardwareBufferUsageANDROID, ##VkExternalImageFormatProperties, ##VkFilterCubicImageViewImageFormatPropertiesEXT, ##VkImageCompressionPropertiesEXT, ##VkSamplerYcbcrConversionImageFormatProperties, or ##VkTextureLODGatherFormatPropertiesAMD
- The {@code sType} value of each struct in the {@code pNext} chain must be unique
@@ -6557,7 +6609,7 @@ val VkImageFormatProperties2 = struct(Module.VULKAN, "VkImageFormatProperties2",
Expression("#STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2")..VkStructureType("sType", "the type of this structure.").mutable()
PointerSetter(
- "VkExternalImageFormatProperties", "VkExternalImageFormatPropertiesKHR", "VkFilterCubicImageViewImageFormatPropertiesEXT", "VkImageCompressionPropertiesEXT", "VkSamplerYcbcrConversionImageFormatProperties", "VkSamplerYcbcrConversionImageFormatPropertiesKHR", "VkTextureLODGatherFormatPropertiesAMD",
+ "VkAndroidHardwareBufferUsageANDROID", "VkExternalImageFormatProperties", "VkExternalImageFormatPropertiesKHR", "VkFilterCubicImageViewImageFormatPropertiesEXT", "VkImageCompressionPropertiesEXT", "VkSamplerYcbcrConversionImageFormatProperties", "VkSamplerYcbcrConversionImageFormatPropertiesKHR", "VkTextureLODGatherFormatPropertiesAMD",
prepend = true
)..nullable..opaque_p("pNext", "{@code NULL} or a pointer to a structure extending this structure. The {@code pNext} chain of ##VkImageFormatProperties2 is used to allow the specification of additional capabilities to be returned from {@code vkGetPhysicalDeviceImageFormatProperties2}.").mutable()
VkImageFormatProperties("imageFormatProperties", "a ##VkImageFormatProperties structure in which capabilities are returned.")
@@ -7069,11 +7121,12 @@ val VkSamplerYcbcrConversionCreateInfo = struct(Module.VULKAN, "VkSamplerYcbcrCo
If {@code format} supports #FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT the {@code forceExplicitReconstruction} value behaves as if it was set to #TRUE.
- Sampler Y′CBCR conversion objects do not support external format conversion without additional extensions defining external formats.
+ If the {@code pNext} chain includes a ##VkExternalFormatANDROID structure with non-zero {@code externalFormat} member, the sampler Y′CBCR conversion object represents an external format conversion, and {@code format} must be #FORMAT_UNDEFINED. Such conversions must only be used to sample image views with a matching external format. When creating an external format conversion, the value of {@code components} is ignored.
Valid Usage
- - {@code format} must represent unsigned normalized values (i.e. the format must be a {@code UNORM} format)
+ - If an external format conversion is being created, {@code format} must be #FORMAT_UNDEFINED
+ - If an external format conversion is not being created, {@code format} must represent unsigned normalized values (i.e. the format must be a {@code UNORM} format)
- The potential format features of the sampler Y′CBCR conversion must support #FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT or #FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT
- If the potential format features of the sampler Y′CBCR conversion do not support #FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT, {@code xChromaOffset} and {@code yChromaOffset} must not be #CHROMA_LOCATION_COSITED_EVEN if the corresponding components are downsampled
- If the potential format features of the sampler Y′CBCR conversion do not support #FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT, {@code xChromaOffset} and {@code yChromaOffset} must not be #CHROMA_LOCATION_MIDPOINT if the corresponding components are downsampled
@@ -7091,7 +7144,8 @@ val VkSamplerYcbcrConversionCreateInfo = struct(Module.VULKAN, "VkSamplerYcbcrCo
Valid Usage (Implicit)
- {@code sType} must be #STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO
- - {@code pNext} must be {@code NULL}
+ - {@code pNext} must be {@code NULL} or a pointer to a valid instance of ##VkExternalFormatANDROID
+ - The {@code sType} value of each struct in the {@code pNext} chain must be unique
- {@code format} must be a valid {@code VkFormat} value
- {@code ycbcrModel} must be a valid {@code VkSamplerYcbcrModelConversion} value
- {@code ycbcrRange} must be a valid {@code VkSamplerYcbcrRange} value
@@ -7108,7 +7162,10 @@ val VkSamplerYcbcrConversionCreateInfo = struct(Module.VULKAN, "VkSamplerYcbcrCo
"""
Expression("#STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO")..VkStructureType("sType", "the type of this structure.")
- nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
+ PointerSetter(
+ "VkExternalFormatANDROID",
+ prepend = true
+ )..nullable..opaque_const_p("pNext", "{@code NULL} or a pointer to a structure extending this structure.")
VkFormat("format", "the format of the image from which color information will be retrieved.")
VkSamplerYcbcrModelConversion("ycbcrModel", "describes the color matrix for conversion between color models.")
VkSamplerYcbcrRange("ycbcrRange", "describes whether the encoded values have headroom and foot room, or whether the encoding uses the full numerical range.")
@@ -9790,8 +9847,8 @@ val VkMemoryBarrier2 = struct(Module.VULKAN, "VkMemoryBarrier2") {
- If {@code srcAccessMask} includes #ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- If {@code srcAccessMask} includes #ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- If {@code srcAccessMask} includes #ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- - If {@code srcAccessMask} includes #ACCESS_2_TRANSFER_READ_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- - If {@code srcAccessMask} includes #ACCESS_2_TRANSFER_WRITE_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_CLEAR_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
+ - If {@code srcAccessMask} includes #ACCESS_2_TRANSFER_READ_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
+ - If {@code srcAccessMask} includes #ACCESS_2_TRANSFER_WRITE_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_CLEAR_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- If {@code srcAccessMask} includes #ACCESS_2_HOST_READ_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_HOST_BIT
- If {@code srcAccessMask} includes #ACCESS_2_HOST_WRITE_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_HOST_BIT
- If {@code srcAccessMask} includes #ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT, {@code srcStageMask} must include #PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
@@ -9844,8 +9901,8 @@ val VkMemoryBarrier2 = struct(Module.VULKAN, "VkMemoryBarrier2") {
- If {@code dstAccessMask} includes #ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- If {@code dstAccessMask} includes #ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- If {@code dstAccessMask} includes #ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- - If {@code dstAccessMask} includes #ACCESS_2_TRANSFER_READ_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- - If {@code dstAccessMask} includes #ACCESS_2_TRANSFER_WRITE_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_CLEAR_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
+ - If {@code dstAccessMask} includes #ACCESS_2_TRANSFER_READ_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
+ - If {@code dstAccessMask} includes #ACCESS_2_TRANSFER_WRITE_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_CLEAR_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- If {@code dstAccessMask} includes #ACCESS_2_HOST_READ_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_HOST_BIT
- If {@code dstAccessMask} includes #ACCESS_2_HOST_WRITE_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_HOST_BIT
- If {@code dstAccessMask} includes #ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT, {@code dstStageMask} must include #PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
@@ -9938,8 +9995,8 @@ val VkBufferMemoryBarrier2 = struct(Module.VULKAN, "VkBufferMemoryBarrier2") {
- If {@code srcAccessMask} includes #ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- If {@code srcAccessMask} includes #ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- If {@code srcAccessMask} includes #ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- - If {@code srcAccessMask} includes #ACCESS_2_TRANSFER_READ_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- - If {@code srcAccessMask} includes #ACCESS_2_TRANSFER_WRITE_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_CLEAR_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
+ - If {@code srcAccessMask} includes #ACCESS_2_TRANSFER_READ_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
+ - If {@code srcAccessMask} includes #ACCESS_2_TRANSFER_WRITE_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_CLEAR_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- If {@code srcAccessMask} includes #ACCESS_2_HOST_READ_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_HOST_BIT
- If {@code srcAccessMask} includes #ACCESS_2_HOST_WRITE_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_HOST_BIT
- If {@code srcAccessMask} includes #ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT, {@code srcStageMask} must include #PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
@@ -9992,8 +10049,8 @@ val VkBufferMemoryBarrier2 = struct(Module.VULKAN, "VkBufferMemoryBarrier2") {
- If {@code dstAccessMask} includes #ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- If {@code dstAccessMask} includes #ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- If {@code dstAccessMask} includes #ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- - If {@code dstAccessMask} includes #ACCESS_2_TRANSFER_READ_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- - If {@code dstAccessMask} includes #ACCESS_2_TRANSFER_WRITE_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_CLEAR_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
+ - If {@code dstAccessMask} includes #ACCESS_2_TRANSFER_READ_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
+ - If {@code dstAccessMask} includes #ACCESS_2_TRANSFER_WRITE_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_CLEAR_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- If {@code dstAccessMask} includes #ACCESS_2_HOST_READ_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_HOST_BIT
- If {@code dstAccessMask} includes #ACCESS_2_HOST_WRITE_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_HOST_BIT
- If {@code dstAccessMask} includes #ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT, {@code dstStageMask} must include #PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
@@ -10112,8 +10169,8 @@ val VkImageMemoryBarrier2 = struct(Module.VULKAN, "VkImageMemoryBarrier2") {
- If {@code srcAccessMask} includes #ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- If {@code srcAccessMask} includes #ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- If {@code srcAccessMask} includes #ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- - If {@code srcAccessMask} includes #ACCESS_2_TRANSFER_READ_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- - If {@code srcAccessMask} includes #ACCESS_2_TRANSFER_WRITE_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_CLEAR_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
+ - If {@code srcAccessMask} includes #ACCESS_2_TRANSFER_READ_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
+ - If {@code srcAccessMask} includes #ACCESS_2_TRANSFER_WRITE_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_CLEAR_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- If {@code srcAccessMask} includes #ACCESS_2_HOST_READ_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_HOST_BIT
- If {@code srcAccessMask} includes #ACCESS_2_HOST_WRITE_BIT, {@code srcStageMask} must include #PIPELINE_STAGE_2_HOST_BIT
- If {@code srcAccessMask} includes #ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT, {@code srcStageMask} must include #PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
@@ -10166,8 +10223,8 @@ val VkImageMemoryBarrier2 = struct(Module.VULKAN, "VkImageMemoryBarrier2") {
- If {@code dstAccessMask} includes #ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- If {@code dstAccessMask} includes #ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- If {@code dstAccessMask} includes #ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT, #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- - If {@code dstAccessMask} includes #ACCESS_2_TRANSFER_READ_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- - If {@code dstAccessMask} includes #ACCESS_2_TRANSFER_WRITE_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_CLEAR_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
+ - If {@code dstAccessMask} includes #ACCESS_2_TRANSFER_READ_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
+ - If {@code dstAccessMask} includes #ACCESS_2_TRANSFER_WRITE_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_COPY_BIT, #PIPELINE_STAGE_2_BLIT_BIT, #PIPELINE_STAGE_2_RESOLVE_BIT, #PIPELINE_STAGE_2_CLEAR_BIT, #PIPELINE_STAGE_2_ALL_TRANSFER_BIT, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, #PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
- If {@code dstAccessMask} includes #ACCESS_2_HOST_READ_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_HOST_BIT
- If {@code dstAccessMask} includes #ACCESS_2_HOST_WRITE_BIT, {@code dstStageMask} must include #PIPELINE_STAGE_2_HOST_BIT
- If {@code dstAccessMask} includes #ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT, {@code dstStageMask} must include #PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, #PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or #PIPELINE_STAGE_2_ALL_COMMANDS_BIT
@@ -10196,11 +10253,6 @@ val VkImageMemoryBarrier2 = struct(Module.VULKAN, "VkImageMemoryBarrier2") {
- - {@code subresourceRange.baseMipLevel} must be less than the {@code mipLevels} specified in ##VkImageCreateInfo when {@code image} was created
- - If {@code subresourceRange.levelCount} is not #REMAINING_MIP_LEVELS,
subresourceRange.baseMipLevel + subresourceRange.levelCount
must be less than or equal to the {@code mipLevels} specified in ##VkImageCreateInfo when {@code image} was created
- - {@code subresourceRange.baseArrayLayer} must be less than the {@code arrayLayers} specified in ##VkImageCreateInfo when {@code image} was created
- - If {@code subresourceRange.layerCount} is not #REMAINING_ARRAY_LAYERS,
subresourceRange.baseArrayLayer + subresourceRange.layerCount
must be less than or equal to the {@code arrayLayers} specified in ##VkImageCreateInfo when {@code image} was created
- - If {@code image} is non-sparse then it must be bound completely and contiguously to a single {@code VkDeviceMemory} object
- If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL then {@code image} must have been created with #IMAGE_USAGE_COLOR_ATTACHMENT_BIT
- If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL then {@code image} must have been created with #IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
- If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL then {@code image} must have been created with #IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
@@ -10215,20 +10267,35 @@ val VkImageMemoryBarrier2 = struct(Module.VULKAN, "VkImageMemoryBarrier2") {
- If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL then {@code image} must have been created with #IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
- If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL then {@code image} must have been created with at least one of #IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, #IMAGE_USAGE_SAMPLED_BIT, or #IMAGE_USAGE_INPUT_ATTACHMENT_BIT
- If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL then {@code image} must have been created with #IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
- - If the {@code synchronization2} feature is not enabled, {@code layout} must not be #IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR or #IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
+ - If the {@code synchronization2} feature is not enabled, {@code oldLayout} must not be #IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR or #IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
+ - If the {@code synchronization2} feature is not enabled, {@code newLayout} must not be #IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR or #IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
- If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_ATTACHMENT_OPTIMAL, {@code image} must have been created with #IMAGE_USAGE_COLOR_ATTACHMENT_BIT or #IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
- If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_READ_ONLY_OPTIMAL, {@code image} must have been created with at least one of #IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, #IMAGE_USAGE_SAMPLED_BIT, or #IMAGE_USAGE_INPUT_ATTACHMENT_BIT
- If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR then {@code image} must have been created with #IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR set
- - If {@code image} has a single-plane color format or is not disjoint, then the {@code aspectMask} member of {@code subresourceRange} must be #IMAGE_ASPECT_COLOR_BIT
- - If {@code image} has a multi-planar format and the image is disjoint, then the {@code aspectMask} member of {@code subresourceRange} must include either at least one of #IMAGE_ASPECT_PLANE_0_BIT, #IMAGE_ASPECT_PLANE_1_BIT, and #IMAGE_ASPECT_PLANE_2_BIT; or must include #IMAGE_ASPECT_COLOR_BIT
- - If {@code image} has a multi-planar format with only two planes, then the {@code aspectMask} member of {@code subresourceRange} must not include #IMAGE_ASPECT_PLANE_2_BIT
- - If {@code image} has a depth/stencil format with both depth and stencil and the {@code separateDepthStencilLayouts} feature is enabled, then the {@code aspectMask} member of {@code subresourceRange} must include either or both #IMAGE_ASPECT_DEPTH_BIT and #IMAGE_ASPECT_STENCIL_BIT
- - If {@code image} has a depth/stencil format with both depth and stencil and the {@code separateDepthStencilLayouts} feature is not enabled, then the {@code aspectMask} member of {@code subresourceRange} must include both #IMAGE_ASPECT_DEPTH_BIT and #IMAGE_ASPECT_STENCIL_BIT
- If {@code srcQueueFamilyIndex} is not equal to {@code dstQueueFamilyIndex}, at least one must not be a special queue family reserved for external memory ownership transfers, as described in Queue Family Ownership Transfer
- If {@code image} was created with a sharing mode of #SHARING_MODE_CONCURRENT, {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} are not equal, and one of {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} is one of the special queue family values reserved for external memory transfers, the other must be #QUEUE_FAMILY_IGNORED
- If {@code image} was created with a sharing mode of #SHARING_MODE_EXCLUSIVE, and {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} are not equal, {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} must both be valid queue families, or one of the special queue family values reserved for external memory transfers, as described in Queue Family Ownership Transfer
+ - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR then {@code image} must have been created with #IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR
+ - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR then {@code image} must have been created with #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR
+ - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR then {@code image} must have been created with #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR
+ - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR then {@code image} must have been created with #IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR
+ - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR then {@code image} must have been created with #IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR
+ - If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR then {@code image} must have been created with #IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR
- If {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, and {@code oldLayout} or {@code newLayout} is #IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT then {@code image} must have been created with either the #IMAGE_USAGE_COLOR_ATTACHMENT_BIT or #IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT usage bits, and the #IMAGE_USAGE_INPUT_ATTACHMENT_BIT or #IMAGE_USAGE_SAMPLED_BIT usage bits, and the #IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT usage bit
- If the {@code attachmentFeedbackLoopLayout} feature is not enabled, {@code newLayout} must not be #IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
+
+
+
+ - {@code subresourceRange.baseMipLevel} must be less than the {@code mipLevels} specified in ##VkImageCreateInfo when {@code image} was created
+ - If {@code subresourceRange.levelCount} is not #REMAINING_MIP_LEVELS,
subresourceRange.baseMipLevel + subresourceRange.levelCount
must be less than or equal to the {@code mipLevels} specified in ##VkImageCreateInfo when {@code image} was created
+ - {@code subresourceRange.baseArrayLayer} must be less than the {@code arrayLayers} specified in ##VkImageCreateInfo when {@code image} was created
+ - If {@code subresourceRange.layerCount} is not #REMAINING_ARRAY_LAYERS,
subresourceRange.baseArrayLayer + subresourceRange.layerCount
must be less than or equal to the {@code arrayLayers} specified in ##VkImageCreateInfo when {@code image} was created
+ - If {@code image} is non-sparse then it must be bound completely and contiguously to a single {@code VkDeviceMemory} object
+ - If {@code image} has a single-plane color format or is not disjoint, then the {@code aspectMask} member of {@code subresourceRange} must be #IMAGE_ASPECT_COLOR_BIT
+ - If {@code image} has a multi-planar format and the image is disjoint, then the {@code aspectMask} member of {@code subresourceRange} must include either at least one of #IMAGE_ASPECT_PLANE_0_BIT, #IMAGE_ASPECT_PLANE_1_BIT, and #IMAGE_ASPECT_PLANE_2_BIT; or must include #IMAGE_ASPECT_COLOR_BIT
+ - If {@code image} has a multi-planar format with only two planes, then the {@code aspectMask} member of {@code subresourceRange} must not include #IMAGE_ASPECT_PLANE_2_BIT
+ - If {@code image} has a depth/stencil format with both depth and stencil and the {@code separateDepthStencilLayouts} feature is enabled, then the {@code aspectMask} member of {@code subresourceRange} must include either or both #IMAGE_ASPECT_DEPTH_BIT and #IMAGE_ASPECT_STENCIL_BIT
+ - If {@code image} has a depth/stencil format with both depth and stencil and the {@code separateDepthStencilLayouts} feature is not enabled, then the {@code aspectMask} member of {@code subresourceRange} must include both #IMAGE_ASPECT_DEPTH_BIT and #IMAGE_ASPECT_STENCIL_BIT
- If either {@code srcStageMask} or {@code dstStageMask} includes #PIPELINE_STAGE_2_HOST_BIT, {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} must be equal
- If {@code srcStageMask} includes #PIPELINE_STAGE_2_HOST_BIT, and {@code srcQueueFamilyIndex} and {@code dstQueueFamilyIndex} define a queue family ownership transfer or {@code oldLayout} and {@code newLayout} define an image layout transition, {@code oldLayout} must be one of #IMAGE_LAYOUT_PREINITIALIZED, #IMAGE_LAYOUT_UNDEFINED, or #IMAGE_LAYOUT_GENERAL
@@ -10653,7 +10720,6 @@ val VkCopyImageInfo2 = struct(Module.VULKAN, "VkCopyImageInfo2") {
- If the {@code aspect} member of any element of {@code pRegions} includes any flag other than #IMAGE_ASPECT_STENCIL_BIT or {@code dstImage} was not created with separate stencil usage, #IMAGE_USAGE_TRANSFER_DST_BIT must have been included in the ##VkImageCreateInfo{@code ::usage} used to create {@code dstImage}
- If the {@code aspect} member of any element of {@code pRegions} includes #IMAGE_ASPECT_STENCIL_BIT, and {@code srcImage} was created with separate stencil usage, #IMAGE_USAGE_TRANSFER_SRC_BIT must have been included in the ##VkImageStencilUsageCreateInfo{@code ::stencilUsage} used to create {@code srcImage}
- If the {@code aspect} member of any element of {@code pRegions} includes #IMAGE_ASPECT_STENCIL_BIT, and {@code dstImage} was created with separate stencil usage, #IMAGE_USAGE_TRANSFER_DST_BIT must have been included in the ##VkImageStencilUsageCreateInfo{@code ::stencilUsage} used to create {@code dstImage}
- - {@code srcImage} and {@code dstImage} must have the same sample count
Valid Usage (Implicit)
@@ -10759,14 +10825,11 @@ val VkCopyBufferToImageInfo2 = struct(Module.VULKAN, "VkCopyBufferToImageInfo2")
- - If {@code dstImage} does not have either a depth/stencil or a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the format’s texel block size
- - If {@code dstImage} has a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the element size of the compatible format for the format and the {@code aspectMask} of the {@code imageSubresource} as defined in Compatible formats of planes of multi-planar formats
- If {@code dstImage} is of type #IMAGE_TYPE_1D, then for each element of {@code pRegions}, {@code imageOffset.y} must be 0 and {@code imageExtent.height} must be 1
- For each element of {@code pRegions}, {@code imageOffset.z} and
(imageExtent.depth + imageOffset.z)
must both be greater than or equal to 0 and less than or equal to the depth of the specified {@code imageSubresource} of {@code dstImage}
- If {@code dstImage} is of type #IMAGE_TYPE_1D or #IMAGE_TYPE_2D, then for each element of {@code pRegions}, {@code imageOffset.z} must be 0 and {@code imageExtent.depth} must be 1
- For each element of {@code pRegions}, {@code bufferRowLength} must be a multiple of the texel block extent width of the {@code VkFormat} of {@code dstImage}
- For each element of {@code pRegions}, {@code bufferImageHeight} must be a multiple of the texel block extent height of the {@code VkFormat} of {@code dstImage}
- - For each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the texel block size of the {@code VkFormat} of {@code dstImage}
- For each element of {@code pRegions}, {@code imageOffset.x} must be a multiple of the texel block extent width of the {@code VkFormat} of {@code dstImage}
- For each element of {@code pRegions}, {@code imageOffset.y} must be a multiple of the texel block extent height of the {@code VkFormat} of {@code dstImage}
- For each element of {@code pRegions}, {@code imageOffset.z} must be a multiple of the texel block extent depth of the {@code VkFormat} of {@code dstImage}
@@ -10778,6 +10841,12 @@ val VkCopyBufferToImageInfo2 = struct(Module.VULKAN, "VkCopyBufferToImageInfo2")
- If {@code dstImage} has a {@code VkFormat} with three planes then for each element of {@code pRegions}, {@code imageSubresource.aspectMask} must be #IMAGE_ASPECT_PLANE_0_BIT, #IMAGE_ASPECT_PLANE_1_BIT, or #IMAGE_ASPECT_PLANE_2_BIT
- If {@code dstImage} is of type #IMAGE_TYPE_3D, for each element of {@code pRegions}, {@code imageSubresource.baseArrayLayer} must be 0 and {@code imageSubresource.layerCount} must be 1
- For each element of {@code pRegions}, {@code bufferRowLength} divided by the texel block extent width and then multiplied by the texel block size of {@code dstImage} must be less than or equal to
231-1
+
+
+
+ - If {@code dstImage} does not have either a depth/stencil or a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the format’s texel block size
+ - If {@code dstImage} has a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the element size of the compatible format for the format and the {@code aspectMask} of the {@code imageSubresource} as defined in Compatible formats of planes of multi-planar formats
+ - For each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the texel block size of the {@code VkFormat} of {@code dstImage}
- If {@code dstImage} has a depth/stencil format, the {@code bufferOffset} member of any element of {@code pRegions} must be a multiple of 4
@@ -10839,14 +10908,11 @@ val VkCopyImageToBufferInfo2 = struct(Module.VULKAN, "VkCopyImageToBufferInfo2")
- - If {@code srcImage} does not have either a depth/stencil or a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the format’s texel block size
- - If {@code srcImage} has a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the element size of the compatible format for the format and the {@code aspectMask} of the {@code imageSubresource} as defined in Compatible formats of planes of multi-planar formats
- If {@code srcImage} is of type #IMAGE_TYPE_1D, then for each element of {@code pRegions}, {@code imageOffset.y} must be 0 and {@code imageExtent.height} must be 1
- For each element of {@code pRegions}, {@code imageOffset.z} and
(imageExtent.depth + imageOffset.z)
must both be greater than or equal to 0 and less than or equal to the depth of the specified {@code imageSubresource} of {@code srcImage}
- If {@code srcImage} is of type #IMAGE_TYPE_1D or #IMAGE_TYPE_2D, then for each element of {@code pRegions}, {@code imageOffset.z} must be 0 and {@code imageExtent.depth} must be 1
- For each element of {@code pRegions}, {@code bufferRowLength} must be a multiple of the texel block extent width of the {@code VkFormat} of {@code srcImage}
- For each element of {@code pRegions}, {@code bufferImageHeight} must be a multiple of the texel block extent height of the {@code VkFormat} of {@code srcImage}
- - For each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the texel block size of the {@code VkFormat} of {@code srcImage}
- For each element of {@code pRegions}, {@code imageOffset.x} must be a multiple of the texel block extent width of the {@code VkFormat} of {@code srcImage}
- For each element of {@code pRegions}, {@code imageOffset.y} must be a multiple of the texel block extent height of the {@code VkFormat} of {@code srcImage}
- For each element of {@code pRegions}, {@code imageOffset.z} must be a multiple of the texel block extent depth of the {@code VkFormat} of {@code srcImage}
@@ -10858,6 +10924,12 @@ val VkCopyImageToBufferInfo2 = struct(Module.VULKAN, "VkCopyImageToBufferInfo2")
- If {@code srcImage} has a {@code VkFormat} with three planes then for each element of {@code pRegions}, {@code imageSubresource.aspectMask} must be #IMAGE_ASPECT_PLANE_0_BIT, #IMAGE_ASPECT_PLANE_1_BIT, or #IMAGE_ASPECT_PLANE_2_BIT
- If {@code srcImage} is of type #IMAGE_TYPE_3D, for each element of {@code pRegions}, {@code imageSubresource.baseArrayLayer} must be 0 and {@code imageSubresource.layerCount} must be 1
- For each element of {@code pRegions}, {@code bufferRowLength} divided by the texel block extent width and then multiplied by the texel block size of {@code srcImage} must be less than or equal to
231-1
+
+
+
+ - If {@code srcImage} does not have either a depth/stencil or a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the format’s texel block size
+ - If {@code srcImage} has a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the element size of the compatible format for the format and the {@code aspectMask} of the {@code imageSubresource} as defined in Compatible formats of planes of multi-planar formats
+ - For each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the texel block size of the {@code VkFormat} of {@code srcImage}
- If {@code srcImage} has a depth/stencil format, the {@code bufferOffset} member of any element of {@code pRegions} must be a multiple of 4
@@ -11401,6 +11473,8 @@ val VkRenderingInfo = struct(Module.VULKAN, "VkRenderingInfo") {
- If multisampled-render-to-single-sampled is enabled, then all attachments referenced by {@code imageView} members of {@code pDepthAttachment}, {@code pStencilAttachment}, and elements of {@code pColorAttachments} that are not #NULL_HANDLE and have a sample count of #SAMPLE_COUNT_1_BIT must have been created with #IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT in their ##VkImageCreateInfo{@code ::flags}
- If the {@code pNext} chain does not contain ##VkDeviceGroupRenderPassBeginInfo or its {@code deviceRenderAreaCount} member is equal to 0, {@code renderArea.offset.x} must be greater than or equal to 0
- If the {@code pNext} chain does not contain ##VkDeviceGroupRenderPassBeginInfo or its {@code deviceRenderAreaCount} member is equal to 0, {@code renderArea.offset.y} must be greater than or equal to 0
+ - If the {@code pNext} chain does not contain ##VkDeviceGroupRenderPassBeginInfo or its {@code deviceRenderAreaCount} member is equal to 0, the sum of {@code renderArea.extent.width} and {@code renderArea.offset.x} must be less than or equal to {@code maxFramebufferWidth}
+ - If the {@code pNext} chain does not contain ##VkDeviceGroupRenderPassBeginInfo or its {@code deviceRenderAreaCount} member is equal to 0, the sum of {@code renderArea.extent.width} and {@code renderArea.offset.y} must be less than or equal to {@code maxFramebufferHeight}
- If the {@code pNext} chain does not contain ##VkDeviceGroupRenderPassBeginInfo or its {@code deviceRenderAreaCount} member is equal to 0, the width of the {@code imageView} member of any element of {@code pColorAttachments}, {@code pDepthAttachment}, or {@code pStencilAttachment} that is not #NULL_HANDLE must be greater than or equal to
renderArea.offset.x + renderArea.extent.width
- If the {@code pNext} chain does not contain ##VkDeviceGroupRenderPassBeginInfo or its {@code deviceRenderAreaCount} member is equal to 0, the height of the {@code imageView} member of any element of {@code pColorAttachments}, {@code pDepthAttachment}, or {@code pStencilAttachment} that is not #NULL_HANDLE must be greater than or equal to
renderArea.offset.y + renderArea.extent.height
- If the {@code pNext} chain contains ##VkDeviceGroupRenderPassBeginInfo, the width of the {@code imageView} member of any element of {@code pColorAttachments}, {@code pDepthAttachment}, or {@code pStencilAttachment} that is not #NULL_HANDLE must be greater than or equal to the sum of the {@code offset.x} and {@code extent.width} members of each element of {@code pDeviceRenderAreas}
@@ -11445,6 +11519,7 @@ val VkRenderingInfo = struct(Module.VULKAN, "VkRenderingInfo") {
- If the {@code pNext} chain contains a ##VkDeviceGroupRenderPassBeginInfo structure, its {@code deviceRenderAreaCount} member is not 0, and the {@code imageView} member of a ##VkRenderingFragmentShadingRateAttachmentInfoKHR structure included in the {@code pNext} chain is not #NULL_HANDLE, {@code imageView} must have a width greater than or equal to
ceil((pDeviceRenderAreasx+pDeviceRenderAreaswidth) / shadingRateAttachmentTexelSizewidth)
for each element of {@code pDeviceRenderAreas}
- If the {@code pNext} chain does not contain ##VkDeviceGroupRenderPassBeginInfo or its {@code deviceRenderAreaCount} member is equal to 0 and the {@code imageView} member of a ##VkRenderingFragmentShadingRateAttachmentInfoKHR structure included in the {@code pNext} chain is not #NULL_HANDLE, {@code imageView} must have a height greater than or equal to
ceil((renderAreay+renderAreaheight) / shadingRateAttachmentTexelSizeheight)
- If the {@code pNext} chain contains a ##VkDeviceGroupRenderPassBeginInfo structure, its {@code deviceRenderAreaCount} member is not 0, and the {@code imageView} member of a ##VkRenderingFragmentShadingRateAttachmentInfoKHR structure included in the {@code pNext} chain is not #NULL_HANDLE, {@code imageView} must have a height greater than or equal to
ceil((pDeviceRenderAreasy+pDeviceRenderAreasheight) / shadingRateAttachmentTexelSizeheight)
for each element of {@code pDeviceRenderAreas}
+ - {@code layerCount} must be less than or equal to {@code maxFramebufferLayers}
- If the {@code imageView} member of a ##VkRenderingFragmentShadingRateAttachmentInfoKHR structure included in the {@code pNext} chain is not #NULL_HANDLE, and {@code viewMask} is 0, {@code imageView} must have a {@code layerCount} that is either equal to 1 or greater than or equal to {@code layerCount}
- If the {@code imageView} member of a ##VkRenderingFragmentShadingRateAttachmentInfoKHR structure included in the {@code pNext} chain is not #NULL_HANDLE, and {@code viewMask} is not 0, {@code imageView} must have a {@code layerCount} that either equal to 1 or greater than or equal to the index of the most significant bit in {@code viewMask}
- If the {@code imageView} member of a ##VkRenderingFragmentShadingRateAttachmentInfoKHR structure included in the {@code pNext} chain is not #NULL_HANDLE, it must not be equal to the {@code imageView} or {@code resolveImageView} member of {@code pDepthAttachment}, {@code pStencilAttachment}, or any element of {@code pColorAttachments}
@@ -11772,6 +11847,7 @@ val VkDeviceImageMemoryRequirements = struct(Module.VULKAN, "VkDeviceImageMemory
- The {@code pCreateInfo}{@code ::pNext} chain must not contain a ##VkImageSwapchainCreateInfoKHR structure
- The {@code pCreateInfo}{@code ::pNext} chain must not contain a ##VkImageDrmFormatModifierExplicitCreateInfoEXT structure
+ - Applications also must not call #GetDeviceImageMemoryRequirements() with a ##VkImageCreateInfo whose {@code pNext} chain includes a ##VkExternalFormatANDROID structure with non-zero {@code externalFormat}
- If {@code pCreateInfo}{@code ::format} specifies a multi-planar format and {@code pCreateInfo}{@code ::flags} has #IMAGE_CREATE_DISJOINT_BIT set then {@code planeAspect} must not be #IMAGE_ASPECT_NONE_KHR
- If {@code pCreateInfo}{@code ::flags} has #IMAGE_CREATE_DISJOINT_BIT set and if the {@code pCreateInfo}{@code ::tiling} is #IMAGE_TILING_LINEAR or #IMAGE_TILING_OPTIMAL, then {@code planeAspect} must be a single valid format plane for the image (that is, for a two-plane image {@code planeAspect} must be #IMAGE_ASPECT_PLANE_0_BIT or #IMAGE_ASPECT_PLANE_1_BIT, and for a three-plane image {@code planeAspect} must be #IMAGE_ASPECT_PLANE_0_BIT, #IMAGE_ASPECT_PLANE_1_BIT or #IMAGE_ASPECT_PLANE_2_BIT)
- If {@code pCreateInfo}{@code ::tiling} is #IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then {@code planeAspect} must be a single valid memory plane for the image (that is, {@code aspectMask} must specify a plane index that is less than the ##VkDrmFormatModifierPropertiesEXT{@code ::drmFormatModifierPlaneCount} associated with the image’s {@code format} and ##VkImageDrmFormatModifierPropertiesEXT{@code ::drmFormatModifier})
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/ANDROID_external_memory_android_hardware_buffer.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/ANDROID_external_memory_android_hardware_buffer.kt
new file mode 100644
index 0000000000..2bae18836e
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/ANDROID_external_memory_android_hardware_buffer.kt
@@ -0,0 +1,199 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package vulkan.templates
+
+import org.lwjgl.generator.*
+import vulkan.*
+
+val ANDROID_external_memory_android_hardware_buffer = "ANDROIDExternalMemoryAndroidHardwareBuffer".nativeClassVK("ANDROID_external_memory_android_hardware_buffer", type = "device", postfix = "ANDROID") {
+ documentation =
+ """
+ This extension enables an application to import Android {@code AHardwareBuffer} objects created outside of the Vulkan device into Vulkan memory objects, where they can be bound to images and buffers. It also allows exporting an {@code AHardwareBuffer} from a Vulkan memory object for symmetry with other operating systems. But since not all {@code AHardwareBuffer} usages and formats have Vulkan equivalents, exporting from Vulkan provides strictly less functionality than creating the {@code AHardwareBuffer} externally and importing it.
+
+ Some {@code AHardwareBuffer} images have implementation-defined external formats that may not correspond to Vulkan formats. Sampler Y′CBCR conversion can be used to sample from these images and convert them to a known color space.
+
+ VK_ANDROID_external_memory_android_hardware_buffer
+
+ - Name String
+ - {@code VK_ANDROID_external_memory_android_hardware_buffer}
+
+ - Extension Type
+ - Device extension
+
+ - Registered Extension Number
+ - 130
+
+ - Revision
+ - 5
+
+ - Extension and Version Dependencies
+
+ - Requires support for Vulkan 1.0
+ - Requires {@link KHRSamplerYcbcrConversion VK_KHR_sampler_ycbcr_conversion} to be enabled for any device-level functionality
+ - Requires {@link KHRExternalMemory VK_KHR_external_memory} to be enabled for any device-level functionality
+ - Requires {@link EXTQueueFamilyForeign VK_EXT_queue_family_foreign} to be enabled for any device-level functionality
+ - Requires {@link KHRDedicatedAllocation VK_KHR_dedicated_allocation} to be enabled for any device-level functionality
+
+
+ - Contact
+
+
+
+ Other Extension Metadata
+
+ - Last Modified Date
+ - 2021-09-30
+
+ - IP Status
+ - No known IP claims.
+
+ - Contributors
+
+ - Ray Smith, ARM
+ - Chad Versace, Google
+ - Jesse Hall, Google
+ - Tobias Hector, Imagination
+ - James Jones, NVIDIA
+ - Tony Zlatinski, NVIDIA
+ - Matthew Netsch, Qualcomm
+ - Andrew Garrard, Samsung
+
+
+ """
+
+ IntConstant(
+ "The extension specification version.",
+
+ "ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION".."5"
+ )
+
+ StringConstant(
+ "The extension name.",
+
+ "ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME".."VK_ANDROID_external_memory_android_hardware_buffer"
+ )
+
+ EnumConstant(
+ "Extends {@code VkExternalMemoryHandleTypeFlagBits}.",
+
+ "EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID".enum(0x00000400)
+ )
+
+ EnumConstant(
+ "Extends {@code VkStructureType}.",
+
+ "STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID".."1000129000",
+ "STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID".."1000129001",
+ "STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID".."1000129002",
+ "STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID".."1000129003",
+ "STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID".."1000129004",
+ "STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID".."1000129005"
+ )
+
+ EnumConstant(
+ "Extends {@code VkStructureType}.",
+
+ "STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID".."1000129006"
+ )
+
+ VkResult(
+ "GetAndroidHardwareBufferPropertiesANDROID",
+ """
+ Get Properties of External Memory Android Hardware Buffers.
+
+ C Specification
+ To determine the memory parameters to use when importing an Android hardware buffer, call:
+
+
+VkResult vkGetAndroidHardwareBufferPropertiesANDROID(
+ VkDevice device,
+ const struct AHardwareBuffer* buffer,
+ VkAndroidHardwareBufferPropertiesANDROID* pProperties);
+
+ Valid Usage
+
+ - {@code buffer} must be a valid Android hardware buffer object with at least one of the {@code AHARDWAREBUFFER_USAGE_GPU_*} flags in its {@code AHardwareBuffer_Desc}{@code ::usage}
+
+
+ Valid Usage (Implicit)
+
+ - {@code device} must be a valid {@code VkDevice} handle
+ - {@code buffer} must be a valid pointer to a valid {@code AHardwareBuffer} value
+ - {@code pProperties} must be a valid pointer to a ##VkAndroidHardwareBufferPropertiesANDROID structure
+
+
+ Return Codes
+
+ - On success, this command returns
+
+
+ - On failure, this command returns
+
+ - #ERROR_OUT_OF_HOST_MEMORY
+ - #ERROR_INVALID_EXTERNAL_HANDLE_KHR
+
+
+
+ See Also
+ ##VkAndroidHardwareBufferPropertiesANDROID
+ """,
+
+ VkDevice("device", "the logical device that will be importing {@code buffer}."),
+ AHardwareBuffer.const.p("buffer", "the Android hardware buffer which will be imported."),
+ VkAndroidHardwareBufferPropertiesANDROID.p("pProperties", "a pointer to a ##VkAndroidHardwareBufferPropertiesANDROID structure in which the properties of {@code buffer} are returned.")
+ )
+
+ VkResult(
+ "GetMemoryAndroidHardwareBufferANDROID",
+ """
+ Get an Android hardware buffer for a memory object.
+
+ C Specification
+ To export an Android hardware buffer referencing the payload of a Vulkan device memory object, call:
+
+
+VkResult vkGetMemoryAndroidHardwareBufferANDROID(
+ VkDevice device,
+ const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
+ struct AHardwareBuffer** pBuffer);
+
+ Description
+ Each call to {@code vkGetMemoryAndroidHardwareBufferANDROID} must return an Android hardware buffer with a new reference acquired in addition to the reference held by the {@code VkDeviceMemory}. To avoid leaking resources, the application must release the reference by calling {@code AHardwareBuffer_release} when it is no longer needed. When called with the same handle in ##VkMemoryGetAndroidHardwareBufferInfoANDROID{@code ::memory}, {@code vkGetMemoryAndroidHardwareBufferANDROID} must return the same Android hardware buffer object. If the device memory was created by importing an Android hardware buffer, {@code vkGetMemoryAndroidHardwareBufferANDROID} must return that same Android hardware buffer object.
+
+ Valid Usage (Implicit)
+
+ - {@code device} must be a valid {@code VkDevice} handle
+ - {@code pInfo} must be a valid pointer to a valid ##VkMemoryGetAndroidHardwareBufferInfoANDROID structure
+ - {@code pBuffer} must be a valid pointer to a valid pointer to an {@code AHardwareBuffer} value
+
+
+ Return Codes
+
+ - On success, this command returns
+
+
+ - On failure, this command returns
+
+ - #ERROR_TOO_MANY_OBJECTS
+ - #ERROR_OUT_OF_HOST_MEMORY
+
+
+
+ See Also
+ ##VkMemoryGetAndroidHardwareBufferInfoANDROID
+ """,
+
+ VkDevice("device", "the logical device that created the device memory being exported."),
+ VkMemoryGetAndroidHardwareBufferInfoANDROID.const.p("pInfo", "a pointer to a ##VkMemoryGetAndroidHardwareBufferInfoANDROID structure containing parameters of the export operation."),
+ Check(1)..AHardwareBuffer.p.p("pBuffer", "will return an Android hardware buffer referencing the payload of the device memory object.")
+ )
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_directfb_surface.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_directfb_surface.kt
new file mode 100644
index 0000000000..8f568ac34b
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_directfb_surface.kt
@@ -0,0 +1,155 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package vulkan.templates
+
+import org.lwjgl.generator.*
+import vulkan.*
+
+val EXT_directfb_surface = "EXTDirectfbSurface".nativeClassVK("EXT_directfb_surface", type = "instance", postfix = "EXT") {
+ documentation =
+ """
+ The {@code VK_EXT_directfb_surface} extension is an instance extension. It provides a mechanism to create a {@code VkSurfaceKHR} object (defined by the {@link KHRSurface VK_KHR_surface} extension) that refers to a DirectFB {@code IDirectFBSurface}, as well as a query to determine support for rendering via DirectFB.
+
+ VK_EXT_directfb_surface
+
+ - Name String
+ - {@code VK_EXT_directfb_surface}
+
+ - Extension Type
+ - Instance extension
+
+ - Registered Extension Number
+ - 347
+
+ - Revision
+ - 1
+
+ - Extension and Version Dependencies
+
+ - Requires support for Vulkan 1.0
+ - Requires {@link KHRSurface VK_KHR_surface} to be enabled
+
+
+ - Contact
+
+
+
+ Other Extension Metadata
+
+ - Last Modified Date
+ - 2020-06-16
+
+ - IP Status
+ - No known IP claims.
+
+ - Contributors
+
+
+ """
+
+ IntConstant(
+ "The extension specification version.",
+
+ "EXT_DIRECTFB_SURFACE_SPEC_VERSION".."1"
+ )
+
+ StringConstant(
+ "The extension name.",
+
+ "EXT_DIRECTFB_SURFACE_EXTENSION_NAME".."VK_EXT_directfb_surface"
+ )
+
+ EnumConstant(
+ "Extends {@code VkStructureType}.",
+
+ "STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT".."1000346000"
+ )
+
+ VkResult(
+ "CreateDirectFBSurfaceEXT",
+ """
+ Create a {@code VkSurfaceKHR} object for a DirectFB surface.
+
+ C Specification
+ To create a {@code VkSurfaceKHR} object for a DirectFB surface, call:
+
+
+VkResult vkCreateDirectFBSurfaceEXT(
+ VkInstance instance,
+ const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+ Valid Usage (Implicit)
+
+ - {@code instance} must be a valid {@code VkInstance} handle
+ - {@code pCreateInfo} must be a valid pointer to a valid ##VkDirectFBSurfaceCreateInfoEXT structure
+ - If {@code pAllocator} is not {@code NULL}, {@code pAllocator} must be a valid pointer to a valid ##VkAllocationCallbacks structure
+ - {@code pSurface} must be a valid pointer to a {@code VkSurfaceKHR} handle
+
+
+ Return Codes
+
+ - On success, this command returns
+
+
+ - On failure, this command returns
+
+ - #ERROR_OUT_OF_HOST_MEMORY
+ - #ERROR_OUT_OF_DEVICE_MEMORY
+
+
+
+ See Also
+ ##VkAllocationCallbacks, ##VkDirectFBSurfaceCreateInfoEXT
+ """,
+
+ VkInstance("instance", "the instance to associate the surface with."),
+ VkDirectFBSurfaceCreateInfoEXT.const.p("pCreateInfo", "a pointer to a ##VkDirectFBSurfaceCreateInfoEXT structure containing parameters affecting the creation of the surface object."),
+ nullable..VkAllocationCallbacks.const.p("pAllocator", "the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see Memory Allocation)."),
+ Check(1)..VkSurfaceKHR.p("pSurface", "a pointer to a {@code VkSurfaceKHR} handle in which the created surface object is returned.")
+ )
+
+ VkBool32(
+ "GetPhysicalDeviceDirectFBPresentationSupportEXT",
+ """
+ Query physical device for presentation with DirectFB.
+
+ C Specification
+ To determine whether a queue family of a physical device supports presentation with DirectFB library, call:
+
+
+VkBool32 vkGetPhysicalDeviceDirectFBPresentationSupportEXT(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ IDirectFB* dfb);
+
+ Description
+ This platform-specific function can be called prior to creating a surface.
+
+ Valid Usage
+
+ - {@code queueFamilyIndex} must be less than {@code pQueueFamilyPropertyCount} returned by {@code vkGetPhysicalDeviceQueueFamilyProperties} for the given {@code physicalDevice}
+
+
+ Valid Usage (Implicit)
+
+ - {@code physicalDevice} must be a valid {@code VkPhysicalDevice} handle
+ - {@code dfb} must be a valid pointer to an {@code IDirectFB} value
+
+ """,
+
+ VkPhysicalDevice("physicalDevice", "the physical device."),
+ uint32_t("queueFamilyIndex", "the queue family index."),
+ IDirectFB.p("dfb", "a pointer to the {@code IDirectFB} main interface of DirectFB.")
+ )
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_extended_dynamic_state3.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_extended_dynamic_state3.kt
index 150c1e6b5e..3e826fef3e 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_extended_dynamic_state3.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_extended_dynamic_state3.kt
@@ -1305,7 +1305,7 @@ val EXT_extended_dynamic_state3 = "EXTExtendedDynamicState3".nativeClassVK("EXT_
uint32_t coverageToColorLocation);
Description
- This command sets the {@code coverageToColorLocation} state for subsequent drawing commands when the graphics pipeline is created with #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV set in ##VkPipelineDynamicStateCreateInfo{@code ::pDynamicStates}. Otherwise, this state is specified by the ##VkPipelineSampleLocationsStateCreateInfoEXT{@code ::coverageToColorLocation} value used to create the currently active pipeline.
+ This command sets the {@code coverageToColorLocation} state for subsequent drawing commands when the graphics pipeline is created with #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV set in ##VkPipelineDynamicStateCreateInfo{@code ::pDynamicStates}. Otherwise, this state is specified by the ##VkPipelineCoverageToColorStateCreateInfoNV{@code ::coverageToColorLocation} value used to create the currently active pipeline.
Valid Usage
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_image_compression_control.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_image_compression_control.kt
index c702f219ce..eec3c764f9 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_image_compression_control.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_image_compression_control.kt
@@ -188,9 +188,14 @@ val EXT_image_compression_control = "EXTImageCompressionControl".nativeClassVK("
Description
{@code vkGetImageSubresourceLayout2EXT} behaves similarly to #GetImageSubresourceLayout(), with the ability to specify extended inputs via chained input structures, and to return extended information via chained output structures.
+ It is legal to call {@code vkGetImageSubresourceLayout2EXT} with a {@code image} created with {@code tiling} equal to #IMAGE_TILING_OPTIMAL, but the members of ##VkImageSubresource2EXT{@code ::imageSubresource} will have undefined values in this case.
+
+ Note
+ Structures chained from ##VkImageSubresource2EXT{@code ::pNext} will also be updated when {@code tiling} is equal to #IMAGE_TILING_OPTIMAL.
+
+
Valid Usage
- - {@code image} must have been created with {@code tiling} equal to #IMAGE_TILING_LINEAR or #IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
- The {@code aspectMask} member of {@code pSubresource} must only have a single bit set
- The {@code mipLevel} member of {@code pSubresource} must be less than the {@code mipLevels} specified in ##VkImageCreateInfo when {@code image} was created
- The {@code arrayLayer} member of {@code pSubresource} must be less than the {@code arrayLayers} specified in ##VkImageCreateInfo when {@code image} was created
@@ -200,6 +205,7 @@ val EXT_image_compression_control = "EXTImageCompressionControl".nativeClassVK("
- If {@code format} does not contain a stencil or depth component, the {@code aspectMask} member of {@code pSubresource} must not contain #IMAGE_ASPECT_DEPTH_BIT or #IMAGE_ASPECT_STENCIL_BIT
- If the {@code tiling} of the {@code image} is #IMAGE_TILING_LINEAR and its {@code format} is a multi-planar format with two planes, the {@code aspectMask} member of {@code pSubresource} must be #IMAGE_ASPECT_PLANE_0_BIT or #IMAGE_ASPECT_PLANE_1_BIT
- If the {@code tiling} of the {@code image} is #IMAGE_TILING_LINEAR and its {@code format} is a multi-planar format with three planes, the {@code aspectMask} member of {@code pSubresource} must be #IMAGE_ASPECT_PLANE_0_BIT, #IMAGE_ASPECT_PLANE_1_BIT or #IMAGE_ASPECT_PLANE_2_BIT
+ - If {@code image} was created with the #EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID external memory handle type, then {@code image} must be bound to memory
- If the {@code tiling} of the {@code image} is #IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then the {@code aspectMask} member of {@code pSubresource} must be
VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT
and the index i must be less than the ##VkDrmFormatModifierPropertiesEXT{@code ::drmFormatModifierPlaneCount} associated with the image’s {@code format} and ##VkImageDrmFormatModifierPropertiesEXT{@code ::drmFormatModifier}
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_mesh_shader.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_mesh_shader.kt
index b7ff076e24..f7fbca5534 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_mesh_shader.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_mesh_shader.kt
@@ -184,7 +184,6 @@ val EXT_mesh_shader = "EXTMeshShader".nativeClassVK("EXT_mesh_shader", type = "d
- If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
- A valid pipeline must be bound to the pipeline bind point used by this command
- - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
- There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -223,9 +222,27 @@ val EXT_mesh_shader = "EXTMeshShader".nativeClassVK("EXT_mesh_shader", type = "d
- If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be #STENCIL_OP_KEEP
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT dynamic state enabled then #CmdSetViewport() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR dynamic state enabled then #CmdSetScissor() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then #CmdSetLineWidth() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then #CmdSetDepthBias() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then #CmdSetBlendConstants() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then #CmdSetDepthBounds() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then #CmdSetStencilCompareMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then #CmdSetStencilWriteMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then #CmdSetStencilReference() must have been called in the current command buffer prior to this drawing command
- If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to ##VkPhysicalDeviceMultiviewProperties{@code ::maxMultiviewInstanceIndex}
- If the bound graphics pipeline was created with ##VkPipelineSampleLocationsStateCreateInfoEXT{@code ::sampleLocationsEnable} set to #TRUE and the current subpass has a depth/stencil attachment, then that attachment must have been created with the #IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled then #CmdSetSampleLocationsEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CULL_MODE dynamic state enabled then #CmdSetCullMode() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_FRONT_FACE dynamic state enabled then #CmdSetFrontFace() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then #CmdSetPrimitiveTopology() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then #CmdSetDepthTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_WRITE_ENABLE dynamic state enabled then #CmdSetDepthWriteEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_COMPARE_OP dynamic state enabled then #CmdSetDepthCompareOp() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE dynamic state enabled then #CmdSetDepthBoundsTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_TEST_ENABLE dynamic state enabled then #CmdSetStencilTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_OP dynamic state enabled then #CmdSetStencilOp() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, then #CmdSetViewportWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::scissorCount} of the pipeline
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, then #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::viewportCount} of the pipeline
- If the bound graphics pipeline state was created with both the #DYNAMIC_STATE_SCISSOR_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled then both #CmdSetViewportWithCount() and #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -253,7 +270,7 @@ val EXT_mesh_shader = "EXTMeshShader".nativeClassVK("EXT_mesh_shader", type = "d
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::colorAttachmentCount} greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} equal to #NULL_HANDLE must have the corresponding element of ##VkPipelineRenderingCreateInfo{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to #FORMAT_UNDEFINED
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then #CmdSetColorWriteEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the ##VkPipelineColorBlendStateCreateInfo{@code ::attachmentCount} of the currently bound graphics pipeline
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command for each discard rectangle in ##VkPipelineDiscardRectangleStateCreateInfoEXT{@code ::discardRectangleCount}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to #FORMAT_UNDEFINED
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
@@ -269,37 +286,38 @@ val EXT_mesh_shader = "EXTMeshShader".nativeClassVK("EXT_mesh_shader", type = "d
- If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline must have been created with a ##VkGraphicsPipelineCreateInfo{@code ::renderPass} equal to #NULL_HANDLE
- If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, rasterization discard must not be enabled
- If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, the bound graphics pipeline must not have been created with a non-zero value in ##VkPipelineRasterizationStateStreamCreateInfoEXT{@code ::rasterizationStream}
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_EXT dynamic state enabled then #CmdSetLineStippleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV dynamic state enabled then #CmdSetRepresentativeFragmentTestEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT state enabled and the last call to #CmdSetColorBlendEnableEXT() set {@code pColorBlendEnables} for any attachment to #TRUE, then for those attachments in the subpass the corresponding image view’s format features must contain #FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to #CmdSetRasterizationSamplesEXT() must follow the rules for a zero-attachment subpass
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the {@code samples} parameter in the last call to #CmdSetSampleMaskEXT() must be greater or equal to the ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -319,7 +337,7 @@ val EXT_mesh_shader = "EXTMeshShader".nativeClassVK("EXT_mesh_shader", type = "d
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to #CmdSetCoverageModulationTableEnableNV() set {@code coverageModulationTableEnable} to #TRUE, then the {@code coverageModulationTableCount} parameter in the last call to #CmdSetCoverageModulationTableNV() must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
- If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
- If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by #GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportSwizzleStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportSwizzleNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
@@ -330,6 +348,14 @@ val EXT_mesh_shader = "EXTMeshShader".nativeClassVK("EXT_mesh_shader", type = "d
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_DEFAULT_EXT, then the {@code stippledRectangularLines} feature must be enabled and ##VkPhysicalDeviceLimits{@code ::strictLines} must be VK_TRUE
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to #CmdSetConservativeRasterizationModeEXT() must be #CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
- If the currently bound pipeline was created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT, then Mesh Shader Queries must not be active
+ - If dynamic state was inherited from ##VkCommandBufferInheritanceViewportScissorInfoNV, it must be set in the current command buffer prior to this drawing command
+
+
+
+ - The bound graphics pipeline must not have been created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT
+ - Transform Feedback Queries must not be active
+ - Primitives Generated Queries must not be active
+ - The {@code pipelineStatistics} member used to create any active Pipeline Statistics Query must not contain #QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT, #QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT, #QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT, #QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT, #QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT, #QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT, #QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT, #QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT, or #QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT
@@ -416,7 +442,6 @@ val EXT_mesh_shader = "EXTMeshShader".nativeClassVK("EXT_mesh_shader", type = "d
- If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
- A valid pipeline must be bound to the pipeline bind point used by this command
- - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
- There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -455,9 +480,27 @@ val EXT_mesh_shader = "EXTMeshShader".nativeClassVK("EXT_mesh_shader", type = "d
- If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be #STENCIL_OP_KEEP
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT dynamic state enabled then #CmdSetViewport() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR dynamic state enabled then #CmdSetScissor() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then #CmdSetLineWidth() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then #CmdSetDepthBias() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then #CmdSetBlendConstants() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then #CmdSetDepthBounds() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then #CmdSetStencilCompareMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then #CmdSetStencilWriteMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then #CmdSetStencilReference() must have been called in the current command buffer prior to this drawing command
- If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to ##VkPhysicalDeviceMultiviewProperties{@code ::maxMultiviewInstanceIndex}
- If the bound graphics pipeline was created with ##VkPipelineSampleLocationsStateCreateInfoEXT{@code ::sampleLocationsEnable} set to #TRUE and the current subpass has a depth/stencil attachment, then that attachment must have been created with the #IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled then #CmdSetSampleLocationsEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CULL_MODE dynamic state enabled then #CmdSetCullMode() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_FRONT_FACE dynamic state enabled then #CmdSetFrontFace() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then #CmdSetPrimitiveTopology() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then #CmdSetDepthTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_WRITE_ENABLE dynamic state enabled then #CmdSetDepthWriteEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_COMPARE_OP dynamic state enabled then #CmdSetDepthCompareOp() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE dynamic state enabled then #CmdSetDepthBoundsTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_TEST_ENABLE dynamic state enabled then #CmdSetStencilTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_OP dynamic state enabled then #CmdSetStencilOp() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, then #CmdSetViewportWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::scissorCount} of the pipeline
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, then #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::viewportCount} of the pipeline
- If the bound graphics pipeline state was created with both the #DYNAMIC_STATE_SCISSOR_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled then both #CmdSetViewportWithCount() and #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -485,7 +528,7 @@ val EXT_mesh_shader = "EXTMeshShader".nativeClassVK("EXT_mesh_shader", type = "d
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::colorAttachmentCount} greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} equal to #NULL_HANDLE must have the corresponding element of ##VkPipelineRenderingCreateInfo{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to #FORMAT_UNDEFINED
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then #CmdSetColorWriteEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the ##VkPipelineColorBlendStateCreateInfo{@code ::attachmentCount} of the currently bound graphics pipeline
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command for each discard rectangle in ##VkPipelineDiscardRectangleStateCreateInfoEXT{@code ::discardRectangleCount}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to #FORMAT_UNDEFINED
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
@@ -501,37 +544,38 @@ val EXT_mesh_shader = "EXTMeshShader".nativeClassVK("EXT_mesh_shader", type = "d
- If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline must have been created with a ##VkGraphicsPipelineCreateInfo{@code ::renderPass} equal to #NULL_HANDLE
- If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, rasterization discard must not be enabled
- If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, the bound graphics pipeline must not have been created with a non-zero value in ##VkPipelineRasterizationStateStreamCreateInfoEXT{@code ::rasterizationStream}
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_EXT dynamic state enabled then #CmdSetLineStippleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV dynamic state enabled then #CmdSetRepresentativeFragmentTestEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT state enabled and the last call to #CmdSetColorBlendEnableEXT() set {@code pColorBlendEnables} for any attachment to #TRUE, then for those attachments in the subpass the corresponding image view’s format features must contain #FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to #CmdSetRasterizationSamplesEXT() must follow the rules for a zero-attachment subpass
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the {@code samples} parameter in the last call to #CmdSetSampleMaskEXT() must be greater or equal to the ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -551,7 +595,7 @@ val EXT_mesh_shader = "EXTMeshShader".nativeClassVK("EXT_mesh_shader", type = "d
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to #CmdSetCoverageModulationTableEnableNV() set {@code coverageModulationTableEnable} to #TRUE, then the {@code coverageModulationTableCount} parameter in the last call to #CmdSetCoverageModulationTableNV() must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
- If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
- If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by #GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportSwizzleStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportSwizzleNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
@@ -562,6 +606,14 @@ val EXT_mesh_shader = "EXTMeshShader".nativeClassVK("EXT_mesh_shader", type = "d
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_DEFAULT_EXT, then the {@code stippledRectangularLines} feature must be enabled and ##VkPhysicalDeviceLimits{@code ::strictLines} must be VK_TRUE
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to #CmdSetConservativeRasterizationModeEXT() must be #CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
- If the currently bound pipeline was created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT, then Mesh Shader Queries must not be active
+ - If dynamic state was inherited from ##VkCommandBufferInheritanceViewportScissorInfoNV, it must be set in the current command buffer prior to this drawing command
+
+
+
+ - The bound graphics pipeline must not have been created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT
+ - Transform Feedback Queries must not be active
+ - Primitives Generated Queries must not be active
+ - The {@code pipelineStatistics} member used to create any active Pipeline Statistics Query must not contain #QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT, #QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT, #QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT, #QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT, #QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT, #QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT, #QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT, #QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT, or #QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT
@@ -654,7 +706,6 @@ val EXT_mesh_shader = "EXTMeshShader".nativeClassVK("EXT_mesh_shader", type = "d
- If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
- A valid pipeline must be bound to the pipeline bind point used by this command
- - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
- There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -693,9 +744,27 @@ val EXT_mesh_shader = "EXTMeshShader".nativeClassVK("EXT_mesh_shader", type = "d
- If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be #STENCIL_OP_KEEP
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT dynamic state enabled then #CmdSetViewport() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR dynamic state enabled then #CmdSetScissor() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then #CmdSetLineWidth() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then #CmdSetDepthBias() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then #CmdSetBlendConstants() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then #CmdSetDepthBounds() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then #CmdSetStencilCompareMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then #CmdSetStencilWriteMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then #CmdSetStencilReference() must have been called in the current command buffer prior to this drawing command
- If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to ##VkPhysicalDeviceMultiviewProperties{@code ::maxMultiviewInstanceIndex}
- If the bound graphics pipeline was created with ##VkPipelineSampleLocationsStateCreateInfoEXT{@code ::sampleLocationsEnable} set to #TRUE and the current subpass has a depth/stencil attachment, then that attachment must have been created with the #IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled then #CmdSetSampleLocationsEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CULL_MODE dynamic state enabled then #CmdSetCullMode() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_FRONT_FACE dynamic state enabled then #CmdSetFrontFace() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then #CmdSetPrimitiveTopology() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then #CmdSetDepthTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_WRITE_ENABLE dynamic state enabled then #CmdSetDepthWriteEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_COMPARE_OP dynamic state enabled then #CmdSetDepthCompareOp() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE dynamic state enabled then #CmdSetDepthBoundsTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_TEST_ENABLE dynamic state enabled then #CmdSetStencilTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_OP dynamic state enabled then #CmdSetStencilOp() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, then #CmdSetViewportWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::scissorCount} of the pipeline
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, then #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::viewportCount} of the pipeline
- If the bound graphics pipeline state was created with both the #DYNAMIC_STATE_SCISSOR_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled then both #CmdSetViewportWithCount() and #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -723,7 +792,7 @@ val EXT_mesh_shader = "EXTMeshShader".nativeClassVK("EXT_mesh_shader", type = "d
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::colorAttachmentCount} greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} equal to #NULL_HANDLE must have the corresponding element of ##VkPipelineRenderingCreateInfo{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to #FORMAT_UNDEFINED
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then #CmdSetColorWriteEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the ##VkPipelineColorBlendStateCreateInfo{@code ::attachmentCount} of the currently bound graphics pipeline
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command for each discard rectangle in ##VkPipelineDiscardRectangleStateCreateInfoEXT{@code ::discardRectangleCount}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to #FORMAT_UNDEFINED
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
@@ -739,37 +808,38 @@ val EXT_mesh_shader = "EXTMeshShader".nativeClassVK("EXT_mesh_shader", type = "d
- If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline must have been created with a ##VkGraphicsPipelineCreateInfo{@code ::renderPass} equal to #NULL_HANDLE
- If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, rasterization discard must not be enabled
- If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, the bound graphics pipeline must not have been created with a non-zero value in ##VkPipelineRasterizationStateStreamCreateInfoEXT{@code ::rasterizationStream}
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_EXT dynamic state enabled then #CmdSetLineStippleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV dynamic state enabled then #CmdSetRepresentativeFragmentTestEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT state enabled and the last call to #CmdSetColorBlendEnableEXT() set {@code pColorBlendEnables} for any attachment to #TRUE, then for those attachments in the subpass the corresponding image view’s format features must contain #FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to #CmdSetRasterizationSamplesEXT() must follow the rules for a zero-attachment subpass
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the {@code samples} parameter in the last call to #CmdSetSampleMaskEXT() must be greater or equal to the ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -789,7 +859,7 @@ val EXT_mesh_shader = "EXTMeshShader".nativeClassVK("EXT_mesh_shader", type = "d
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to #CmdSetCoverageModulationTableEnableNV() set {@code coverageModulationTableEnable} to #TRUE, then the {@code coverageModulationTableCount} parameter in the last call to #CmdSetCoverageModulationTableNV() must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
- If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
- If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by #GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportSwizzleStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportSwizzleNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
@@ -800,6 +870,14 @@ val EXT_mesh_shader = "EXTMeshShader".nativeClassVK("EXT_mesh_shader", type = "d
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_DEFAULT_EXT, then the {@code stippledRectangularLines} feature must be enabled and ##VkPhysicalDeviceLimits{@code ::strictLines} must be VK_TRUE
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to #CmdSetConservativeRasterizationModeEXT() must be #CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
- If the currently bound pipeline was created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT, then Mesh Shader Queries must not be active
+ - If dynamic state was inherited from ##VkCommandBufferInheritanceViewportScissorInfoNV, it must be set in the current command buffer prior to this drawing command
+
+
+
+ - The bound graphics pipeline must not have been created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT
+ - Transform Feedback Queries must not be active
+ - Primitives Generated Queries must not be active
+ - The {@code pipelineStatistics} member used to create any active Pipeline Statistics Query must not contain #QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT, #QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT, #QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT, #QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT, #QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT, #QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT, #QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT, #QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT, or #QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_multi_draw.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_multi_draw.kt
index 55ece71cbb..fe960626e3 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_multi_draw.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_multi_draw.kt
@@ -120,7 +120,6 @@ val EXT_multi_draw = "EXTMultiDraw".nativeClassVK("EXT_multi_draw", type = "devi
- If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
- A valid pipeline must be bound to the pipeline bind point used by this command
- - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
- There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -159,9 +158,27 @@ val EXT_multi_draw = "EXTMultiDraw".nativeClassVK("EXT_multi_draw", type = "devi
- If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be #STENCIL_OP_KEEP
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT dynamic state enabled then #CmdSetViewport() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR dynamic state enabled then #CmdSetScissor() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then #CmdSetLineWidth() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then #CmdSetDepthBias() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then #CmdSetBlendConstants() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then #CmdSetDepthBounds() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then #CmdSetStencilCompareMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then #CmdSetStencilWriteMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then #CmdSetStencilReference() must have been called in the current command buffer prior to this drawing command
- If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to ##VkPhysicalDeviceMultiviewProperties{@code ::maxMultiviewInstanceIndex}
- If the bound graphics pipeline was created with ##VkPipelineSampleLocationsStateCreateInfoEXT{@code ::sampleLocationsEnable} set to #TRUE and the current subpass has a depth/stencil attachment, then that attachment must have been created with the #IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled then #CmdSetSampleLocationsEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CULL_MODE dynamic state enabled then #CmdSetCullMode() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_FRONT_FACE dynamic state enabled then #CmdSetFrontFace() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then #CmdSetPrimitiveTopology() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then #CmdSetDepthTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_WRITE_ENABLE dynamic state enabled then #CmdSetDepthWriteEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_COMPARE_OP dynamic state enabled then #CmdSetDepthCompareOp() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE dynamic state enabled then #CmdSetDepthBoundsTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_TEST_ENABLE dynamic state enabled then #CmdSetStencilTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_OP dynamic state enabled then #CmdSetStencilOp() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, then #CmdSetViewportWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::scissorCount} of the pipeline
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, then #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::viewportCount} of the pipeline
- If the bound graphics pipeline state was created with both the #DYNAMIC_STATE_SCISSOR_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled then both #CmdSetViewportWithCount() and #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -189,7 +206,7 @@ val EXT_multi_draw = "EXTMultiDraw".nativeClassVK("EXT_multi_draw", type = "devi
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::colorAttachmentCount} greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} equal to #NULL_HANDLE must have the corresponding element of ##VkPipelineRenderingCreateInfo{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to #FORMAT_UNDEFINED
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then #CmdSetColorWriteEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the ##VkPipelineColorBlendStateCreateInfo{@code ::attachmentCount} of the currently bound graphics pipeline
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command for each discard rectangle in ##VkPipelineDiscardRectangleStateCreateInfoEXT{@code ::discardRectangleCount}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to #FORMAT_UNDEFINED
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
@@ -205,37 +222,38 @@ val EXT_multi_draw = "EXTMultiDraw".nativeClassVK("EXT_multi_draw", type = "devi
- If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline must have been created with a ##VkGraphicsPipelineCreateInfo{@code ::renderPass} equal to #NULL_HANDLE
- If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, rasterization discard must not be enabled
- If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, the bound graphics pipeline must not have been created with a non-zero value in ##VkPipelineRasterizationStateStreamCreateInfoEXT{@code ::rasterizationStream}
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_EXT dynamic state enabled then #CmdSetLineStippleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV dynamic state enabled then #CmdSetRepresentativeFragmentTestEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT state enabled and the last call to #CmdSetColorBlendEnableEXT() set {@code pColorBlendEnables} for any attachment to #TRUE, then for those attachments in the subpass the corresponding image view’s format features must contain #FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to #CmdSetRasterizationSamplesEXT() must follow the rules for a zero-attachment subpass
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the {@code samples} parameter in the last call to #CmdSetSampleMaskEXT() must be greater or equal to the ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -255,7 +273,7 @@ val EXT_multi_draw = "EXTMultiDraw".nativeClassVK("EXT_multi_draw", type = "devi
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to #CmdSetCoverageModulationTableEnableNV() set {@code coverageModulationTableEnable} to #TRUE, then the {@code coverageModulationTableCount} parameter in the last call to #CmdSetCoverageModulationTableNV() must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
- If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
- If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by #GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportSwizzleStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportSwizzleNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
@@ -266,6 +284,7 @@ val EXT_multi_draw = "EXTMultiDraw".nativeClassVK("EXT_multi_draw", type = "devi
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_DEFAULT_EXT, then the {@code stippledRectangularLines} feature must be enabled and ##VkPhysicalDeviceLimits{@code ::strictLines} must be VK_TRUE
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to #CmdSetConservativeRasterizationModeEXT() must be #CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
- If the currently bound pipeline was created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT, then Mesh Shader Queries must not be active
+ - If dynamic state was inherited from ##VkCommandBufferInheritanceViewportScissorInfoNV, it must be set in the current command buffer prior to this drawing command
@@ -367,7 +386,6 @@ val EXT_multi_draw = "EXTMultiDraw".nativeClassVK("EXT_multi_draw", type = "devi
- If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
- A valid pipeline must be bound to the pipeline bind point used by this command
- - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
- There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -406,9 +424,27 @@ val EXT_multi_draw = "EXTMultiDraw".nativeClassVK("EXT_multi_draw", type = "devi
- If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be #STENCIL_OP_KEEP
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT dynamic state enabled then #CmdSetViewport() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR dynamic state enabled then #CmdSetScissor() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then #CmdSetLineWidth() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then #CmdSetDepthBias() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then #CmdSetBlendConstants() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then #CmdSetDepthBounds() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then #CmdSetStencilCompareMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then #CmdSetStencilWriteMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then #CmdSetStencilReference() must have been called in the current command buffer prior to this drawing command
- If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to ##VkPhysicalDeviceMultiviewProperties{@code ::maxMultiviewInstanceIndex}
- If the bound graphics pipeline was created with ##VkPipelineSampleLocationsStateCreateInfoEXT{@code ::sampleLocationsEnable} set to #TRUE and the current subpass has a depth/stencil attachment, then that attachment must have been created with the #IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled then #CmdSetSampleLocationsEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CULL_MODE dynamic state enabled then #CmdSetCullMode() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_FRONT_FACE dynamic state enabled then #CmdSetFrontFace() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then #CmdSetPrimitiveTopology() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then #CmdSetDepthTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_WRITE_ENABLE dynamic state enabled then #CmdSetDepthWriteEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_COMPARE_OP dynamic state enabled then #CmdSetDepthCompareOp() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE dynamic state enabled then #CmdSetDepthBoundsTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_TEST_ENABLE dynamic state enabled then #CmdSetStencilTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_OP dynamic state enabled then #CmdSetStencilOp() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, then #CmdSetViewportWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::scissorCount} of the pipeline
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, then #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::viewportCount} of the pipeline
- If the bound graphics pipeline state was created with both the #DYNAMIC_STATE_SCISSOR_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled then both #CmdSetViewportWithCount() and #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -436,7 +472,7 @@ val EXT_multi_draw = "EXTMultiDraw".nativeClassVK("EXT_multi_draw", type = "devi
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::colorAttachmentCount} greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} equal to #NULL_HANDLE must have the corresponding element of ##VkPipelineRenderingCreateInfo{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to #FORMAT_UNDEFINED
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then #CmdSetColorWriteEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the ##VkPipelineColorBlendStateCreateInfo{@code ::attachmentCount} of the currently bound graphics pipeline
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command for each discard rectangle in ##VkPipelineDiscardRectangleStateCreateInfoEXT{@code ::discardRectangleCount}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to #FORMAT_UNDEFINED
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
@@ -452,37 +488,38 @@ val EXT_multi_draw = "EXTMultiDraw".nativeClassVK("EXT_multi_draw", type = "devi
- If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline must have been created with a ##VkGraphicsPipelineCreateInfo{@code ::renderPass} equal to #NULL_HANDLE
- If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, rasterization discard must not be enabled
- If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, the bound graphics pipeline must not have been created with a non-zero value in ##VkPipelineRasterizationStateStreamCreateInfoEXT{@code ::rasterizationStream}
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_EXT dynamic state enabled then #CmdSetLineStippleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV dynamic state enabled then #CmdSetRepresentativeFragmentTestEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT state enabled and the last call to #CmdSetColorBlendEnableEXT() set {@code pColorBlendEnables} for any attachment to #TRUE, then for those attachments in the subpass the corresponding image view’s format features must contain #FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to #CmdSetRasterizationSamplesEXT() must follow the rules for a zero-attachment subpass
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the {@code samples} parameter in the last call to #CmdSetSampleMaskEXT() must be greater or equal to the ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -502,7 +539,7 @@ val EXT_multi_draw = "EXTMultiDraw".nativeClassVK("EXT_multi_draw", type = "devi
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to #CmdSetCoverageModulationTableEnableNV() set {@code coverageModulationTableEnable} to #TRUE, then the {@code coverageModulationTableCount} parameter in the last call to #CmdSetCoverageModulationTableNV() must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
- If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
- If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by #GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportSwizzleStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportSwizzleNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
@@ -513,6 +550,7 @@ val EXT_multi_draw = "EXTMultiDraw".nativeClassVK("EXT_multi_draw", type = "devi
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_DEFAULT_EXT, then the {@code stippledRectangularLines} feature must be enabled and ##VkPhysicalDeviceLimits{@code ::strictLines} must be VK_TRUE
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to #CmdSetConservativeRasterizationModeEXT() must be #CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
- If the currently bound pipeline was created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT, then Mesh Shader Queries must not be active
+ - If dynamic state was inherited from ##VkCommandBufferInheritanceViewportScissorInfoNV, it must be set in the current command buffer prior to this drawing command
@@ -536,8 +574,8 @@ val EXT_multi_draw = "EXTMultiDraw".nativeClassVK("EXT_multi_draw", type = "devi
- An index buffer must be bound
+ - If {@code robustBufferAccess2} is not enabled,
(indexSize × (firstIndex + indexCount) + offset)
must be less than or equal to the size of the bound index buffer, with {@code indexSize} being based on the type specified by {@code indexType}, where the index buffer, {@code indexType}, and {@code offset} are specified via {@code vkCmdBindIndexBuffer}
- The {@code multiDraw} feature must be enabled
- (indexSize × (firstIndex + indexCount) + offset)
must be less than or equal to the size of the bound index buffer, with {@code indexSize} being based on the type specified by {@code indexType}, where the index buffer, {@code indexType}, and {@code offset} are specified via {@code vkCmdBindIndexBuffer}
- {@code drawCount} must be less than ##VkPhysicalDeviceMultiDrawPropertiesEXT{@code ::maxMultiDrawCount}
- If {@code drawCount} is greater than zero, {@code pIndexInfo} must be a valid pointer to memory containing one or more valid instances of ##VkMultiDrawIndexedInfoEXT structures
- {@code stride} must be a multiple of 4
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_pipeline_library_group_handles.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_pipeline_library_group_handles.kt
new file mode 100644
index 0000000000..645c0ccc35
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_pipeline_library_group_handles.kt
@@ -0,0 +1,87 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package vulkan.templates
+
+import org.lwjgl.generator.*
+import vulkan.*
+
+val EXT_pipeline_library_group_handles = "EXTPipelineLibraryGroupHandles".nativeClassVK("EXT_pipeline_library_group_handles", type = "device", postfix = "EXT") {
+ documentation =
+ """
+ When using pipeline libraries in ray tracing pipelines, a library might get linked into different pipelines in an incremental way. An application can have a strategy where a ray tracing pipeline is comprised of N pipeline libraries and is later augumented by creating a new pipeline with N + 1 libraries. Without this extension, all group handles must be re-queried as the group handle is tied to the pipeline, not the library. This is problematic for applications which aim to decouple construction of record buffers and the linkage of ray tracing pipelines.
+
+ To aid in this, this extension enables support for querying group handles directly from pipeline libraries. Group handles obtained from a library must remain bitwise identical in any {@code VkPipeline} that links to the library.
+
+ With this feature, the extension also improves compatibility with DXR 1.1 AddToStateObject(), which guarantees that group handles returned remain bitwise identical between parent and child pipelines. In addition, querying group handles from COLLECTION objects is also supported with that API.
+
+ VK_EXT_pipeline_library_group_handles
+
+ - Name String
+ - {@code VK_EXT_pipeline_library_group_handles}
+
+ - Extension Type
+ - Device extension
+
+ - Registered Extension Number
+ - 499
+
+ - Revision
+ - 1
+
+ - Extension and Version Dependencies
+
+ - Requires support for Vulkan 1.1
+ - Requires {@link KHRRayTracingPipeline VK_KHR_ray_tracing_pipeline} to be enabled for any device-level functionality
+ - Requires {@link KHRPipelineLibrary VK_KHR_pipeline_library} to be enabled for any device-level functionality
+
+
+ - Contact
+
+
+ - Extension Proposal
+ - VK_EXT_pipeline_library_group_handles
+
+
+ Other Extension Metadata
+
+ - Last Modified Date
+ - 2023-01-25
+
+ - IP Status
+ - No known IP claims.
+
+ - Contributors
+
+ - Hans-Kristian Arntzen, Valve
+ - Stuart Smith, AMD
+ - Ricardo Garcia, Igalia
+ - Lionel Landwerlin, Intel
+ - Eric Werness, NVIDIA
+ - Daniel Koch, NVIDIA
+
+
+ """
+
+ IntConstant(
+ "The extension specification version.",
+
+ "EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION".."1"
+ )
+
+ StringConstant(
+ "The extension name.",
+
+ "EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME".."VK_EXT_pipeline_library_group_handles"
+ )
+
+ EnumConstant(
+ "Extends {@code VkStructureType}.",
+
+ "STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT".."1000498000"
+ )
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_texel_buffer_alignment.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_texel_buffer_alignment.kt
index e73e1f8c92..8a1d7761b3 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_texel_buffer_alignment.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_texel_buffer_alignment.kt
@@ -14,7 +14,7 @@ val EXT_texel_buffer_alignment = "EXTTexelBufferAlignment".nativeClassVK("EXT_te
This extension adds more expressive alignment requirements for uniform and storage texel buffers. Some implementations have single texel alignment requirements that cannot be expressed via ##VkPhysicalDeviceLimits{@code ::minTexelBufferOffsetAlignment}.
Promotion to Vulkan 1.3
- Functionality in this extension is included in core Vulkan 1.3, with the EXT suffix omitted. However, only the properties structure is promoted. The feature structure is not promoted. The original type name is still available as an alias of the core functionality.
+ Functionality in this extension is included in core Vulkan 1.3, with the EXT suffix omitted. However, only the properties structure is promoted. The feature structure is not promoted and {@code texelBufferAlignment} is enabled if when using a Vulkan 1.3 instance. The original type name is still available as an alias of the core functionality.
VK_EXT_texel_buffer_alignment
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_transform_feedback.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_transform_feedback.kt
index 8ac6bc862b..fee8ddd554 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_transform_feedback.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_transform_feedback.kt
@@ -357,7 +357,13 @@ val EXT_transform_feedback = "EXTTransformFeedback".nativeClassVK("EXT_transform
- If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_PIPELINE_STATISTICS and any of the {@code pipelineStatistics} indicate compute operations, the {@code VkCommandPool} that {@code commandBuffer} was allocated from must support compute operations
- {@code commandBuffer} must not be a protected command buffer
- If called within a render pass instance, the sum of {@code query} and the number of bits set in the current subpass’s view mask must be less than or equal to the number of queries in {@code queryPool}
- - If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR the {@code VkCommandPool} that {@code commandBuffer} was allocated from must support video encode operations
+ - If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_RESULT_STATUS_ONLY_KHR, then the {@code VkCommandPool} that {@code commandBuffer} was allocated from must have been created with a queue family index that supports result status queries, as indicated by ##VkQueueFamilyQueryResultStatusPropertiesKHR{@code ::queryResultStatusSupport}
+ - If there is a bound video session, then there must be no active queries
+ - If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_RESULT_STATUS_ONLY_KHR and there is a bound video session, then {@code queryPool} must have been created with a ##VkVideoProfileInfoKHR structure included in the {@code pNext} chain of ##VkQueryPoolCreateInfo identical to the one specified in ##VkVideoSessionCreateInfoKHR{@code ::pVideoProfile} the bound video session was created with
+ - If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR, then the {@code VkCommandPool} that {@code commandBuffer} was allocated from must support video encode operations
+ - If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR, then there must be a bound video session
+ - If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR and there is a bound video session, then {@code queryPool} must have been created with a ##VkVideoProfileInfoKHR structure included in the {@code pNext} chain of ##VkQueryPoolCreateInfo identical to the one specified in ##VkVideoSessionCreateInfoKHR{@code ::pVideoProfile} the bound video session was created with
+ - If the {@code queryType} used to create {@code queryPool} was not #QUERY_TYPE_RESULT_STATUS_ONLY_KHR or #QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR, then there must be no bound video session
- If the {@code queryPool} was created with the same {@code queryType} as that of another active query within {@code commandBuffer}, then {@code index} must not match the index used for the active query
- If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT the {@code VkCommandPool} that {@code commandBuffer} was allocated from must support graphics operations
- If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT the {@code index} parameter must be less than ##VkPhysicalDeviceTransformFeedbackPropertiesEXT{@code ::maxTransformFeedbackStreams}
@@ -538,7 +544,6 @@ val EXT_transform_feedback = "EXTTransformFeedback".nativeClassVK("EXT_transform
- If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
- A valid pipeline must be bound to the pipeline bind point used by this command
- - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
- There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -577,9 +582,27 @@ val EXT_transform_feedback = "EXTTransformFeedback".nativeClassVK("EXT_transform
- If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be #STENCIL_OP_KEEP
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT dynamic state enabled then #CmdSetViewport() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR dynamic state enabled then #CmdSetScissor() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then #CmdSetLineWidth() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then #CmdSetDepthBias() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then #CmdSetBlendConstants() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then #CmdSetDepthBounds() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then #CmdSetStencilCompareMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then #CmdSetStencilWriteMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then #CmdSetStencilReference() must have been called in the current command buffer prior to this drawing command
- If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to ##VkPhysicalDeviceMultiviewProperties{@code ::maxMultiviewInstanceIndex}
- If the bound graphics pipeline was created with ##VkPipelineSampleLocationsStateCreateInfoEXT{@code ::sampleLocationsEnable} set to #TRUE and the current subpass has a depth/stencil attachment, then that attachment must have been created with the #IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled then #CmdSetSampleLocationsEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CULL_MODE dynamic state enabled then #CmdSetCullMode() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_FRONT_FACE dynamic state enabled then #CmdSetFrontFace() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then #CmdSetPrimitiveTopology() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then #CmdSetDepthTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_WRITE_ENABLE dynamic state enabled then #CmdSetDepthWriteEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_COMPARE_OP dynamic state enabled then #CmdSetDepthCompareOp() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE dynamic state enabled then #CmdSetDepthBoundsTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_TEST_ENABLE dynamic state enabled then #CmdSetStencilTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_OP dynamic state enabled then #CmdSetStencilOp() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, then #CmdSetViewportWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::scissorCount} of the pipeline
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, then #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::viewportCount} of the pipeline
- If the bound graphics pipeline state was created with both the #DYNAMIC_STATE_SCISSOR_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled then both #CmdSetViewportWithCount() and #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -607,7 +630,7 @@ val EXT_transform_feedback = "EXTTransformFeedback".nativeClassVK("EXT_transform
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::colorAttachmentCount} greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} equal to #NULL_HANDLE must have the corresponding element of ##VkPipelineRenderingCreateInfo{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to #FORMAT_UNDEFINED
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then #CmdSetColorWriteEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the ##VkPipelineColorBlendStateCreateInfo{@code ::attachmentCount} of the currently bound graphics pipeline
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command for each discard rectangle in ##VkPipelineDiscardRectangleStateCreateInfoEXT{@code ::discardRectangleCount}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to #FORMAT_UNDEFINED
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
@@ -623,37 +646,38 @@ val EXT_transform_feedback = "EXTTransformFeedback".nativeClassVK("EXT_transform
- If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline must have been created with a ##VkGraphicsPipelineCreateInfo{@code ::renderPass} equal to #NULL_HANDLE
- If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, rasterization discard must not be enabled
- If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, the bound graphics pipeline must not have been created with a non-zero value in ##VkPipelineRasterizationStateStreamCreateInfoEXT{@code ::rasterizationStream}
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_EXT dynamic state enabled then #CmdSetLineStippleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV dynamic state enabled then #CmdSetRepresentativeFragmentTestEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT state enabled and the last call to #CmdSetColorBlendEnableEXT() set {@code pColorBlendEnables} for any attachment to #TRUE, then for those attachments in the subpass the corresponding image view’s format features must contain #FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to #CmdSetRasterizationSamplesEXT() must follow the rules for a zero-attachment subpass
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the {@code samples} parameter in the last call to #CmdSetSampleMaskEXT() must be greater or equal to the ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -673,7 +697,7 @@ val EXT_transform_feedback = "EXTTransformFeedback".nativeClassVK("EXT_transform
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to #CmdSetCoverageModulationTableEnableNV() set {@code coverageModulationTableEnable} to #TRUE, then the {@code coverageModulationTableCount} parameter in the last call to #CmdSetCoverageModulationTableNV() must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
- If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
- If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by #GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportSwizzleStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportSwizzleNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
@@ -684,6 +708,7 @@ val EXT_transform_feedback = "EXTTransformFeedback".nativeClassVK("EXT_transform
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_DEFAULT_EXT, then the {@code stippledRectangularLines} feature must be enabled and ##VkPhysicalDeviceLimits{@code ::strictLines} must be VK_TRUE
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to #CmdSetConservativeRasterizationModeEXT() must be #CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
- If the currently bound pipeline was created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT, then Mesh Shader Queries must not be active
+ - If dynamic state was inherited from ##VkCommandBufferInheritanceViewportScissorInfoNV, it must be set in the current command buffer prior to this drawing command
@@ -699,7 +724,7 @@ val EXT_transform_feedback = "EXTTransformFeedback".nativeClassVK("EXT_transform
- The bound graphics pipeline must not have been created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_TASK_BIT_EXT or #SHADER_STAGE_MESH_BIT_EXT
- ##VkPhysicalDeviceTransformFeedbackFeaturesEXT{@code ::transformFeedback} must be enabled
- The implementation must support ##VkPhysicalDeviceTransformFeedbackPropertiesEXT{@code ::transformFeedbackDraw}
- - {@code vertexStride} must be greater than 0 and less than or equal to ##VkPhysicalDeviceLimits{@code ::maxTransformFeedbackBufferDataStride}
+ - {@code vertexStride} must be greater than 0 and less than or equal to ##VkPhysicalDeviceTransformFeedbackPropertiesEXT{@code ::maxTransformFeedbackBufferDataStride}
- If {@code counterBuffer} is non-sparse then it must be bound completely and contiguously to a single {@code VkDeviceMemory} object
- {@code counterBuffer} must have been created with the #BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
- {@code counterBufferOffset} must be a multiple of 4
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/HUAWEI_cluster_culling_shader.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/HUAWEI_cluster_culling_shader.kt
new file mode 100644
index 0000000000..c476680da2
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/HUAWEI_cluster_culling_shader.kt
@@ -0,0 +1,809 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package vulkan.templates
+
+import org.lwjgl.generator.*
+import vulkan.*
+
+val HUAWEI_cluster_culling_shader = "HUAWEIClusterCullingShader".nativeClassVK("HUAWEI_cluster_culling_shader", type = "device", postfix = "HUAWEI") {
+ documentation =
+ """
+ Cluster Culling Shader(CCS) is similar to the existing compute shader; its main purpose is to provide an execution environment in order to perform coarse-level geometry culling and level-of-detail selection more efficiently on GPU.
+
+ The traditional 2-pass GPU culling solution using compute shader needs a pipeline barrier between compute pipeline and graphics pipeline, sometimes, in order to optimize performance, an additional compaction process may also be required. this extension improve the above mentioned shortcomings which can allow compute shader directly emit visible clusters to following graphics pipeline.
+
+ A set of new built-in output variables are used to express visible cluster, in addition, a new built-in function is used to emit these variables from CCS to IA stage, then IA can use these variables to fetches vertices of visible cluster and drive vertex shader to shading these vertices. As stated above, both IA and vertex shader are preserved, vertex shader still used for vertices position shading, instead of directly outputting a set of transformed vertices from compute shader, this makes CCS more suitable for mobile GPUs.
+
+ Sample code
+ Example of cluster culling in a GLSL shader
+
+
+\#extension GL_HUAWEI_cluster_culling_shader: enable
+
+\#define GPU_WARP_SIZE 32
+\#define GPU_GROUP_SIZE GPU_WARP_SIZE
+
+\#define GPU_CLUSTER_PER_INVOCATION 1
+\#define GPU_CLUSTER_PER_WORKGROUP (GPU_GROUP_SIZE * GPU_CLUSTER_PER_INVOCATION)
+
+// Number of threads per workgroup
+// - 1D only
+// - warpsize = 32
+layout(local_size_x=GPU_GROUP_SIZE, local_size_y=1, local_size_z=1) in;
+
+
+\#define GPU_CLUSTER_DESCRIPTOR_BINDING 0
+\#define GPU_DRAW_BUFFER_BINDING 1
+\#define GPU_INSTANCE_DESCRIPTOR_BINDING 2
+
+const float pi_half = 1.570795;
+uint instance_id;
+
+struct BoundingSphere
+{
+ vec3 center;
+ float radius;
+};
+
+struct BoundingCone
+{
+ vec3 normal;
+ float angle;
+};
+
+struct ClusterDescriptor
+{
+ BoundingSphere sphere;
+ BoundingCone cone;
+ uint instance_idx;
+};
+
+struct InstanceData
+{
+ mat4 mvp_matrix; // mvp matrix.
+ vec4 frustum_planes[6]; // six frustum planes
+ mat4 model_matrix_transpose_inverse; // inverse transpose of model matrix.
+ vec3 view_origin; // view original
+};
+
+struct InstanceDescriptor
+{
+ uint begin;
+ uint end;
+ uint cluster_count;
+ uint debug;
+ BoundingSphere sphere;
+ InstanceData instance_data;
+};
+
+struct DrawElementsCommand{
+ uint indexcount;
+ uint instanceCount;
+ uint firstIndex;
+ int vertexoffset;
+ uint firstInstance;
+ uint cluster_id;
+};
+
+// indexed mode
+out gl_PerClusterHUAWEI{
+ uint gl_IndexCountHUAWEI;
+ uint gl_InstanceCountHUAWEI;
+ uint gl_FirstIndexHUAWEI;
+ int gl_VertexOffsetHUAWEI;
+ uint gl_FirstInstanceHUAWEI;
+ uint gl_ClusterIdHUAWEI;
+};
+
+
+layout(binding = GPU_CLUSTER_DESCRIPTOR_BINDING, std430) readonly buffer cluster_descriptor_ssbo
+{
+ ClusterDescriptor cluster_descriptors[];
+};
+
+
+layout(binding = GPU_DRAW_BUFFER_BINDING, std430) buffer draw_indirect_ssbo
+{
+ DrawElementsCommand draw_commands[];
+};
+
+layout(binding = GPU_INSTANCE_DESCRIPTOR_BINDING, std430) buffer instance_descriptor_ssbo
+{
+ InstanceDescriptor instance_descriptors[];
+};
+
+uniform bool disable_frustum_culling;
+uniform bool disable_backface_culling;
+uniform float debug_value;
+
+
+bool isFrontFaceVisible( vec3 sphere_center, float sphere_radius, vec3 cone_normal, float cone_angle )
+{
+ vec3 sphere_center_dir = normalize(sphere_center -
+ instance_descriptors[instance_id].instance_data.view_origin);
+
+ float sin_cone_angle = sin(min(cone_angle, pi_half));
+ return dot(cone_normal, sphere_center_dir) < sin_cone_angle;
+}
+
+bool isSphereOutsideFrustum( vec3 sphere_center, float sphere_radius )
+{
+ bool isInside = false;
+
+ for(int i = 0; i < 6; i++)
+ {
+ isInside = isInside ||
+ (dot(instance_descriptors[instance_id].instance_data.frustum_planes[i].xyz,
+ sphere_center) + instance_descriptors[instance_id].instance_data.frustum_planes[i].w <
+ sphere_radius);
+ }
+ return isInside;
+}
+
+
+void main()
+{
+ uint cluster_id = gl_GlobalInvocationID.x;
+ ClusterDescriptor desc = cluster_descriptors[cluster_id];
+
+ // get instance description
+ instance_id = desc.instance_idx;
+ InstanceDescriptor inst_desc = instance_descriptors[instance_id];
+
+ //instance based culling
+ bool instance_render = (disable_frustum_culling ||
+ !isSphereOutsideFrustum(inst_desc.sphere.center, inst_desc.sphere.radius));
+
+ if( instance_render)
+ {
+ // cluster based culling
+ bool render = (disable_frustum_culling || !isSphereOutsideFrustum(desc.sphere.center,
+ desc.sphere.radius)) && (disable_backface_culling ||
+ isFrontFaceVisible(desc.sphere.center, desc.sphere.radius, desc.cone.normal,
+ desc.cone.angle));
+
+ if (render)
+ {
+ // this cluster passed coarse-level culling, update built-in output variable.
+ // in case of indexed mode:
+ gl_IndexCountHUAWEI = draw_commands[cluster_id].indexcount;
+ gl_InstanceCountHUAWEI = draw_commands[cluster_id].instanceCount;
+ gl_FirstIndexHUAWEI = draw_commands[cluster_id].firstIndex;
+ gl_VertexOffsetHUAWEI = draw_commands[cluster_id].vertexoffset;
+ gl_FirstInstanceHUAWEI = draw_commands[cluster_id].firstInstance;
+ gl_ClusterIdHUAWEI = draw_commands[cluster_id].cluster_id;
+
+ // emit built-in output variables as a drawing command to subsequent
+ // rendering pipeline.
+ dispatchClusterHUAWEI();
+ }
+ }
+}
+
+ Example of graphics pipeline creation with cluster culling shader
+
+
+// create a cluster culling shader stage info structure.
+VkPipelineShaderStageCreateInfo ccsStageInfo{};
+ccsStageInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
+ccsStageInfo.stage = VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI;
+ccsStageInfo.module = clustercullingshaderModule;
+ccsStageInfo.pName = "main";
+
+// pipeline shader stage creation
+VkPipelineShaderStageCreateInfo shaderStages[] = { ccsStageInfo, vertexShaderStageInfo, fragmentShaderStageInfo };
+
+// create graphics pipeline
+VkGraphicsPipelineCreateInfo pipelineInfo{};
+pipelineInfo.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;
+pipelineInfo.stageCount = 3;
+pipelineInfo.pStage = shaderStages;
+pipelineInfo.pVertexInputState = &vertexInputInfo;
+// ...
+VkPipeline graphicsPipeline;
+VkCreateGraphicsPipelines(device, VK_NULL_HANDLE, 1, &pipelineInfo, nullptr, &graphicsPipeline);
+
+ Example of launching the execution of cluster culling shader
+
+
+vkCmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, graphicsPipeline);
+vkCmdDrawClusterHUAWEI(commandBuffer, groupCountX, 1, 1);
+vkCmdEndRenderPass(commandBuffer);
+
+ VK_HUAWEI_cluster_culling_shader
+
+ - Name String
+ - {@code VK_HUAWEI_cluster_culling_shader}
+
+ - Extension Type
+ - Device extension
+
+ - Registered Extension Number
+ - 405
+
+ - Revision
+ - 1
+
+ - Extension and Version Dependencies
+
+ - Requires support for Vulkan 1.0
+ - Requires {@link KHRGetPhysicalDeviceProperties2 VK_KHR_get_physical_device_properties2} to be enabled for any device-level functionality
+
+
+ - Contact
+
+
+ - Extension Proposal
+ - VK_HUAWEI_cluster_culling_shader
+
+
+ Other Extension Metadata
+
+ - Last Modified Date
+ - 2022-11-17
+
+ - Interactions and External Dependencies
+
+
+ - Contributors
+
+ - Yuchang Wang, Huawei
+ - Juntao Li, Huawei
+ - Pan Gao, Huawei
+ - Jie Cao, Huawei
+ - Yunjin Zhang, Huawei
+ - Shujie Zhou, Huawei
+ - Chaojun Wang, Huawei
+ - Jiajun Hu, Huawei
+ - Cong Zhang, Huawei
+
+
+ """
+
+ IntConstant(
+ "The extension specification version.",
+
+ "HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION".."1"
+ )
+
+ StringConstant(
+ "The extension name.",
+
+ "HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME".."VK_HUAWEI_cluster_culling_shader"
+ )
+
+ EnumConstant(
+ "Extends {@code VkStructureType}.",
+
+ "STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI".."1000404000",
+ "STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI".."1000404001"
+ )
+
+ EnumConstantLong(
+ "Extends {@code VkPipelineStageFlagBits2}.",
+
+ "PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI".enum(0x20000000000L)
+ )
+
+ EnumConstant(
+ "Extends {@code VkShaderStageFlagBits}.",
+
+ "SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI".enum(0x00080000)
+ )
+
+ EnumConstant(
+ "Extends {@code VkQueryPipelineStatisticFlagBits}.",
+
+ "QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI".enum(0x00002000)
+ )
+
+ void(
+ "CmdDrawClusterHUAWEI",
+ """
+ Draw cluster culling work items.
+
+ C Specification
+ To record a cluster culling shader drawing command, call:
+
+
+void vkCmdDrawClusterHUAWEI(
+ VkCommandBuffer commandBuffer,
+ uint32_t groupCountX,
+ uint32_t groupCountY,
+ uint32_t groupCountZ);
+
+ Description
+ When the command is executed,a global workgroup consisting of groupCountX*groupCountY*groupCountZ local workgroup is assembled.
+
+ Valid Usage
+
+ - If a {@code VkSampler} created with {@code magFilter} or {@code minFilter} equal to #FILTER_LINEAR and {@code compareEnable} equal to #FALSE is used to sample a {@code VkImageView} as a result of this command, then the image view’s format features must contain #FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
+ - If a {@code VkSampler} created with {@code mipmapMode} equal to #SAMPLER_MIPMAP_MODE_LINEAR and {@code compareEnable} equal to #FALSE is used to sample a {@code VkImageView} as a result of this command, then the image view’s format features must contain #FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
+ - If a {@code VkImageView} is sampled with depth comparison, the image view’s format features must contain #FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
+ - If a {@code VkImageView} is accessed using atomic operations as a result of this command, then the image view’s format features must contain #FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
+ - If a {@code VkImageView} is sampled with #FILTER_CUBIC_EXT as a result of this command, then the image view’s format features must contain #FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
+ - Any {@code VkImageView} being sampled with #FILTER_CUBIC_EXT as a result of this command must have a {@code VkImageViewType} and format that supports cubic filtering, as specified by ##VkFilterCubicImageViewImageFormatPropertiesEXT{@code ::filterCubic} returned by {@code vkGetPhysicalDeviceImageFormatProperties2}
+ - Any {@code VkImageView} being sampled with #FILTER_CUBIC_EXT with a reduction mode of either #SAMPLER_REDUCTION_MODE_MIN or #SAMPLER_REDUCTION_MODE_MAX as a result of this command must have a {@code VkImageViewType} and format that supports cubic filtering together with minmax filtering, as specified by ##VkFilterCubicImageViewImageFormatPropertiesEXT{@code ::filterCubicMinmax} returned by {@code vkGetPhysicalDeviceImageFormatProperties2}
+ - Any {@code VkImage} created with a ##VkImageCreateInfo{@code ::flags} containing #IMAGE_CREATE_CORNER_SAMPLED_BIT_NV sampled as a result of this command must only be sampled using a {@code VkSamplerAddressMode} of #SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
+ - For any {@code VkImageView} being written as a storage image where the image format field of the {@code OpTypeImage} is {@code Unknown}, the view’s format features must contain #FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
+ - For any {@code VkImageView} being read as a storage image where the image format field of the {@code OpTypeImage} is {@code Unknown}, the view’s format features must contain #FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
+ - For any {@code VkBufferView} being written as a storage texel buffer where the image format field of the {@code OpTypeImage} is {@code Unknown}, the view’s buffer features must contain #FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
+ - Any {@code VkBufferView} being read as a storage texel buffer where the image format field of the {@code OpTypeImage} is {@code Unknown} then the view’s buffer features must contain #FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
+ - For each set n that is statically used by the {@code VkPipeline} bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a {@code VkPipelineLayout} that is compatible for set n, with the {@code VkPipelineLayout} used to create the current {@code VkPipeline}, as described in Pipeline Layout Compatibility
+ - If the {@code maintenance4} feature is not enabled, then for each push constant that is statically used by the {@code VkPipeline} bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a {@code VkPipelineLayout} that is compatible for push constants, with the {@code VkPipelineLayout} used to create the current {@code VkPipeline}, as described in Pipeline Layout Compatibility
+ - Descriptors in each bound descriptor set, specified via {@code vkCmdBindDescriptorSets}, must be valid if they are statically used by the {@code VkPipeline} bound to the pipeline bind point used by this command and the bound {@code VkPipeline} was not created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
+ - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdBindDescriptorSets}, the bound {@code VkPipeline} must have been created without #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
+ - Descriptors in bound descriptor buffers, specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, must be valid if they are dynamically used by the {@code VkPipeline} bound to the pipeline bind point used by this command and the bound {@code VkPipeline} was created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
+ - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
+ - If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
+ - A valid pipeline must be bound to the pipeline bind point used by this command
+ - There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
+ - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
+ - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
+ - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions that includes a LOD bias or any offset values, in any shader stage
+ - If any stage of the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either #PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT or #PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT for {@code uniformBuffers}, and the {@code robustBufferAccess} feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point
+ - If any stage of the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either #PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT or #PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT for {@code storageBuffers}, and the {@code robustBufferAccess} feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point
+ - If {@code commandBuffer} is an unprotected command buffer and {@code protectedNoFault} is not supported, any resource accessed by the {@code VkPipeline} object bound to the pipeline bind point used by this command must not be a protected resource
+ - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} or {@code VkImageView} object that enables sampler Y′CBCR conversion, that object must only be used with {@code OpImageSample*} or {@code OpImageSparseSample*} instructions
+ - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} or {@code VkImageView} object that enables sampler Y′CBCR conversion, that object must not use the {@code ConstOffset} and {@code Offset} operands
+ - If a {@code VkImageView} is accessed as a result of this command, then the image view’s {@code viewType} must match the {@code Dim} operand of the {@code OpTypeImage} as described in textures-operation-validation
+ - If a {@code VkImageView} is accessed as a result of this command, then the image view’s {@code format} must match the numeric format from the {@code Sampled} {@code Type} operand of the {@code OpTypeImage} as described in the SPIR-V Sampled Type column of the Interpretation of Numeric Format table
+ - If a {@code VkImageView} is accessed using {@code OpImageWrite} as a result of this command, then the {@code Type} of the {@code Texel} operand of that instruction must have at least as many components as the image view’s format
+ - If a {@code VkBufferView} is accessed using {@code OpImageWrite} as a result of this command, then the {@code Type} of the {@code Texel} operand of that instruction must have at least as many components as the buffer view’s format
+ - If a {@code VkImageView} with a {@code VkFormat} that has a 64-bit component width is accessed as a result of this command, the {@code SampledType} of the {@code OpTypeImage} operand of that instruction must have a {@code Width} of 64
+ - If a {@code VkImageView} with a {@code VkFormat} that has a component width less than 64-bit is accessed as a result of this command, the {@code SampledType} of the {@code OpTypeImage} operand of that instruction must have a {@code Width} of 32
+ - If a {@code VkBufferView} with a {@code VkFormat} that has a 64-bit component width is accessed as a result of this command, the {@code SampledType} of the {@code OpTypeImage} operand of that instruction must have a {@code Width} of 64
+ - If a {@code VkBufferView} with a {@code VkFormat} that has a component width less than 64-bit is accessed as a result of this command, the {@code SampledType} of the {@code OpTypeImage} operand of that instruction must have a {@code Width} of 32
+ - If the {@code sparseImageInt64Atomics} feature is not enabled, {@code VkImage} objects created with the #IMAGE_CREATE_SPARSE_RESIDENCY_BIT flag must not be accessed by atomic instructions through an {@code OpTypeImage} with a {@code SampledType} with a {@code Width} of 64 by this command
+ - If the {@code sparseImageInt64Atomics} feature is not enabled, {@code VkBuffer} objects created with the #BUFFER_CREATE_SPARSE_RESIDENCY_BIT flag must not be accessed by atomic instructions through an {@code OpTypeImage} with a {@code SampledType} with a {@code Width} of 64 by this command
+ - If {@code OpImageWeightedSampleQCOM} is used to sample a {@code VkImageView} as a result of this command, then the image view’s format features must contain #FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
+ - If {@code OpImageWeightedSampleQCOM} uses a {@code VkImageView} as a sample weight image as a result of this command, then the image view’s format features must contain #FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
+ - If {@code OpImageBoxFilterQCOM} is used to sample a {@code VkImageView} as a result of this command, then the image view’s format features must contain #FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
+ - If {@code OpImageBlockMatchSSDQCOM} is used to read from an {@code VkImageView} as a result of this command, then the image view’s format features must contain #FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
+ - If {@code OpImageBlockMatchSADQCOM} is used to read from an {@code VkImageView} as a result of this command, then the image view’s format features must contain #FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
+ - If {@code OpImageBlockMatchSADQCOM} or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation
+ - If {@code OpImageWeightedSampleQCOM}, {@code OpImageBoxFilterQCOM}, {@code OpImageBlockMatchSSDQCOM}, or {@code OpImageBlockMatchSADQCOM} uses a {@code VkSampler} as a result of this command, then the sampler must have been created with #SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
+ - If any command other than {@code OpImageWeightedSampleQCOM}, {@code OpImageBoxFilterQCOM}, {@code OpImageBlockMatchSSDQCOM}, or {@code OpImageBlockMatchSADQCOM} uses a {@code VkSampler} as a result of this command, then the sampler must not have been created with #SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
+ - Any shader invocation executed by this command must terminate
+ - The current render pass must be compatible with the {@code renderPass} member of the ##VkGraphicsPipelineCreateInfo structure specified when creating the {@code VkPipeline} bound to #PIPELINE_BIND_POINT_GRAPHICS
+ - The subpass index of the current render pass must be equal to the {@code subpass} member of the ##VkGraphicsPipelineCreateInfo structure specified when creating the {@code VkPipeline} bound to #PIPELINE_BIND_POINT_GRAPHICS
+ - If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set
+ - If any shader executed by this pipeline accesses an {@code OpTypeImage} variable with a {@code Dim} operand of {@code SubpassData}, it must be decorated with an {@code InputAttachmentIndex} that corresponds to a valid input attachment in the current subpass
+ - Input attachment views accessed in a subpass must be created with the same {@code VkFormat} as the corresponding subpass definition, and be created with a {@code VkImageView} that is compatible with the attachment referenced by the subpass' {@code pInputAttachments}[{@code InputAttachmentIndex}] in the currently bound {@code VkFramebuffer} as specified by Fragment Input Attachment Compatibility
+ - Memory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command
+ - If any recorded command in the current subpass will write to an image subresource as an attachment, this command must not read from the memory backing that image subresource in any other way than as an attachment
+ - If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
+ - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
+ - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be #STENCIL_OP_KEEP
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT dynamic state enabled then #CmdSetViewport() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR dynamic state enabled then #CmdSetScissor() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then #CmdSetLineWidth() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then #CmdSetDepthBias() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then #CmdSetBlendConstants() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then #CmdSetDepthBounds() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then #CmdSetStencilCompareMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then #CmdSetStencilWriteMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then #CmdSetStencilReference() must have been called in the current command buffer prior to this drawing command
+ - If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to ##VkPhysicalDeviceMultiviewProperties{@code ::maxMultiviewInstanceIndex}
+ - If the bound graphics pipeline was created with ##VkPipelineSampleLocationsStateCreateInfoEXT{@code ::sampleLocationsEnable} set to #TRUE and the current subpass has a depth/stencil attachment, then that attachment must have been created with the #IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled then #CmdSetSampleLocationsEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CULL_MODE dynamic state enabled then #CmdSetCullMode() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_FRONT_FACE dynamic state enabled then #CmdSetFrontFace() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then #CmdSetPrimitiveTopology() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then #CmdSetDepthTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_WRITE_ENABLE dynamic state enabled then #CmdSetDepthWriteEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_COMPARE_OP dynamic state enabled then #CmdSetDepthCompareOp() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE dynamic state enabled then #CmdSetDepthBoundsTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_TEST_ENABLE dynamic state enabled then #CmdSetStencilTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_OP dynamic state enabled then #CmdSetStencilOp() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, then #CmdSetViewportWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::scissorCount} of the pipeline
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, then #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::viewportCount} of the pipeline
+ - If the bound graphics pipeline state was created with both the #DYNAMIC_STATE_SCISSOR_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled then both #CmdSetViewportWithCount() and #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_W_SCALING_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportWScalingStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_W_SCALING_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportWScalingNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportShadingRateImageStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportShadingRatePaletteNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled and a ##VkPipelineViewportSwizzleStateCreateInfoNV structure chained from ##VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with ##VkPipelineViewportSwizzleStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled and a ##VkPipelineViewportExclusiveScissorStateCreateInfoNV structure chained from ##VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with ##VkPipelineViewportExclusiveScissorStateCreateInfoNV{@code ::exclusiveScissorCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE dynamic state enabled then #CmdSetRasterizerDiscardEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BIAS_ENABLE dynamic state enabled then #CmdSetDepthBiasEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_EXT dynamic state enabled then #CmdSetLogicOpEXT() must have been called in the current command buffer prior to this drawing command and the {@code logicOp} must be a valid {@code VkLogicOp} value
+ - If the {@code primitiveFragmentShadingRateWithMultipleViewports} limit is not supported, the bound graphics pipeline was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the {@code PrimitiveShadingRateKHR} built-in, then #CmdSetViewportWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must be 1
+ - If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s format features do not contain #FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the {@code blendEnable} member of the corresponding element of the {@code pAttachments} member of {@code pColorBlendState} must be #FALSE
+ - If rasterization is not disabled in the bound graphics pipeline, and none of the {@link AMDMixedAttachmentSamples VK_AMD_mixed_attachment_samples} extension, the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension, or the {@code multisampledRenderToSingleSampled} feature are enabled, then ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} must be the same as the current subpass color and/or depth/stencil attachments
+ - If the current render pass instance was begun with #CmdBeginRendering(), the {@code imageView} member of {@code pDepthAttachment} is not #NULL_HANDLE, and the {@code layout} member of {@code pDepthAttachment} is #IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the depth attachment
+ - If the current render pass instance was begun with #CmdBeginRendering(), the {@code imageView} member of {@code pStencilAttachment} is not #NULL_HANDLE, and the {@code layout} member of {@code pStencilAttachment} is #IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachment
+ - If the current render pass instance was begun with #CmdBeginRendering(), the {@code imageView} member of {@code pDepthAttachment} is not #NULL_HANDLE, and the {@code layout} member of {@code pDepthAttachment} is #IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, this command must not write any values to the depth attachment
+ - If the current render pass instance was begun with #CmdBeginRendering(), the {@code imageView} member of {@code pStencilAttachment} is not #NULL_HANDLE, and the {@code layout} member of {@code pStencilAttachment} is #IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachment
+ - If the current render pass instance was begun with #CmdBeginRendering(), the {@code imageView} member of {@code pDepthAttachment} is not #NULL_HANDLE, and the {@code layout} member of {@code pDepthAttachment} is #IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, this command must not write any values to the depth attachment
+ - If the current render pass instance was begun with #CmdBeginRendering(), the {@code imageView} member of {@code pStencilAttachment} is not #NULL_HANDLE, and the {@code layout} member of {@code pStencilAttachment} is #IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachment
+ - If the current render pass instance was begun with #CmdBeginRendering(), the currently bound graphics pipeline must have been created with a ##VkPipelineRenderingCreateInfo{@code ::viewMask} equal to ##VkRenderingInfo{@code ::viewMask}
+ - If the current render pass instance was begun with #CmdBeginRendering(), the currently bound graphics pipeline must have been created with a ##VkPipelineRenderingCreateInfo{@code ::colorAttachmentCount} equal to ##VkRenderingInfo{@code ::colorAttachmentCount}
+ - If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::colorAttachmentCount} greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} not equal to #NULL_HANDLE must have been created with a {@code VkFormat} equal to the corresponding element of ##VkPipelineRenderingCreateInfo{@code ::pColorAttachmentFormats} used to create the currently bound graphics pipeline
+ - If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::colorAttachmentCount} greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} equal to #NULL_HANDLE must have the corresponding element of ##VkPipelineRenderingCreateInfo{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to #FORMAT_UNDEFINED
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then #CmdSetColorWriteEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the ##VkPipelineColorBlendStateCreateInfo{@code ::attachmentCount} of the currently bound graphics pipeline
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command for each discard rectangle in ##VkPipelineDiscardRectangleStateCreateInfoEXT{@code ::discardRectangleCount}
+ - If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
+ - If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to #FORMAT_UNDEFINED
+ - If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
+ - If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to #FORMAT_UNDEFINED
+ - If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingFragmentShadingRateAttachmentInfoKHR{@code ::imageView} was not #NULL_HANDLE, the currently bound graphics pipeline must have been created with #PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
+ - If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingFragmentDensityMapAttachmentInfoEXT{@code ::imageView} was not #NULL_HANDLE, the currently bound graphics pipeline must have been created with #PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
+ - If the currently bound pipeline was created with a ##VkAttachmentSampleCountInfoAMD or ##VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with #CmdBeginRendering() with a ##VkRenderingInfo{@code ::colorAttachmentCount} parameter greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} not equal to #NULL_HANDLE must have been created with a sample count equal to the corresponding element of the {@code pColorAttachmentSamples} member of ##VkAttachmentSampleCountInfoAMD or ##VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline
+ - If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline was created with a ##VkAttachmentSampleCountInfoAMD or ##VkAttachmentSampleCountInfoNV structure, and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of the {@code depthStencilAttachmentSamples} member of ##VkAttachmentSampleCountInfoAMD or ##VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
+ - If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline was created with a ##VkAttachmentSampleCountInfoAMD or ##VkAttachmentSampleCountInfoNV structure, and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of the {@code depthStencilAttachmentSamples} member of ##VkAttachmentSampleCountInfoAMD or ##VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
+ - If the currently bound pipeline was created without a ##VkAttachmentSampleCountInfoAMD or ##VkAttachmentSampleCountInfoNV structure, and the {@code multisampledRenderToSingleSampled} feature is not enabled, and the current render pass instance was begun with #CmdBeginRendering() with a ##VkRenderingInfo{@code ::colorAttachmentCount} parameter greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} not equal to #NULL_HANDLE must have been created with a sample count equal to the value of ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} used to create the currently bound graphics pipeline
+ - If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline was created without a ##VkAttachmentSampleCountInfoAMD or ##VkAttachmentSampleCountInfoNV structure, and the {@code multisampledRenderToSingleSampled} feature is not enabled, and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} used to create the currently bound graphics pipeline must be equal to the sample count used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
+ - If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline was created without a ##VkAttachmentSampleCountInfoAMD or ##VkAttachmentSampleCountInfoNV structure, and the {@code multisampledRenderToSingleSampled} feature is not enabled, and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} used to create the currently bound graphics pipeline must be equal to the sample count used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
+ - If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline must have been created with a ##VkGraphicsPipelineCreateInfo{@code ::renderPass} equal to #NULL_HANDLE
+ - If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, rasterization discard must not be enabled
+ - If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, the bound graphics pipeline must not have been created with a non-zero value in ##VkPipelineRasterizationStateStreamCreateInfoEXT{@code ::rasterizationStream}
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_EXT dynamic state enabled then #CmdSetLineStippleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV dynamic state enabled then #CmdSetRepresentativeFragmentTestEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT state enabled and the last call to #CmdSetColorBlendEnableEXT() set {@code pColorBlendEnables} for any attachment to #TRUE, then for those attachments in the subpass the corresponding image view’s format features must contain #FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to #CmdSetRasterizationSamplesEXT() must follow the rules for a zero-attachment subpass
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the {@code samples} parameter in the last call to #CmdSetSampleMaskEXT() must be greater or equal to the ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT state and #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, then the {@code samples} parameter in the last call to #CmdSetSampleMaskEXT() must be greater or equal to the {@code rasterizationSamples} parameter in the last call to #CmdSetRasterizationSamplesEXT()
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and none of the {@link AMDMixedAttachmentSamples VK_AMD_mixed_attachment_samples} extension, {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension, or the {@code multisampledRenderToSingleSampled} feature is enabled, then the {@code rasterizationSamples} in the last call to #CmdSetRasterizationSamplesEXT() must be the same as the current subpass color and/or depth/stencil attachments
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command, and the attachments specified by the {@code firstAttachment} and {@code attachmentCount} parameters of {@code vkCmdSetColorBlendEnableEXT} calls must specify an enable for all active color attachments in the current subpass
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command, and the attachments specified by the {@code firstAttachment} and {@code attachmentCount} parameters of {@code vkCmdSetColorBlendEquationEXT} calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command, and the attachments specified by the {@code firstAttachment} and {@code attachmentCount} parameters of {@code vkCmdSetColorWriteMaskEXT} calls must specify the color write mask for all active color attachments in the current subpass
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command, and the attachments specified by the {@code firstAttachment} and {@code attachmentCount} parameters of {@code vkCmdSetColorBlendAdvancedEXT} calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT and #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic states enabled and the last calls to #CmdSetColorBlendEnableEXT() and #CmdSetColorBlendAdvancedEXT() have enabled advanced blending, then the number of active color attachments in the current subpass must not exceed {@code advancedBlendMaxColorAttachments}
+ - If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, and the bound graphics pipeline was created with #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT state enabled, the last call to #CmdSetRasterizationStreamEXT() must have set the {@code rasterizationStream} to zero
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the {@code sampleLocationsPerPixel} member of {@code pSampleLocationsInfo} in the last call to #CmdSetSampleLocationsEXT() must equal the {@code rasterizationSamples} member of the ##VkPipelineMultisampleStateCreateInfo structure the bound graphics pipeline has been created with
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, then the {@code sampleLocationsPerPixel} member of {@code pSampleLocationsInfo} in the last call to #CmdSetSampleLocationsEXT() must equal the {@code rasterizationSamples} parameter of the last call to #CmdSetRasterizationSamplesEXT()
+ - If the bound graphics pipeline was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), and the current subpass has a depth/stencil attachment, then that attachment must have been created with the #IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), then the {@code sampleLocationsInfo.sampleLocationGridSize.width} in the last call to #CmdSetSampleLocationsEXT() must evenly divide ##VkMultisamplePropertiesEXT{@code ::sampleLocationGridSize.width} as returned by #GetPhysicalDeviceMultisamplePropertiesEXT() with a {@code samples} parameter equaling {@code rasterizationSamples}
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), then the {@code sampleLocationsInfo.sampleLocationGridSize.height} in the last call to #CmdSetSampleLocationsEXT() must evenly divide ##VkMultisamplePropertiesEXT{@code ::sampleLocationGridSize.height} as returned by #GetPhysicalDeviceMultisamplePropertiesEXT() with a {@code samples} parameter equaling {@code rasterizationSamples}
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to #CmdSetCoverageModulationTableEnableNV() set {@code coverageModulationTableEnable} to #TRUE, then the {@code coverageModulationTableCount} parameter in the last call to #CmdSetCoverageModulationTableNV() must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
+ - If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
+ - If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by #GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV()
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportSwizzleStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportSwizzleNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
+ - If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if the current subpass has any color attachments and {@code rasterizationSamples} of the last call to #CmdSetRasterizationSamplesEXT() is greater than the number of color samples, then the pipeline {@code sampleShadingEnable} must be #FALSE
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_RECTANGULAR_EXT, then the {@code stippledRectangularLines} feature must be enabled
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_BRESENHAM_EXT, then the {@code stippledBresenhamLines} feature must be enabled
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT, then the {@code stippledSmoothLines} feature must be enabled
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_DEFAULT_EXT, then the {@code stippledRectangularLines} feature must be enabled and ##VkPhysicalDeviceLimits{@code ::strictLines} must be VK_TRUE
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to #CmdSetConservativeRasterizationModeEXT() must be #CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
+ - If the currently bound pipeline was created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT, then Mesh Shader Queries must not be active
+ - If dynamic state was inherited from ##VkCommandBufferInheritanceViewportScissorInfoNV, it must be set in the current command buffer prior to this drawing command
+
+
+
+ - The bound graphics pipeline must not have been created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT
+ - Transform Feedback Queries must not be active
+ - Primitives Generated Queries must not be active
+ - The {@code pipelineStatistics} member used to create any active Pipeline Statistics Query must not contain #QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT, #QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT, #QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT, #QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT, #QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT, #QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT, #QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT, #QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT, or #QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT
+ - The pipelineStatistics member used to create any active Pipeline Statistics Query must also not contain VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT, VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT
+ - {@code groupCountX} must be less than or equal to ##VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI{@code ::maxWorkGroupCount}[0]
+ - {@code groupCountY} must be less than or equal to ##VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI{@code ::maxWorkGroupCount}[1]
+ - {@code groupCountZ} must be less than or equal to ##VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI{@code ::maxWorkGroupCount}[2]
+ - The current pipeline bound to #PIPELINE_BIND_POINT_GRAPHICS must contain a shader stage using the {@code ClusterCullingHUAWEI} {@code Execution} {@code Model}.
+
+
+ Valid Usage (Implicit)
+
+ - {@code commandBuffer} must be a valid {@code VkCommandBuffer} handle
+ - {@code commandBuffer} must be in the recording state
+ - The {@code VkCommandPool} that {@code commandBuffer} was allocated from must support graphics operations
+ - This command must only be called inside of a render pass instance
+ - This command must only be called outside of a video coding scope
+
+
+ Host Synchronization
+
+ - Host access to {@code commandBuffer} must be externally synchronized
+ - Host access to the {@code VkCommandPool} that {@code commandBuffer} was allocated from must be externally synchronized
+
+
+ Command Properties
+
+ """,
+
+ VkCommandBuffer("commandBuffer", "the command buffer into which the command will be recorded."),
+ uint32_t("groupCountX", "the number of local workgroups to dispatch in the X dimension."),
+ uint32_t("groupCountY", "the number of local workgroups to dispatch in the Y dimension."),
+ uint32_t("groupCountZ", "the number of local workgroups to dispatch in the Z dimension.")
+ )
+
+ void(
+ "CmdDrawClusterIndirectHUAWEI",
+ """
+ Issue an indirect cluster culling draw into a command buffer.
+
+ C Specification
+ To record an indirect cluster culling drawing command, call:
+
+
+void vkCmdDrawClusterIndirectHUAWEI(
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset);
+
+ Description
+ {@code vkCmdDrawClusterIndirectHUAWEI} behaves similarly to #CmdDrawClusterHUAWEI() except that the parameters are read by the device from a buffer during execution. The parameters of the dispatch are encoded in a ##VkDispatchIndirectCommand structure taken from buffer starting at offset.
+
+ Valid Usage
+
+ - If a {@code VkSampler} created with {@code magFilter} or {@code minFilter} equal to #FILTER_LINEAR and {@code compareEnable} equal to #FALSE is used to sample a {@code VkImageView} as a result of this command, then the image view’s format features must contain #FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
+ - If a {@code VkSampler} created with {@code mipmapMode} equal to #SAMPLER_MIPMAP_MODE_LINEAR and {@code compareEnable} equal to #FALSE is used to sample a {@code VkImageView} as a result of this command, then the image view’s format features must contain #FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
+ - If a {@code VkImageView} is sampled with depth comparison, the image view’s format features must contain #FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
+ - If a {@code VkImageView} is accessed using atomic operations as a result of this command, then the image view’s format features must contain #FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
+ - If a {@code VkImageView} is sampled with #FILTER_CUBIC_EXT as a result of this command, then the image view’s format features must contain #FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
+ - Any {@code VkImageView} being sampled with #FILTER_CUBIC_EXT as a result of this command must have a {@code VkImageViewType} and format that supports cubic filtering, as specified by ##VkFilterCubicImageViewImageFormatPropertiesEXT{@code ::filterCubic} returned by {@code vkGetPhysicalDeviceImageFormatProperties2}
+ - Any {@code VkImageView} being sampled with #FILTER_CUBIC_EXT with a reduction mode of either #SAMPLER_REDUCTION_MODE_MIN or #SAMPLER_REDUCTION_MODE_MAX as a result of this command must have a {@code VkImageViewType} and format that supports cubic filtering together with minmax filtering, as specified by ##VkFilterCubicImageViewImageFormatPropertiesEXT{@code ::filterCubicMinmax} returned by {@code vkGetPhysicalDeviceImageFormatProperties2}
+ - Any {@code VkImage} created with a ##VkImageCreateInfo{@code ::flags} containing #IMAGE_CREATE_CORNER_SAMPLED_BIT_NV sampled as a result of this command must only be sampled using a {@code VkSamplerAddressMode} of #SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
+ - For any {@code VkImageView} being written as a storage image where the image format field of the {@code OpTypeImage} is {@code Unknown}, the view’s format features must contain #FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
+ - For any {@code VkImageView} being read as a storage image where the image format field of the {@code OpTypeImage} is {@code Unknown}, the view’s format features must contain #FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
+ - For any {@code VkBufferView} being written as a storage texel buffer where the image format field of the {@code OpTypeImage} is {@code Unknown}, the view’s buffer features must contain #FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
+ - Any {@code VkBufferView} being read as a storage texel buffer where the image format field of the {@code OpTypeImage} is {@code Unknown} then the view’s buffer features must contain #FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
+ - For each set n that is statically used by the {@code VkPipeline} bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a {@code VkPipelineLayout} that is compatible for set n, with the {@code VkPipelineLayout} used to create the current {@code VkPipeline}, as described in Pipeline Layout Compatibility
+ - If the {@code maintenance4} feature is not enabled, then for each push constant that is statically used by the {@code VkPipeline} bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a {@code VkPipelineLayout} that is compatible for push constants, with the {@code VkPipelineLayout} used to create the current {@code VkPipeline}, as described in Pipeline Layout Compatibility
+ - Descriptors in each bound descriptor set, specified via {@code vkCmdBindDescriptorSets}, must be valid if they are statically used by the {@code VkPipeline} bound to the pipeline bind point used by this command and the bound {@code VkPipeline} was not created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
+ - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdBindDescriptorSets}, the bound {@code VkPipeline} must have been created without #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
+ - Descriptors in bound descriptor buffers, specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, must be valid if they are dynamically used by the {@code VkPipeline} bound to the pipeline bind point used by this command and the bound {@code VkPipeline} was created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
+ - If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
+ - If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
+ - A valid pipeline must be bound to the pipeline bind point used by this command
+ - There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
+ - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
+ - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
+ - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions that includes a LOD bias or any offset values, in any shader stage
+ - If any stage of the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either #PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT or #PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT for {@code uniformBuffers}, and the {@code robustBufferAccess} feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point
+ - If any stage of the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either #PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT or #PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT for {@code storageBuffers}, and the {@code robustBufferAccess} feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point
+ - If {@code commandBuffer} is an unprotected command buffer and {@code protectedNoFault} is not supported, any resource accessed by the {@code VkPipeline} object bound to the pipeline bind point used by this command must not be a protected resource
+ - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} or {@code VkImageView} object that enables sampler Y′CBCR conversion, that object must only be used with {@code OpImageSample*} or {@code OpImageSparseSample*} instructions
+ - If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} or {@code VkImageView} object that enables sampler Y′CBCR conversion, that object must not use the {@code ConstOffset} and {@code Offset} operands
+ - If a {@code VkImageView} is accessed as a result of this command, then the image view’s {@code viewType} must match the {@code Dim} operand of the {@code OpTypeImage} as described in textures-operation-validation
+ - If a {@code VkImageView} is accessed as a result of this command, then the image view’s {@code format} must match the numeric format from the {@code Sampled} {@code Type} operand of the {@code OpTypeImage} as described in the SPIR-V Sampled Type column of the Interpretation of Numeric Format table
+ - If a {@code VkImageView} is accessed using {@code OpImageWrite} as a result of this command, then the {@code Type} of the {@code Texel} operand of that instruction must have at least as many components as the image view’s format
+ - If a {@code VkBufferView} is accessed using {@code OpImageWrite} as a result of this command, then the {@code Type} of the {@code Texel} operand of that instruction must have at least as many components as the buffer view’s format
+ - If a {@code VkImageView} with a {@code VkFormat} that has a 64-bit component width is accessed as a result of this command, the {@code SampledType} of the {@code OpTypeImage} operand of that instruction must have a {@code Width} of 64
+ - If a {@code VkImageView} with a {@code VkFormat} that has a component width less than 64-bit is accessed as a result of this command, the {@code SampledType} of the {@code OpTypeImage} operand of that instruction must have a {@code Width} of 32
+ - If a {@code VkBufferView} with a {@code VkFormat} that has a 64-bit component width is accessed as a result of this command, the {@code SampledType} of the {@code OpTypeImage} operand of that instruction must have a {@code Width} of 64
+ - If a {@code VkBufferView} with a {@code VkFormat} that has a component width less than 64-bit is accessed as a result of this command, the {@code SampledType} of the {@code OpTypeImage} operand of that instruction must have a {@code Width} of 32
+ - If the {@code sparseImageInt64Atomics} feature is not enabled, {@code VkImage} objects created with the #IMAGE_CREATE_SPARSE_RESIDENCY_BIT flag must not be accessed by atomic instructions through an {@code OpTypeImage} with a {@code SampledType} with a {@code Width} of 64 by this command
+ - If the {@code sparseImageInt64Atomics} feature is not enabled, {@code VkBuffer} objects created with the #BUFFER_CREATE_SPARSE_RESIDENCY_BIT flag must not be accessed by atomic instructions through an {@code OpTypeImage} with a {@code SampledType} with a {@code Width} of 64 by this command
+ - If {@code OpImageWeightedSampleQCOM} is used to sample a {@code VkImageView} as a result of this command, then the image view’s format features must contain #FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
+ - If {@code OpImageWeightedSampleQCOM} uses a {@code VkImageView} as a sample weight image as a result of this command, then the image view’s format features must contain #FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
+ - If {@code OpImageBoxFilterQCOM} is used to sample a {@code VkImageView} as a result of this command, then the image view’s format features must contain #FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
+ - If {@code OpImageBlockMatchSSDQCOM} is used to read from an {@code VkImageView} as a result of this command, then the image view’s format features must contain #FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
+ - If {@code OpImageBlockMatchSADQCOM} is used to read from an {@code VkImageView} as a result of this command, then the image view’s format features must contain #FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
+ - If {@code OpImageBlockMatchSADQCOM} or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation
+ - If {@code OpImageWeightedSampleQCOM}, {@code OpImageBoxFilterQCOM}, {@code OpImageBlockMatchSSDQCOM}, or {@code OpImageBlockMatchSADQCOM} uses a {@code VkSampler} as a result of this command, then the sampler must have been created with #SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
+ - If any command other than {@code OpImageWeightedSampleQCOM}, {@code OpImageBoxFilterQCOM}, {@code OpImageBlockMatchSSDQCOM}, or {@code OpImageBlockMatchSADQCOM} uses a {@code VkSampler} as a result of this command, then the sampler must not have been created with #SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
+ - Any shader invocation executed by this command must terminate
+ - The current render pass must be compatible with the {@code renderPass} member of the ##VkGraphicsPipelineCreateInfo structure specified when creating the {@code VkPipeline} bound to #PIPELINE_BIND_POINT_GRAPHICS
+ - The subpass index of the current render pass must be equal to the {@code subpass} member of the ##VkGraphicsPipelineCreateInfo structure specified when creating the {@code VkPipeline} bound to #PIPELINE_BIND_POINT_GRAPHICS
+ - If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set
+ - If any shader executed by this pipeline accesses an {@code OpTypeImage} variable with a {@code Dim} operand of {@code SubpassData}, it must be decorated with an {@code InputAttachmentIndex} that corresponds to a valid input attachment in the current subpass
+ - Input attachment views accessed in a subpass must be created with the same {@code VkFormat} as the corresponding subpass definition, and be created with a {@code VkImageView} that is compatible with the attachment referenced by the subpass' {@code pInputAttachments}[{@code InputAttachmentIndex}] in the currently bound {@code VkFramebuffer} as specified by Fragment Input Attachment Compatibility
+ - Memory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command
+ - If any recorded command in the current subpass will write to an image subresource as an attachment, this command must not read from the memory backing that image subresource in any other way than as an attachment
+ - If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
+ - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
+ - If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be #STENCIL_OP_KEEP
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT dynamic state enabled then #CmdSetViewport() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR dynamic state enabled then #CmdSetScissor() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then #CmdSetLineWidth() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then #CmdSetDepthBias() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then #CmdSetBlendConstants() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then #CmdSetDepthBounds() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then #CmdSetStencilCompareMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then #CmdSetStencilWriteMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then #CmdSetStencilReference() must have been called in the current command buffer prior to this drawing command
+ - If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to ##VkPhysicalDeviceMultiviewProperties{@code ::maxMultiviewInstanceIndex}
+ - If the bound graphics pipeline was created with ##VkPipelineSampleLocationsStateCreateInfoEXT{@code ::sampleLocationsEnable} set to #TRUE and the current subpass has a depth/stencil attachment, then that attachment must have been created with the #IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled then #CmdSetSampleLocationsEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CULL_MODE dynamic state enabled then #CmdSetCullMode() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_FRONT_FACE dynamic state enabled then #CmdSetFrontFace() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then #CmdSetPrimitiveTopology() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then #CmdSetDepthTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_WRITE_ENABLE dynamic state enabled then #CmdSetDepthWriteEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_COMPARE_OP dynamic state enabled then #CmdSetDepthCompareOp() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE dynamic state enabled then #CmdSetDepthBoundsTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_TEST_ENABLE dynamic state enabled then #CmdSetStencilTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_OP dynamic state enabled then #CmdSetStencilOp() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, then #CmdSetViewportWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::scissorCount} of the pipeline
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, then #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::viewportCount} of the pipeline
+ - If the bound graphics pipeline state was created with both the #DYNAMIC_STATE_SCISSOR_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled then both #CmdSetViewportWithCount() and #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_W_SCALING_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportWScalingStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_W_SCALING_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportWScalingNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportShadingRateImageStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportShadingRatePaletteNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled and a ##VkPipelineViewportSwizzleStateCreateInfoNV structure chained from ##VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with ##VkPipelineViewportSwizzleStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled and a ##VkPipelineViewportExclusiveScissorStateCreateInfoNV structure chained from ##VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with ##VkPipelineViewportExclusiveScissorStateCreateInfoNV{@code ::exclusiveScissorCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE dynamic state enabled then #CmdSetRasterizerDiscardEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BIAS_ENABLE dynamic state enabled then #CmdSetDepthBiasEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_EXT dynamic state enabled then #CmdSetLogicOpEXT() must have been called in the current command buffer prior to this drawing command and the {@code logicOp} must be a valid {@code VkLogicOp} value
+ - If the {@code primitiveFragmentShadingRateWithMultipleViewports} limit is not supported, the bound graphics pipeline was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the {@code PrimitiveShadingRateKHR} built-in, then #CmdSetViewportWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must be 1
+ - If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s format features do not contain #FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the {@code blendEnable} member of the corresponding element of the {@code pAttachments} member of {@code pColorBlendState} must be #FALSE
+ - If rasterization is not disabled in the bound graphics pipeline, and none of the {@link AMDMixedAttachmentSamples VK_AMD_mixed_attachment_samples} extension, the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension, or the {@code multisampledRenderToSingleSampled} feature are enabled, then ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} must be the same as the current subpass color and/or depth/stencil attachments
+ - If the current render pass instance was begun with #CmdBeginRendering(), the {@code imageView} member of {@code pDepthAttachment} is not #NULL_HANDLE, and the {@code layout} member of {@code pDepthAttachment} is #IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the depth attachment
+ - If the current render pass instance was begun with #CmdBeginRendering(), the {@code imageView} member of {@code pStencilAttachment} is not #NULL_HANDLE, and the {@code layout} member of {@code pStencilAttachment} is #IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachment
+ - If the current render pass instance was begun with #CmdBeginRendering(), the {@code imageView} member of {@code pDepthAttachment} is not #NULL_HANDLE, and the {@code layout} member of {@code pDepthAttachment} is #IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, this command must not write any values to the depth attachment
+ - If the current render pass instance was begun with #CmdBeginRendering(), the {@code imageView} member of {@code pStencilAttachment} is not #NULL_HANDLE, and the {@code layout} member of {@code pStencilAttachment} is #IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachment
+ - If the current render pass instance was begun with #CmdBeginRendering(), the {@code imageView} member of {@code pDepthAttachment} is not #NULL_HANDLE, and the {@code layout} member of {@code pDepthAttachment} is #IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, this command must not write any values to the depth attachment
+ - If the current render pass instance was begun with #CmdBeginRendering(), the {@code imageView} member of {@code pStencilAttachment} is not #NULL_HANDLE, and the {@code layout} member of {@code pStencilAttachment} is #IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachment
+ - If the current render pass instance was begun with #CmdBeginRendering(), the currently bound graphics pipeline must have been created with a ##VkPipelineRenderingCreateInfo{@code ::viewMask} equal to ##VkRenderingInfo{@code ::viewMask}
+ - If the current render pass instance was begun with #CmdBeginRendering(), the currently bound graphics pipeline must have been created with a ##VkPipelineRenderingCreateInfo{@code ::colorAttachmentCount} equal to ##VkRenderingInfo{@code ::colorAttachmentCount}
+ - If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::colorAttachmentCount} greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} not equal to #NULL_HANDLE must have been created with a {@code VkFormat} equal to the corresponding element of ##VkPipelineRenderingCreateInfo{@code ::pColorAttachmentFormats} used to create the currently bound graphics pipeline
+ - If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::colorAttachmentCount} greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} equal to #NULL_HANDLE must have the corresponding element of ##VkPipelineRenderingCreateInfo{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to #FORMAT_UNDEFINED
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then #CmdSetColorWriteEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the ##VkPipelineColorBlendStateCreateInfo{@code ::attachmentCount} of the currently bound graphics pipeline
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command for each discard rectangle in ##VkPipelineDiscardRectangleStateCreateInfoEXT{@code ::discardRectangleCount}
+ - If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
+ - If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to #FORMAT_UNDEFINED
+ - If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
+ - If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to #FORMAT_UNDEFINED
+ - If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingFragmentShadingRateAttachmentInfoKHR{@code ::imageView} was not #NULL_HANDLE, the currently bound graphics pipeline must have been created with #PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
+ - If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingFragmentDensityMapAttachmentInfoEXT{@code ::imageView} was not #NULL_HANDLE, the currently bound graphics pipeline must have been created with #PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
+ - If the currently bound pipeline was created with a ##VkAttachmentSampleCountInfoAMD or ##VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with #CmdBeginRendering() with a ##VkRenderingInfo{@code ::colorAttachmentCount} parameter greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} not equal to #NULL_HANDLE must have been created with a sample count equal to the corresponding element of the {@code pColorAttachmentSamples} member of ##VkAttachmentSampleCountInfoAMD or ##VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline
+ - If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline was created with a ##VkAttachmentSampleCountInfoAMD or ##VkAttachmentSampleCountInfoNV structure, and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of the {@code depthStencilAttachmentSamples} member of ##VkAttachmentSampleCountInfoAMD or ##VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
+ - If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline was created with a ##VkAttachmentSampleCountInfoAMD or ##VkAttachmentSampleCountInfoNV structure, and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of the {@code depthStencilAttachmentSamples} member of ##VkAttachmentSampleCountInfoAMD or ##VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
+ - If the currently bound pipeline was created without a ##VkAttachmentSampleCountInfoAMD or ##VkAttachmentSampleCountInfoNV structure, and the {@code multisampledRenderToSingleSampled} feature is not enabled, and the current render pass instance was begun with #CmdBeginRendering() with a ##VkRenderingInfo{@code ::colorAttachmentCount} parameter greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} not equal to #NULL_HANDLE must have been created with a sample count equal to the value of ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} used to create the currently bound graphics pipeline
+ - If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline was created without a ##VkAttachmentSampleCountInfoAMD or ##VkAttachmentSampleCountInfoNV structure, and the {@code multisampledRenderToSingleSampled} feature is not enabled, and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} used to create the currently bound graphics pipeline must be equal to the sample count used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
+ - If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline was created without a ##VkAttachmentSampleCountInfoAMD or ##VkAttachmentSampleCountInfoNV structure, and the {@code multisampledRenderToSingleSampled} feature is not enabled, and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} used to create the currently bound graphics pipeline must be equal to the sample count used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
+ - If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline must have been created with a ##VkGraphicsPipelineCreateInfo{@code ::renderPass} equal to #NULL_HANDLE
+ - If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, rasterization discard must not be enabled
+ - If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, the bound graphics pipeline must not have been created with a non-zero value in ##VkPipelineRasterizationStateStreamCreateInfoEXT{@code ::rasterizationStream}
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_EXT dynamic state enabled then #CmdSetLineStippleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV dynamic state enabled then #CmdSetRepresentativeFragmentTestEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT state enabled and the last call to #CmdSetColorBlendEnableEXT() set {@code pColorBlendEnables} for any attachment to #TRUE, then for those attachments in the subpass the corresponding image view’s format features must contain #FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to #CmdSetRasterizationSamplesEXT() must follow the rules for a zero-attachment subpass
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the {@code samples} parameter in the last call to #CmdSetSampleMaskEXT() must be greater or equal to the ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT state and #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, then the {@code samples} parameter in the last call to #CmdSetSampleMaskEXT() must be greater or equal to the {@code rasterizationSamples} parameter in the last call to #CmdSetRasterizationSamplesEXT()
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and none of the {@link AMDMixedAttachmentSamples VK_AMD_mixed_attachment_samples} extension, {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension, or the {@code multisampledRenderToSingleSampled} feature is enabled, then the {@code rasterizationSamples} in the last call to #CmdSetRasterizationSamplesEXT() must be the same as the current subpass color and/or depth/stencil attachments
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command, and the attachments specified by the {@code firstAttachment} and {@code attachmentCount} parameters of {@code vkCmdSetColorBlendEnableEXT} calls must specify an enable for all active color attachments in the current subpass
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command, and the attachments specified by the {@code firstAttachment} and {@code attachmentCount} parameters of {@code vkCmdSetColorBlendEquationEXT} calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command, and the attachments specified by the {@code firstAttachment} and {@code attachmentCount} parameters of {@code vkCmdSetColorWriteMaskEXT} calls must specify the color write mask for all active color attachments in the current subpass
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command, and the attachments specified by the {@code firstAttachment} and {@code attachmentCount} parameters of {@code vkCmdSetColorBlendAdvancedEXT} calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT and #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic states enabled and the last calls to #CmdSetColorBlendEnableEXT() and #CmdSetColorBlendAdvancedEXT() have enabled advanced blending, then the number of active color attachments in the current subpass must not exceed {@code advancedBlendMaxColorAttachments}
+ - If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, and the bound graphics pipeline was created with #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT state enabled, the last call to #CmdSetRasterizationStreamEXT() must have set the {@code rasterizationStream} to zero
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the {@code sampleLocationsPerPixel} member of {@code pSampleLocationsInfo} in the last call to #CmdSetSampleLocationsEXT() must equal the {@code rasterizationSamples} member of the ##VkPipelineMultisampleStateCreateInfo structure the bound graphics pipeline has been created with
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, then the {@code sampleLocationsPerPixel} member of {@code pSampleLocationsInfo} in the last call to #CmdSetSampleLocationsEXT() must equal the {@code rasterizationSamples} parameter of the last call to #CmdSetRasterizationSamplesEXT()
+ - If the bound graphics pipeline was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), and the current subpass has a depth/stencil attachment, then that attachment must have been created with the #IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), then the {@code sampleLocationsInfo.sampleLocationGridSize.width} in the last call to #CmdSetSampleLocationsEXT() must evenly divide ##VkMultisamplePropertiesEXT{@code ::sampleLocationGridSize.width} as returned by #GetPhysicalDeviceMultisamplePropertiesEXT() with a {@code samples} parameter equaling {@code rasterizationSamples}
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), then the {@code sampleLocationsInfo.sampleLocationGridSize.height} in the last call to #CmdSetSampleLocationsEXT() must evenly divide ##VkMultisamplePropertiesEXT{@code ::sampleLocationGridSize.height} as returned by #GetPhysicalDeviceMultisamplePropertiesEXT() with a {@code samples} parameter equaling {@code rasterizationSamples}
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to #CmdSetCoverageModulationTableEnableNV() set {@code coverageModulationTableEnable} to #TRUE, then the {@code coverageModulationTableCount} parameter in the last call to #CmdSetCoverageModulationTableNV() must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
+ - If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
+ - If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by #GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV()
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportSwizzleStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportSwizzleNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
+ - If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if the current subpass has any color attachments and {@code rasterizationSamples} of the last call to #CmdSetRasterizationSamplesEXT() is greater than the number of color samples, then the pipeline {@code sampleShadingEnable} must be #FALSE
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_RECTANGULAR_EXT, then the {@code stippledRectangularLines} feature must be enabled
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_BRESENHAM_EXT, then the {@code stippledBresenhamLines} feature must be enabled
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT, then the {@code stippledSmoothLines} feature must be enabled
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_DEFAULT_EXT, then the {@code stippledRectangularLines} feature must be enabled and ##VkPhysicalDeviceLimits{@code ::strictLines} must be VK_TRUE
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to #CmdSetConservativeRasterizationModeEXT() must be #CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
+ - If the currently bound pipeline was created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT, then Mesh Shader Queries must not be active
+ - If dynamic state was inherited from ##VkCommandBufferInheritanceViewportScissorInfoNV, it must be set in the current command buffer prior to this drawing command
+
+
+
+ - The bound graphics pipeline must not have been created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT
+ - Transform Feedback Queries must not be active
+ - Primitives Generated Queries must not be active
+ - The {@code pipelineStatistics} member used to create any active Pipeline Statistics Query must not contain #QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT, #QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT, #QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT, #QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT, #QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT, #QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT, #QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT, #QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT, or #QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT
+
+
+
+ - If {@code buffer} is non-sparse then it must be bound completely and contiguously to a single {@code VkDeviceMemory} object
+ - {@code buffer} must have been created with the #BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
+ - {@code offset} must be a multiple of 4
+ - {@code commandBuffer} must not be a protected command buffer
+
+
+
+ - If the {@code multiDrawIndirect} feature is not enabled, {@code drawCount} must be 0 or 1
+ - {@code drawCount} must be less than or equal to ##VkPhysicalDeviceLimits{@code ::maxDrawIndirectCount}
+ - The current pipeline bound to #PIPELINE_BIND_POINT_GRAPHICS must contain a shader stage using the {@code ClusterCullingHUAWEI} {@code Execution} {@code Model}.
+
+
+ Valid Usage (Implicit)
+
+ - {@code commandBuffer} must be a valid {@code VkCommandBuffer} handle
+ - {@code buffer} must be a valid {@code VkBuffer} handle
+ - {@code commandBuffer} must be in the recording state
+ - The {@code VkCommandPool} that {@code commandBuffer} was allocated from must support graphics operations
+ - This command must only be called inside of a render pass instance
+ - This command must only be called outside of a video coding scope
+ - Both of {@code buffer}, and {@code commandBuffer} must have been created, allocated, or retrieved from the same {@code VkDevice}
+
+
+ Host Synchronization
+
+ - Host access to {@code commandBuffer} must be externally synchronized
+ - Host access to the {@code VkCommandPool} that {@code commandBuffer} was allocated from must be externally synchronized
+
+
+ Command Properties
+
+ """,
+
+ VkCommandBuffer("commandBuffer", "the command buffer into which the command is recorded."),
+ VkBuffer("buffer", "the buffer containing draw parameters."),
+ VkDeviceSize("offset", "the byte offset into {@code buffer} where parameters begin.")
+ )
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/HUAWEI_subpass_shading.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/HUAWEI_subpass_shading.kt
index 4a9ba0368f..a449782e18 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/HUAWEI_subpass_shading.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/HUAWEI_subpass_shading.kt
@@ -382,7 +382,6 @@ val HUAWEI_subpass_shading = "HUAWEISubpassShading".nativeClassVK("HUAWEI_subpas
If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
A valid pipeline must be bound to the pipeline bind point used by this command
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_android_surface.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_android_surface.kt
new file mode 100644
index 0000000000..a0f02f721a
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_android_surface.kt
@@ -0,0 +1,148 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package vulkan.templates
+
+import org.lwjgl.generator.*
+import vulkan.*
+
+val KHR_android_surface = "KHRAndroidSurface".nativeClassVK("KHR_android_surface", type = "instance", postfix = "KHR") {
+ documentation =
+ """
+ The {@code VK_KHR_android_surface} extension is an instance extension. It provides a mechanism to create a {@code VkSurfaceKHR} object (defined by the {@link KHRSurface VK_KHR_surface} extension) that refers to an {@code ANativeWindow}, Android’s native surface type. The {@code ANativeWindow} represents the producer endpoint of any buffer queue, regardless of consumer endpoint. Common consumer endpoints for {@code ANativeWindows} are the system window compositor, video encoders, and application-specific compositors importing the images through a {@code SurfaceTexture}.
+
+ VK_KHR_android_surface
+
+ - Name String
+ - {@code VK_KHR_android_surface}
+
+ - Extension Type
+ - Instance extension
+
+ - Registered Extension Number
+ - 9
+
+ - Revision
+ - 6
+
+ - Extension and Version Dependencies
+
+ - Requires support for Vulkan 1.0
+ - Requires {@link KHRSurface VK_KHR_surface} to be enabled
+
+
+ - Contact
+
+
+
+ Other Extension Metadata
+
+ - Last Modified Date
+ - 2016-01-14
+
+ - IP Status
+ - No known IP claims.
+
+ - Contributors
+
+ - Patrick Doane, Blizzard
+ - Jason Ekstrand, Intel
+ - Ian Elliott, LunarG
+ - Courtney Goeltzenleuchter, LunarG
+ - Jesse Hall, Google
+ - James Jones, NVIDIA
+ - Antoine Labour, Google
+ - Jon Leech, Khronos
+ - David Mao, AMD
+ - Norbert Nopper, Freescale
+ - Alon Or-bach, Samsung
+ - Daniel Rakos, AMD
+ - Graham Sellers, AMD
+ - Ray Smith, ARM
+ - Jeff Vigil, Qualcomm
+ - Chia-I Wu, LunarG
+
+
+ """
+
+ IntConstant(
+ "The extension specification version.",
+
+ "KHR_ANDROID_SURFACE_SPEC_VERSION".."6"
+ )
+
+ StringConstant(
+ "The extension name.",
+
+ "KHR_ANDROID_SURFACE_EXTENSION_NAME".."VK_KHR_android_surface"
+ )
+
+ EnumConstant(
+ "Extends {@code VkStructureType}.",
+
+ "STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR".."1000008000"
+ )
+
+ VkResult(
+ "CreateAndroidSurfaceKHR",
+ """
+ Create a {@code VkSurfaceKHR} object for an Android native window.
+
+ C Specification
+ To create a {@code VkSurfaceKHR} object for an Android native window, call:
+
+
+VkResult vkCreateAndroidSurfaceKHR(
+ VkInstance instance,
+ const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+ Description
+ During the lifetime of a surface created using a particular {@code ANativeWindow} handle any attempts to create another surface for the same {@code ANativeWindow} and any attempts to connect to the same {@code ANativeWindow} through other platform mechanisms will fail.
+
+ Note
+ In particular, only one {@code VkSurfaceKHR} can exist at a time for a given window. Similarly, a native window cannot be used by both a {@code VkSurfaceKHR} and {@code EGLSurface} simultaneously.
+
+
+ If successful, {@code vkCreateAndroidSurfaceKHR} increments the {@code ANativeWindow}’s reference count, and {@code vkDestroySurfaceKHR} will decrement it.
+
+ On Android, when a swapchain’s {@code imageExtent} does not match the surface’s {@code currentExtent}, the presentable images will be scaled to the surface’s dimensions during presentation. {@code minImageExtent} is (1,1)
, and {@code maxImageExtent} is the maximum image size supported by the consumer. For the system compositor, {@code currentExtent} is the window size (i.e. the consumer’s preferred size).
+
+ Valid Usage (Implicit)
+
+ - {@code instance} must be a valid {@code VkInstance} handle
+ - {@code pCreateInfo} must be a valid pointer to a valid ##VkAndroidSurfaceCreateInfoKHR structure
+ - If {@code pAllocator} is not {@code NULL}, {@code pAllocator} must be a valid pointer to a valid ##VkAllocationCallbacks structure
+ - {@code pSurface} must be a valid pointer to a {@code VkSurfaceKHR} handle
+
+
+ Return Codes
+
+ - On success, this command returns
+
+
+ - On failure, this command returns
+
+ - #ERROR_OUT_OF_HOST_MEMORY
+ - #ERROR_OUT_OF_DEVICE_MEMORY
+ - #ERROR_NATIVE_WINDOW_IN_USE_KHR
+
+
+
+ See Also
+ ##VkAllocationCallbacks, ##VkAndroidSurfaceCreateInfoKHR
+ """,
+
+ VkInstance("instance", "the instance to associate the surface with."),
+ VkAndroidSurfaceCreateInfoKHR.const.p("pCreateInfo", "a pointer to a ##VkAndroidSurfaceCreateInfoKHR structure containing parameters affecting the creation of the surface object."),
+ nullable..VkAllocationCallbacks.const.p("pAllocator", "the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see Memory Allocation)."),
+ Check(1)..VkSurfaceKHR.p("pSurface", "a pointer to a {@code VkSurfaceKHR} handle in which the created surface object is returned.")
+ )
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_create_renderpass2.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_create_renderpass2.kt
index 58bef90880..d204d3cc19 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_create_renderpass2.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_create_renderpass2.kt
@@ -19,7 +19,7 @@ val KHR_create_renderpass2 = "KHRCreateRenderpass2".nativeClassVK("KHR_create_re
Elements of ##VkRenderPassMultiviewCreateInfo{@code ::pViewMasks} are now specified in ##VkSubpassDescription2KHR{@code ::viewMask}.
Elements of ##VkRenderPassMultiviewCreateInfo{@code ::pViewOffsets} are now specified in ##VkSubpassDependency2KHR{@code ::viewOffset}.
##VkRenderPassMultiviewCreateInfo{@code ::correlationMaskCount} and ##VkRenderPassMultiviewCreateInfo{@code ::pCorrelationMasks} are directly specified in ##VkRenderPassCreateInfo2KHR.
- ##VkInputAttachmentAspectReference{@code ::aspectMask} is now specified in the relevant input attachment description in ##VkAttachmentDescription2KHR{@code ::aspectMask}
+ ##VkInputAttachmentAspectReference{@code ::aspectMask} is now specified in the relevant input attachment reference in ##VkAttachmentReference2KHR{@code ::aspectMask}
The details of these mappings are explained fully in the new structures.
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_format_feature_flags2.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_format_feature_flags2.kt
index 45ea0b2248..7e176d05ac 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_format_feature_flags2.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_format_feature_flags2.kt
@@ -22,7 +22,7 @@ val KHR_format_feature_flags2 = "KHRFormatFeatureFlags2".nativeClassVK("KHR_form
#FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR indicates that an implementation supports depth comparison performed by {@code OpImage*Dref*} instructions on a given {@code VkFormat}. Previously the result of executing a {@code OpImage*Dref*} instruction on an image view, where the {@code format} was not one of the depth/stencil formats with a depth component, was undefined. This bit clarifies on which formats such instructions can be used.
- Prior to version 2 of this extension, implementations exposing the {@code shaderStorageImageReadWithoutFormat} and {@code shaderStorageImageWriteWithoutFormat} implementations may not report #FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR and #FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR in ##VkFormatProperties3KHR{@code ::bufferFeatures}. Despite this, buffer reads/writes are supported as intended by the original features.
+ Prior to version 2 of this extension, implementations exposing the {@code shaderStorageImageReadWithoutFormat} and {@code shaderStorageImageWriteWithoutFormat} features may not report #FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR and #FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR in ##VkFormatProperties3KHR{@code ::bufferFeatures}. Despite this, buffer reads/writes are supported as intended by the original features.
Promotion to Vulkan 1.3
Functionality in this extension is included in core Vulkan 1.3, with the KHR suffix omitted. The original type, enum and command names are still available as aliases of the core functionality.
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_ray_tracing_maintenance1.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_ray_tracing_maintenance1.kt
index f631f85dcf..6910a67e33 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_ray_tracing_maintenance1.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_ray_tracing_maintenance1.kt
@@ -167,7 +167,6 @@ val KHR_ray_tracing_maintenance1 = "KHRRayTracingMaintenance1".nativeClassVK("KH
If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
A valid pipeline must be bound to the pipeline bind point used by this command
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_ray_tracing_pipeline.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_ray_tracing_pipeline.kt
index 22ac981722..f6cd8ad0d6 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_ray_tracing_pipeline.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_ray_tracing_pipeline.kt
@@ -303,7 +303,6 @@ val KHR_ray_tracing_pipeline = "KHRRayTracingPipeline".nativeClassVK("KHR_ray_tr
If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
A valid pipeline must be bound to the pipeline bind point used by this command
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -533,9 +532,11 @@ val KHR_ray_tracing_pipeline = "KHRRayTracingPipeline".nativeClassVK("KHR_ray_tr
{@code firstGroup} must be less than the number of shader groups in {@code pipeline}
The sum of {@code firstGroup} and {@code groupCount} must be less than or equal to the number of shader groups in {@code pipeline}
{@code dataSize} must be at least ##VkPhysicalDeviceRayTracingPipelinePropertiesKHR::shaderGroupHandleSize × groupCount
- {@code pipeline} must not have been created with #PIPELINE_CREATE_LIBRARY_BIT_KHR
+ If the pipelineLibraryGroupHandles feature is not enabled, {@code pipeline} must not have been created with #PIPELINE_CREATE_LIBRARY_BIT_KHR
+ If {@code pipeline} was created with #PIPELINE_CREATE_LIBRARY_BIT_KHR and the pipelineLibraryGroupHandles feature is enabled applications can query group handles from that pipeline, even if the pipeline is a library and is never bound to a command buffer. These group handles remain bitwise identical for any {@code pipeline} which references the pipeline library. Group indices are assigned as-if the pipeline was created without #PIPELINE_CREATE_LIBRARY_BIT_KHR.
+
Valid Usage (Implicit)
- {@code device} must be a valid {@code VkDevice} handle
@@ -596,9 +597,11 @@ val KHR_ray_tracing_pipeline = "KHRRayTracingPipeline".nativeClassVK("KHR_ray_tr
- {@code dataSize} must be at least
##VkPhysicalDeviceRayTracingPipelinePropertiesKHR::shaderGroupHandleCaptureReplaySize × groupCount
- ##VkPhysicalDeviceRayTracingPipelineFeaturesKHR{@code ::rayTracingPipelineShaderGroupHandleCaptureReplay} must be enabled to call this function
- {@code pipeline} must have been created with a {@code flags} that included #PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR
- - {@code pipeline} must not have been created with #PIPELINE_CREATE_LIBRARY_BIT_KHR
+ - If the pipelineLibraryGroupHandles feature is not enabled, {@code pipeline} must not have been created with #PIPELINE_CREATE_LIBRARY_BIT_KHR
+ If {@code pipeline} was created with #PIPELINE_CREATE_LIBRARY_BIT_KHR and the pipelineLibraryGroupHandles feature is enabled applications can query capture replay group handles from that pipeline. The capture replay handle remains bitwise identical for any {@code pipeline} which references the pipeline library. Group indices are assigned as-if the pipeline was created without #PIPELINE_CREATE_LIBRARY_BIT_KHR.
+
Valid Usage (Implicit)
- {@code device} must be a valid {@code VkDevice} handle
@@ -673,7 +676,6 @@ val KHR_ray_tracing_pipeline = "KHRRayTracingPipeline".nativeClassVK("KHR_ray_tr
- If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
- A valid pipeline must be bound to the pipeline bind point used by this command
- - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
- There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_surface.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_surface.kt
index 8fbbbd4381..b2d5d7ede0 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_surface.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_surface.kt
@@ -205,7 +205,7 @@ val KHR_surface = "KHRSurface".nativeClassVK("KHR_surface", type = "instance", p
Note
- For a traditional "Linear" or non-gamma transfer function color space use #COLOR_SPACE_PASS_THROUGH_EXT.
+ For a traditional “{@code Linear}” or non-gamma transfer function color space use #COLOR_SPACE_PASS_THROUGH_EXT.
The color components of non-linear color space swap chain images must have had the appropriate transfer function applied. The color space selected for the swap chain image will not affect the processing of data written into the image by the implementation. Vulkan requires that all implementations support the sRGB transfer function by use of an SRGB pixel format. Other transfer functions, such as SMPTE 170M or SMPTE2084, can be performed by the application shader. This extension defines enums for {@code VkColorSpaceKHR} that correspond to the following color spaces:
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_video_decode_h264.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_video_decode_h264.kt
similarity index 57%
rename from modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_video_decode_h264.kt
rename to modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_video_decode_h264.kt
index 7d8885bae7..bd6fdf8be8 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_video_decode_h264.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_video_decode_h264.kt
@@ -8,15 +8,19 @@ package vulkan.templates
import org.lwjgl.generator.*
import vulkan.*
-val EXT_video_decode_h264 = "EXTVideoDecodeH264".nativeClassVK("EXT_video_decode_h264", type = "device", postfix = "EXT") {
+val KHR_video_decode_h264 = "KHRVideoDecodeH264".nativeClassVK("KHR_video_decode_h264", type = "device", postfix = "KHR") {
documentation =
"""
This extension builds upon the {@link KHRVideoDecodeQueue VK_KHR_video_decode_queue} extension by adding support for decoding elementary video stream sequences compliant with the H.264/AVC video compression standard.
- VK_EXT_video_decode_h264
+ Note
+ This extension was promoted to {@code KHR} from the provisional extension {@code VK_EXT_video_decode_h264}.
+
+
+ VK_KHR_video_decode_h264
- Name String
- - {@code VK_EXT_video_decode_h264}
+ - {@code VK_KHR_video_decode_h264}
- Extension Type
- Device extension
@@ -25,25 +29,27 @@ val EXT_video_decode_h264 = "EXTVideoDecodeH264".nativeClassVK("EXT_video_decode
- 41
- Revision
- - 7
+ - 8
- Extension and Version Dependencies
- Requires support for Vulkan 1.0
- Requires {@link KHRVideoDecodeQueue VK_KHR_video_decode_queue} to be enabled for any device-level functionality
- - This is a provisional extension and must be used with caution. See the description of provisional header files for enablement and stability details.
- Contact
+
+ - Extension Proposal
+ - VK_KHR_video_decode_h264
Other Extension Metadata
- Last Modified Date
- - 2022-09-18
+ - 2022-09-29
- IP Status
- No known IP claims.
@@ -66,49 +72,49 @@ val EXT_video_decode_h264 = "EXTVideoDecodeH264".nativeClassVK("EXT_video_decode
IntConstant(
"The extension specification version.",
- "EXT_VIDEO_DECODE_H264_SPEC_VERSION".."7"
+ "KHR_VIDEO_DECODE_H264_SPEC_VERSION".."8"
)
StringConstant(
"The extension name.",
- "EXT_VIDEO_DECODE_H264_EXTENSION_NAME".."VK_EXT_video_decode_h264"
+ "KHR_VIDEO_DECODE_H264_EXTENSION_NAME".."VK_KHR_video_decode_h264"
)
EnumConstant(
"Extends {@code VkStructureType}.",
- "STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT".."1000040000",
- "STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT".."1000040001",
- "STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_EXT".."1000040003",
- "STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT".."1000040004",
- "STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT".."1000040005",
- "STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT".."1000040006"
+ "STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR".."1000040000",
+ "STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR".."1000040001",
+ "STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR".."1000040003",
+ "STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR".."1000040004",
+ "STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR".."1000040005",
+ "STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR".."1000040006"
)
EnumConstant(
"Extends {@code VkVideoCodecOperationFlagBitsKHR}.",
- "VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT".enum(0x00000001)
+ "VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR".enum(0x00000001)
)
EnumConstant(
"""
- VkVideoDecodeH264PictureLayoutFlagBitsEXT - H.264 video decode picture layout flags
+ VkVideoDecodeH264PictureLayoutFlagBitsKHR - H.264 video decode picture layout flags
Description
- - #VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT specifies support for progressive content. This flag has the value 0.
- - #VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT specifies support for or use of a picture layout for interlaced content where all lines belonging to the first field are decoded to the even-numbered lines within the picture resource, and all lines belonging to the second field are decoded to the odd-numbered lines within the picture resource.
- - #VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT specifies support for or use of a picture layout for interlaced content where all lines belonging to the first field are grouped together in a single plane, followed by another plane containing all lines belonging to the second field.
+ - #VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR specifies support for progressive content. This flag has the value 0.
+ - #VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR specifies support for or use of a picture layout for interlaced content where all lines belonging to the top field are decoded to the even-numbered lines within the picture resource, and all lines belonging to the bottom field are decoded to the odd-numbered lines within the picture resource.
+ - #VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR specifies support for or use of a picture layout for interlaced content where all lines belonging to a field are grouped together in a single image subregion, and the two fields comprising the frame can be stored in separate image subregions of the same image subresource or in separate image subresources.
See Also
- ##VkVideoDecodeH264ProfileInfoEXT
+ ##VkVideoDecodeH264ProfileInfoKHR
""",
- "VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT".."0",
- "VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT".enum(0x00000001),
- "VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT".enum(0x00000002)
+ "VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR".."0",
+ "VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR".enum(0x00000001),
+ "VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR".enum(0x00000002)
)
}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_video_decode_h265.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_video_decode_h265.kt
similarity index 66%
rename from modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_video_decode_h265.kt
rename to modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_video_decode_h265.kt
index 4ae391ca03..75850f6038 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/EXT_video_decode_h265.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_video_decode_h265.kt
@@ -8,15 +8,19 @@ package vulkan.templates
import org.lwjgl.generator.*
import vulkan.*
-val EXT_video_decode_h265 = "EXTVideoDecodeH265".nativeClassVK("EXT_video_decode_h265", type = "device", postfix = "EXT") {
+val KHR_video_decode_h265 = "KHRVideoDecodeH265".nativeClassVK("KHR_video_decode_h265", type = "device", postfix = "KHR") {
documentation =
"""
This extension builds upon the {@link KHRVideoDecodeQueue VK_KHR_video_decode_queue} extension by adding support for decoding elementary video stream sequences compliant with the H.265/HEVC video compression standard.
- VK_EXT_video_decode_h265
+ Note
+ This extension was promoted to {@code KHR} from the provisional extension {@code VK_EXT_video_decode_h265}.
+
+
+ VK_KHR_video_decode_h265
- Name String
- - {@code VK_EXT_video_decode_h265}
+ - {@code VK_KHR_video_decode_h265}
- Extension Type
- Device extension
@@ -25,19 +29,21 @@ val EXT_video_decode_h265 = "EXTVideoDecodeH265".nativeClassVK("EXT_video_decode
- 188
- Revision
- - 6
+ - 7
- Extension and Version Dependencies
- Requires support for Vulkan 1.0
- Requires {@link KHRVideoDecodeQueue VK_KHR_video_decode_queue} to be enabled for any device-level functionality
- - This is a provisional extension and must be used with caution. See the description of provisional header files for enablement and stability details.
- Contact
+
+ - Extension Proposal
+ - VK_KHR_video_decode_h265
Other Extension Metadata
@@ -65,29 +71,29 @@ val EXT_video_decode_h265 = "EXTVideoDecodeH265".nativeClassVK("EXT_video_decode
IntConstant(
"The extension specification version.",
- "EXT_VIDEO_DECODE_H265_SPEC_VERSION".."6"
+ "KHR_VIDEO_DECODE_H265_SPEC_VERSION".."7"
)
StringConstant(
"The extension name.",
- "EXT_VIDEO_DECODE_H265_EXTENSION_NAME".."VK_EXT_video_decode_h265"
+ "KHR_VIDEO_DECODE_H265_EXTENSION_NAME".."VK_KHR_video_decode_h265"
)
EnumConstant(
"Extends {@code VkStructureType}.",
- "STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT".."1000187000",
- "STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT".."1000187001",
- "STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT".."1000187002",
- "STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_EXT".."1000187003",
- "STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT".."1000187004",
- "STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT".."1000187005"
+ "STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR".."1000187000",
+ "STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR".."1000187001",
+ "STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR".."1000187002",
+ "STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR".."1000187003",
+ "STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR".."1000187004",
+ "STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR".."1000187005"
)
EnumConstant(
"Extends {@code VkVideoCodecOperationFlagBitsKHR}.",
- "VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT".enum(0x00000002)
+ "VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR".enum(0x00000002)
)
}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_video_decode_queue.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_video_decode_queue.kt
index 9c4def6779..22a1538f30 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_video_decode_queue.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_video_decode_queue.kt
@@ -29,26 +29,28 @@ val KHR_video_decode_queue = "KHRVideoDecodeQueue".nativeClassVK("KHR_video_deco
- 25
- Revision
- - 6
+ - 7
- Extension and Version Dependencies
- Requires support for Vulkan 1.0
- Requires {@link KHRVideoQueue VK_KHR_video_queue} to be enabled for any device-level functionality
- Requires {@link KHRSynchronization2 VK_KHR_synchronization2} to be enabled for any device-level functionality
- - This is a provisional extension and must be used with caution. See the description of provisional header files for enablement and stability details.
- Contact
+
+ - Extension Proposal
+ - VK_KHR_video_decode_queue
Other Extension Metadata
- Last Modified Date
- - 2022-08-12
+ - 2022-09-29
- IP Status
- No known IP claims.
@@ -70,7 +72,7 @@ val KHR_video_decode_queue = "KHRVideoDecodeQueue".nativeClassVK("KHR_video_deco
IntConstant(
"The extension specification version.",
- "KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION".."6"
+ "KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION".."7"
)
StringConstant(
@@ -149,14 +151,14 @@ val KHR_video_decode_queue = "KHRVideoDecodeQueue".nativeClassVK("KHR_video_deco
Description
- - #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR - reports the implementation supports using the same Video Picture Resource for decode DPB and decode output.
- - #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR - reports the implementation supports using distinct Video Picture Resources for decode DPB and decode output.
+ - #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR indicates support for using the same video picture resource as the reconstructed picture and decode output picture in a video decode operation.
+ - #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR indicates support for using distinct video picture resources as the reconstructed picture and decode output picture in a video decode operation.
- An implementation must report at least one of #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR or #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR as supported.
+ Implementations are only required to support one of #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR and #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR. Accordingly, applications should handle both cases to maximize portability.
Note:
- If both #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR and #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR are supported, an application may choose to create separate images for decode DPB and decode output in the case where linear tiling is required for output but optimal tiling must still be used for DPB. This avoids scheduling layout transitions at the expense of extra overhead during decoding to write both images and the additional memory requirements.
+ If both #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR and #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR are supported, an application can choose to create separate images for decode DPB and decode output. E.g. in cases when linear tiling is preferred (and supported) for the decode output picture and the DPB requires optimal tiling, this avoids the need for a separate copy at the expense of additional memory bandwidth requirements during decoding.
""",
@@ -189,19 +191,150 @@ val KHR_video_decode_queue = "KHRVideoDecodeQueue".nativeClassVK("KHR_video_deco
void(
"CmdDecodeVideoKHR",
"""
- Decode a frame.
+ Launch a video decode operation.
C Specification
- To decode a frame, call:
+ To launch video decode operations, call:
void vkCmdDecodeVideoKHR(
VkCommandBuffer commandBuffer,
const VkVideoDecodeInfoKHR* pDecodeInfo);
+ Description
+ Each call issues one or more video decode operations. The implicit parameter {@code opCount} corresponds to the number of video decode operations issued by the command. After calling this command, the active query index of each active query is incremented by {@code opCount}.
+
+ Currently each call to this command results in the issue of a single video decode operation.
+
+
+ - Active Reference Picture Information
+
+ - The image subregion within the image subresource referred to by the video picture resource used as the reference picture.
+ - The DPB slot index the reference picture is associated with.
+ - The codec-specific reference information related to the reference picture.
+
+
+
+
+ - Reconstructed Picture Information
+
+ - The image subregion within the image subresource referred to by the video picture resource used as the reconstructed picture.
+ - The DPB slot index to activate with the reconstructed picture.
+ - The codec-specific reference information related to the reconstructed picture.
+
+
+
+
+ - Decode Output Picture Information
+
+ - The image subregion within the image subresource referred to by the video picture resource used as the decode output picture.
+ - The codec-specific picture information related to the decode output picture.
+
+
+
+ Several limiting values are defined below that are referenced by the relevant valid usage statements of this command.
+
+
+ -
+ Let {@code uint32_t activeReferencePictureCount} be the size of the list of active reference pictures used by the video decode operation. Unless otherwise defined, {@code activeReferencePictureCount} is set to the value of {@code pDecodeInfo→referenceSlotCount}.
+
+ -
+ If the bound video session was created with an H.264 decode profile, then let {@code activeReferencePictureCount} be the value of {@code pDecodeInfo→referenceSlotCount} plus the number of elements of the {@code pDecodeInfo→pReferenceSlots} array that have a ##VkVideoDecodeH264DpbSlotInfoKHR structure included in their {@code pNext} chain with both {@code pStdReferenceInfo→flags.top_field_flag} and {@code pStdReferenceInfo→flags.bottom_field_flag} set.
+
+
+
+
+ -
+ Let {@code VkOffset2D codedOffsetGranularity} be the minimum alignment requirement for the coded offset of video picture resources. Unless otherwise defined, the value of the {@code x} and {@code y} members of {@code codedOffsetGranularity} are 0.
+
+ - If the bound video session was created with an H.264 decode profile with a ##VkVideoDecodeH264ProfileInfoKHR{@code ::pictureLayout} of #VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR, then {@code codedOffsetGranularity} is equal to ##VkVideoDecodeH264CapabilitiesKHR{@code ::fieldOffsetGranularity}, as returned by #GetPhysicalDeviceVideoCapabilitiesKHR() for that video profile.
+
+
+ -
+ Let {@code uint32_t dpbFrameUseCount[]} be an array of size {@code maxDpbSlots}, where {@code maxDpbSlots} is the ##VkVideoSessionCreateInfoKHR{@code ::maxDpbSlots} the bound video session was created with, with each element indicating the number of times a frame associated with the corresponding DPB slot index is referred to by the video coding operation. Let the initial value of each element of the array be 0.
+
+ - If {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, then {@code dpbFrameUseCount[i]} is incremented by one, where {@code i} equals {@code pDecodeInfo→pSetupReferenceSlot→slotIndex}. If the bound video session object was created with an H.264 decode profile, then {@code dpbFrameUseCount[i]} is decremented by one if either {@code pStdReferenceInfo→flags.top_field_flag} or {@code pStdReferenceInfo→flags.bottom_field_flag} is set in the ##VkVideoDecodeH264DpbSlotInfoKHR structure in the {@code pDecodeInfo→pSetupReferenceSlot→pNext} chain.
+ - For each element of {@code pDecodeInfo→pReferenceSlots}, {@code dpbFrameUseCount[i]} is incremented by one, where {@code i} equals the {@code slotIndex} member of the corresponding element. If the bound video session object was created with an H.264 decode profile, then {@code dpbFrameUseCount[i]} is decremented by one if either {@code pStdReferenceInfo→flags.top_field_flag} or {@code pStdReferenceInfo→flags.bottom_field_flag} is set in the ##VkVideoDecodeH264DpbSlotInfoKHR structure in the {@code pNext} chain of the corresponding element of {@code pDecodeInfo→pReferenceSlots}.
+
+
+ -
+ Let {@code uint32_t dpbTopFieldUseCount[]} and {@code uint32_t dpbBottomFieldUseCount[]} be arrays of size {@code maxDpbSlots}, where {@code maxDpbSlots} is the ##VkVideoSessionCreateInfoKHR{@code ::maxDpbSlots} the bound video session was created with, with each element indicating the number of times the top field or the bottom field, respectively, associated with the corresponding DPB slot index is referred to by the video coding operation. Let the initial value of each element of the arrays be 0.
+
+ -
+ If the bound video session object was created with an H.264 decode profile and {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, then perform the following:
+
+ - If {@code pStdReferenceInfo→flags.top_field_flag} is set in the ##VkVideoDecodeH264DpbSlotInfoKHR structure in the {@code pDecodeInfo→pSetupReferenceSlot→pNext} chain, then {@code dpbTopFieldUseCount[i]} is incremented by one, where {@code i} equals {@code pDecodeInfo→pSetupReferenceSlot→slotIndex}.
+ - If {@code pStdReferenceInfo→flags.bottom_field_flag} is set in the ##VkVideoDecodeH264DpbSlotInfoKHR structure in the {@code pDecodeInfo→pSetupReferenceSlot→pNext} chain, then {@code dpbBottomFieldUseCount[i]} is incremented by one, where {@code i} equals {@code pDecodeInfo→pSetupReferenceSlot→slotIndex}.
+
+
+ -
+ If the bound video session object was created with an H.264 decode profile, then perform the following for each element of {@code pDecodeInfo→pReferenceSlots}:
+
+ - If {@code pStdReferenceInfo→flags.top_field_flag} is set in the ##VkVideoDecodeH264DpbSlotInfoKHR structure in the {@code pNext} chain of the element, then {@code dpbTopFieldUseCount[i]} is incremented by one, where {@code i} equals the {@code slotIndex} member of the element.
+ - If {@code pStdReferenceInfo→flags.bottom_field_flag} is set in the ##VkVideoDecodeH264DpbSlotInfoKHR structure in the {@code pNext} chain of the element, then {@code dpbBottomFieldUseCount[i]} is incremented by one, where {@code i} equals the {@code slotIndex} member of the element.
+
+
+
+
+
+
Valid Usage
- - The bound video session object must not be in uninitialized state
+ - The bound video session must not be in uninitialized state at the time the command is executed on the device
+ - For each active query, the active query index corresponding to the query type of that query plus {@code opCount} must be less than or equal to the last activatable query index corresponding to the query type of that query plus one
+ - {@code pDecodeInfo→srcBuffer} must be compatible with the video profile the bound video session was created with
+ - If {@code commandBuffer} is an unprotected command buffer and {@code protectedNoFault} is not supported, then {@code pDecodeInfo→srcBuffer} must not be a protected buffer
+ - If {@code commandBuffer} is a protected command buffer and {@code protectedNoFault} is not supported, then {@code pDecodeInfo→srcBuffer} must be a protected buffer
+ - {@code pDecodeInfo→srcBufferOffset} must be an integer multiple of ##VkVideoCapabilitiesKHR{@code ::minBitstreamBufferOffsetAlignment}, as returned by #GetPhysicalDeviceVideoCapabilitiesKHR() for the video profile the bound video session was created with
+ - {@code pDecodeInfo→srcBufferRange} must be an integer multiple of ##VkVideoCapabilitiesKHR{@code ::minBitstreamBufferSizeAlignment}, as returned by #GetPhysicalDeviceVideoCapabilitiesKHR() for the video profile the bound video session was created with
+ - If {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL} and ##VkVideoDecodeCapabilitiesKHR{@code ::flags} does not include #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR, as returned by #GetPhysicalDeviceVideoCapabilitiesKHR() for the video profile the bound video session was created with, then the video picture resources specified by {@code pDecodeInfo→dstPictureResource} and {@code pDecodeInfo→pSetupReferenceSlot→pPictureResource} must not match
+ - If {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL} and ##VkVideoDecodeCapabilitiesKHR{@code ::flags} does not include #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR, as returned by #GetPhysicalDeviceVideoCapabilitiesKHR() for the video profile the bound video session was created with, then the video picture resources specified by {@code pDecodeInfo→dstPictureResource} and {@code pDecodeInfo→pSetupReferenceSlot→pPictureResource} must match
+ - {@code pDecodeInfo→dstPictureResource.imageViewBinding} must be compatible with the video profile the bound video session was created with
+ - The format of {@code pDecodeInfo→dstPictureResource.imageViewBinding} must match the ##VkVideoSessionCreateInfoKHR{@code ::pictureFormat} the bound video session was created with
+ - {@code pDecodeInfo→dstPictureResource.codedOffset} must be an integer multiple of {@code codedOffsetGranularity}
+ - {@code pDecodeInfo→dstPictureResource.codedExtent} must be between {@code minCodedExtent} and {@code maxCodedExtent}, inclusive, the bound video session was created with
+ - {@code pDecodeInfo→dstPictureResource.imageViewBinding} must have been created with #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR
+ - If {@code commandBuffer} is an unprotected command buffer and {@code protectedNoFault} is not supported, then {@code pDecodeInfo→dstPictureResource.imageViewBinding} must not have been created from a protected image
+ - If {@code commandBuffer} is a protected command buffer and {@code protectedNoFault} is not supported, then {@code pDecodeInfo→dstPictureResource.imageViewBinding} must have been created from a protected image
+ - If {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, then {@code pDecodeInfo→pSetupReferenceSlot→slotIndex} must be less than the ##VkVideoSessionCreateInfoKHR{@code ::maxDpbSlots} specified when the bound video session was created
+ - If {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, then {@code pDecodeInfo→pSetupReferenceSlot→pPictureResource→codedOffset} must be an integer multiple of {@code codedOffsetGranularity}
+ - If {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, then {@code pDecodeInfo→pSetupReferenceSlot→pPictureResource} must match one of the bound reference picture resource
+ - {@code activeReferencePictureCount} must be less than or equal to the ##VkVideoSessionCreateInfoKHR{@code ::maxActiveReferencePictures} specified when the bound video session was created
+ - The {@code slotIndex} member of each element of {@code pDecodeInfo→pReferenceSlots} must be less than the ##VkVideoSessionCreateInfoKHR{@code ::maxDpbSlots} specified when the bound video session was created
+ - The {@code codedOffset} member of the ##VkVideoPictureResourceInfoKHR structure pointed to by the {@code pPictureResource} member of each element of {@code pDecodeInfo→pReferenceSlots} must be an integer multiple of {@code codedOffsetGranularity}
+ - The {@code pPictureResource} member of each element of {@code pDecodeInfo→pReferenceSlots} must match one of the bound reference picture resource associated with the DPB slot index specified in the {@code slotIndex} member of that element
+ - Each video picture resource corresponding to the {@code pPictureResource} member specified in the elements of {@code pDecodeInfo→pReferenceSlots} must be unique within {@code pDecodeInfo→pReferenceSlots}
+ - All elements of {@code dpbFrameUseCount} must be less than or equal to 1
+ - All elements of {@code dpbTopFieldUseCount} must be less than or equal to 1
+ - All elements of {@code dpbBottomFieldUseCount} must be less than or equal to 1
+ - If {@code pDecodeInfo→pSetupReferenceSlot} is {@code NULL} or {@code pDecodeInfo→pSetupReferenceSlot→pPictureResource} does not refer to the same image subresource as {@code pDecodeInfo→dstPictureResource}, then the image subresource referred to by {@code pDecodeInfo→dstPictureResource} must be in the #IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR layout at the time the video decode operation is executed on the device
+ - If {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL} and {@code pDecodeInfo→pSetupReferenceSlot→pPictureResource} refers to the same image subresource as {@code pDecodeInfo→dstPictureResource}, then the image subresource referred to by {@code pDecodeInfo→dstPictureResource} must be in the #IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR layout at the time the video decode operation is executed on the device
+ - If {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, then the image subresource referred to by {@code pDecodeInfo→pSetupReferenceSlot→pPictureResource} must be in the #IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR layout at the time the video decode operation is executed on the device
+ - The image subresource referred to by the {@code pPictureResource} member of each element of {@code pDecodeInfo→pReferenceSlots} must be in the #IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR layout at the time the video decode operation is executed on the device
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then the {@code pNext} chain of {@code pDecodeInfo} must include a ##VkVideoDecodeH264PictureInfoKHR structure
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR but was not created with interlaced frame support, then the decode output picture must represent a frame
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then all elements of the {@code pSliceOffsets} member of the ##VkVideoDecodeH264PictureInfoKHR structure included in the {@code pNext} chain of {@code pDecodeInfo} must be less than {@code pDecodeInfo→srcBufferRange}
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then the bound video session parameters object must contain a {@code StdVideoH264SequenceParameterSet} entry with {@code seq_parameter_set_id} matching {@code StdVideoDecodeH264PictureInfo}{@code ::seq_parameter_set_id} that is provided in the {@code pStdPictureInfo} member of the ##VkVideoDecodeH264PictureInfoKHR structure included in the {@code pNext} chain of {@code pDecodeInfo}
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then the bound video session parameters object must contain a {@code StdVideoH264PictureParameterSet} entry with {@code seq_parameter_set_id} and {@code pic_parameter_set_id} matching {@code StdVideoDecodeH264PictureInfo}{@code ::seq_parameter_set_id} and {@code StdVideoDecodeH264PictureInfo}{@code ::pic_parameter_set_id}, respectively, that are provided in the {@code pStdPictureInfo} member of the ##VkVideoDecodeH264PictureInfoKHR structure included in the {@code pNext} chain of {@code pDecodeInfo}
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR and {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, then the {@code pNext} chain of {@code pDecodeInfo→pSetupReferenceSlot} must include a ##VkVideoDecodeH264DpbSlotInfoKHR structure
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR but was not created with interlaced frame support, and {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, then the reconstructed picture must represent a frame
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then the {@code pNext} chain of each element of {@code pDecodeInfo→pReferenceSlots} must include a ##VkVideoDecodeH264DpbSlotInfoKHR structure
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR but was not created with interlaced frame support, then each active reference picture corresponding to the elements of {@code pDecodeInfo→pReferenceSlots} must represent a frame
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, and the decode output picture represents a frame, then the reconstructed picture must also represent a frame
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, and the decode output picture represents a top field, then the reconstructed picture must also represent a top field
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, and the decode output picture represents a bottom field, then the reconstructed picture must also represent a bottom field
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR and an active reference picture corresponding to any element of {@code pDecodeInfo→pReferenceSlots} represents a frame, then the DPB slot index of the bound video session specified by the {@code slotIndex} member of that element must be currently associated with a frame picture matching the video picture resource specified by the {@code pPictureResource} member of the same element at the time the command is executed on the device
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR and an active reference picture corresponding to any element of {@code pDecodeInfo→pReferenceSlots} represents a top field, then the DPB slot index of the bound video session specified by the {@code slotIndex} member of that element must be currently associated with a top field picture matching the video picture resource specified by the {@code pPictureResource} member of the same element at the time the command is executed on the device
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR and an active reference picture corresponding to any element of {@code pDecodeInfo→pReferenceSlots} represents a bottom field, then the DPB slot index of the bound video session specified by the {@code slotIndex} member of that element must be currently associated with a bottom field picture matching the video picture resource specified by the {@code pPictureResource} member of the same element at the time the command is executed on the device
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the {@code pNext} chain of {@code pDecodeInfo} must include a ##VkVideoDecodeH265PictureInfoKHR structure
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then all elements of the {@code pSliceSegmentOffsets} member of the ##VkVideoDecodeH265PictureInfoKHR structure included in the {@code pNext} chain of {@code pDecodeInfo} must be less than {@code pDecodeInfo→srcBufferRange}
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the bound video session parameters object must contain a {@code StdVideoH265VideoParameterSet} entry with {@code vps_video_parameter_set_id} matching {@code StdVideoDecodeH265PictureInfo}{@code ::sps_video_parameter_set_id} that is provided in the {@code pStdPictureInfo} member of the ##VkVideoDecodeH265PictureInfoKHR structure included in the {@code pNext} chain of {@code pDecodeInfo}
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the bound video session parameters object must contain a {@code StdVideoH265SequenceParameterSet} entry with {@code sps_video_parameter_set_id} and {@code sps_seq_parameter_set_id} matching {@code StdVideoDecodeH265PictureInfo}{@code ::sps_video_parameter_set_id} and {@code StdVideoDecodeH265PictureInfo}{@code ::pps_seq_parameter_set_id}, respectively, that are provided in the {@code pStdPictureInfo} member of the ##VkVideoDecodeH265PictureInfoKHR structure included in the {@code pNext} chain of {@code pDecodeInfo}
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the bound video session parameters object must contain a {@code StdVideoH265PictureParameterSet} entry with {@code sps_video_parameter_set_id}, {@code pps_seq_parameter_set_id}, and {@code pps_pic_parameter_set_id} matching {@code StdVideoDecodeH265PictureInfo}{@code ::sps_video_parameter_set_id}, {@code StdVideoDecodeH265PictureInfo}{@code ::pps_seq_parameter_set_id}, and {@code StdVideoDecodeH265PictureInfo}{@code ::pps_pic_parameter_set_id}, respectively, that are provided in the {@code pStdPictureInfo} member of the ##VkVideoDecodeH265PictureInfoKHR structure included in the {@code pNext} chain of {@code pDecodeInfo}
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR and {@code pDecodeInfo→pSetupReferenceSlot} is not {@code NULL}, then the {@code pNext} chain of {@code pDecodeInfo→pSetupReferenceSlot} must include a ##VkVideoDecodeH265DpbSlotInfoKHR structure
+ - If the bound video session was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the {@code pNext} chain of each element of {@code pDecodeInfo→pReferenceSlots} must include a ##VkVideoDecodeH265DpbSlotInfoKHR structure
Valid Usage (Implicit)
@@ -231,7 +364,7 @@ val KHR_video_decode_queue = "KHRVideoDecodeQueue".nativeClassVK("KHR_video_deco
##VkVideoDecodeInfoKHR
""",
- VkCommandBuffer("commandBuffer", "the command buffer to be filled with this function for decode frame command."),
- VkVideoDecodeInfoKHR.const.p("pDecodeInfo", "a pointer to a ##VkVideoDecodeInfoKHR structure.")
+ VkCommandBuffer("commandBuffer", "the command buffer in which to record the command."),
+ VkVideoDecodeInfoKHR.const.p("pDecodeInfo", "a pointer to a ##VkVideoDecodeInfoKHR structure specifying the parameters of the video decode operations.")
)
}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_video_encode_queue.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_video_encode_queue.kt
index 3043cc0f98..4f1398a0e1 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_video_encode_queue.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_video_encode_queue.kt
@@ -249,7 +249,7 @@ val KHR_video_encode_queue = "KHRVideoEncodeQueue".nativeClassVK("KHR_video_enco
- #VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR specifies the default tuning mode.
- #VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR specifies that video encoding is tuned for high quality. When using this tuning mode, the implementation may compromise the latency of video encoding operations to improve quality.
- #VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR specifies that video encoding is tuned for low latency. When using this tuning mode, the implementation may compromise quality to increase the performance and lower the latency of video encode operations.
- - #VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR specifies that video encoding is tuned for ultra-low latency. When using this tuning mode, the implementation may compromise quality to maximimize the performance and minimize the latency of video encoding operations.
+ - #VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR specifies that video encoding is tuned for ultra-low latency. When using this tuning mode, the implementation may compromise quality to maximize the performance and minimize the latency of video encoding operations.
- #VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR specifies that video encoding is tuned for lossless encoding. When using this tuning mode, video encode operations produce lossless output.
@@ -270,13 +270,23 @@ val KHR_video_encode_queue = "KHRVideoEncodeQueue".nativeClassVK("KHR_video_enco
Encode operation for bitstream generation.
C Specification
- To launch an encode operation that results in bitstream generation, call:
+ To launch video encode operations, call:
void vkCmdEncodeVideoKHR(
VkCommandBuffer commandBuffer,
const VkVideoEncodeInfoKHR* pEncodeInfo);
+ Description
+ Each call issues one or more video encode operations. The implicit parameter {@code opCount} corresponds to the number of video encode operations issued by the command. After calling this command, the active query index of each active query is incremented by {@code opCount}.
+
+ Currently each call to this command results in the issue of a single video encode operation.
+
+ Valid Usage
+
+
Valid Usage (Implicit)
- {@code commandBuffer} must be a valid {@code VkCommandBuffer} handle
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_video_queue.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_video_queue.kt
index aee007c13f..d1f454701c 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_video_queue.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_video_queue.kt
@@ -34,26 +34,28 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
- 24
- Revision
- - 7
+ - 8
- Extension and Version Dependencies
- Requires support for Vulkan 1.1
- Requires {@link KHRGetPhysicalDeviceProperties2 VK_KHR_get_physical_device_properties2} to be enabled for any device-level functionality
- Requires {@link KHRSynchronization2 VK_KHR_synchronization2} to be enabled for any device-level functionality
- - This is a provisional extension and must be used with caution. See the description of provisional header files for enablement and stability details.
- Contact
+
+ - Extension Proposal
+ - VK_KHR_video_queue
Other Extension Metadata
- Last Modified Date
- - 2022-09-26
+ - 2022-09-29
- IP Status
- No known IP claims.
@@ -75,7 +77,7 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
IntConstant(
"The extension specification version.",
- "KHR_VIDEO_QUEUE_SPEC_VERSION".."7"
+ "KHR_VIDEO_QUEUE_SPEC_VERSION".."8"
)
StringConstant(
@@ -138,15 +140,13 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
EnumConstant(
"""
- VkVideoCodecOperationFlagBitsKHR - Video codec operation types
+ VkVideoCodecOperationFlagBitsKHR - Video codec operation bits
Description
- Each decode or encode codec-specific extension extends this enumeration with the appropriate bit corresponding to the extension’s codec operation:
-
- #VIDEO_CODEC_OPERATION_NONE_KHR indicates no support for any video codec operations.
- - #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT specifies support for H.264 video decode operations.
- - #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT specifies support for H.265 video decode operations.
+ - #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR specifies support for H.264 video decode operations.
+ - #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR specifies support for H.265 video decode operations.
- #VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT specifies support for H.264 video encode operations.
- #VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT specifies support for H.265 video encode operations.
@@ -160,14 +160,14 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
EnumConstant(
"""
- VkVideoChromaSubsamplingFlagBitsKHR - Video chroma subsampling
+ VkVideoChromaSubsamplingFlagBitsKHR - Video format chroma subsampling bits
Description
- - #VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR - the format is monochrome.
- - #VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR - the format is 4:2:0 chroma subsampled. The two chroma components are each subsampled at a factor of 2 both horizontally and vertically.
- - #VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR - the format is 4:2:2 chroma subsampled. The two chroma components are sampled at half the sample rate of luma. The horizontal chroma resolution is halved.
- - #VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR - the format is 4:4:4 chroma sampled. Each of the three YCbCr components have the same sample rate, thus there is no chroma subsampling.
+ - #VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR specifies that the format is monochrome.
+ - #VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR specified that the format is 4:2:0 chroma subsampled, i.e. the two chroma components are sampled horizontally and vertically at half the sample rate of the luma component.
+ - #VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR - the format is 4:2:2 chroma subsampled, i.e. the two chroma components are sampled horizontally at half the sample rate of luma component.
+ - #VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR - the format is 4:4:4 chroma sampled, i.e. all three components of the Y′CBCR format are sampled at the same rate, thus there is no chroma subsampling.
""",
@@ -180,13 +180,13 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
EnumConstant(
"""
- VkVideoComponentBitDepthFlagBitsKHR - Video component bit depth
+ VkVideoComponentBitDepthFlagBitsKHR - Video format component bit depth
Description
- - #VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR - the format component bit depth is 8 bits.
- - #VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR - the format component bit depth is 10 bits.
- - #VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR - the format component bit depth is 12 bits.
+ - #VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR specifies a component bit depth of 8 bits.
+ - #VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR specifies a component bit depth of 10 bits.
+ - #VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR specifies a component bit depth of 12 bits.
""",
@@ -198,12 +198,12 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
EnumConstant(
"""
- VkVideoCapabilityFlagBitsKHR - Video Decode and Encode Capability Flags
+ VkVideoCapabilityFlagBitsKHR - Video decode and encode capability bits
Description
- - #VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR - the decode or encode session supports protected content.
- - #VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR - the DPB or Reconstructed Video Picture Resources for the video session may be created as a separate {@code VkImage} for each DPB picture. If not supported, the DPB must be created as single multi-layered image where each layer represents one of the DPB Video Picture Resources.
+ - #VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR specifies that video sessions support producing and consuming protected content.
+ - #VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR specifies that the video picture resources associated with the DPB slots of a video session can be backed by separate {@code VkImage} objects. If this capability flag is not present, then all DPB slots of a video session must be associated with video picture resources backed by the same {@code VkImage} object (e.g. using different layers of the same image).
""",
@@ -213,11 +213,11 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
EnumConstant(
"""
- VkVideoSessionCreateFlagBitsKHR - Video decode or encode video session creation flags
+ VkVideoSessionCreateFlagBitsKHR - Video session creation flags
Description
- - #VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR - create the video session for use with protected video content
+ - #VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR specifies that the video session uses protected video content.
""",
@@ -259,10 +259,10 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
VkResult(
"GetPhysicalDeviceVideoCapabilitiesKHR",
"""
- Query video decode or encode capabilities.
+ Query video coding capabilities.
C Specification
- To query video decode or encode capabilities for a specific codec, call:
+ To query video coding capabilities for a specific video profile, call:
VkResult vkGetPhysicalDeviceVideoCapabilitiesKHR(
@@ -270,6 +270,19 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
const VkVideoProfileInfoKHR* pVideoProfile,
VkVideoCapabilitiesKHR* pCapabilities);
+ Description
+ If the video profile described by {@code pVideoProfile} is supported by the implementation, then this command returns #SUCCESS and {@code pCapabilities} is filled with the capabilities supported with the specified video profile. Otherwise, one of the video-profile-specific error codes are returned.
+
+ Valid Usage
+
+ - If {@code pVideoProfile→videoCodecOperation} specifies a decode operation, then the {@code pNext} chain of {@code pCapabilities} must include a ##VkVideoDecodeCapabilitiesKHR structure
+ - If {@code pVideoProfile→videoCodecOperation} is #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then the {@code pNext} chain of {@code pCapabilities} must include a ##VkVideoDecodeH264CapabilitiesKHR structure
+ - If {@code pVideoProfile→videoCodecOperation} is #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the {@code pNext} chain of {@code pCapabilities} must include a ##VkVideoDecodeH265CapabilitiesKHR structure
+ - If {@code pVideoProfile→videoCodecOperation} specifies an encode operation, then the {@code pNext} chain of {@code pCapabilities} must include a ##VkVideoEncodeCapabilitiesKHR structure
+ - If {@code pVideoProfile→videoCodecOperation} is #VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT, then the {@code pNext} chain of {@code pCapabilities} must include a ##VkVideoEncodeH264CapabilitiesEXT structure
+ - If {@code pVideoProfile→videoCodecOperation} is #VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT, then the {@code pNext} chain of {@code pCapabilities} must include a ##VkVideoEncodeH265CapabilitiesEXT structure
+
+
Valid Usage (Implicit)
- {@code physicalDevice} must be a valid {@code VkPhysicalDevice} handle
@@ -299,18 +312,18 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
##VkVideoCapabilitiesKHR, ##VkVideoProfileInfoKHR
""",
- VkPhysicalDevice("physicalDevice", "the physical device whose video decode or encode capabilities will be queried."),
- VkVideoProfileInfoKHR.const.p("pVideoProfile", "a pointer to a ##VkVideoProfileInfoKHR structure with a chained codec-operation specific video profile structure."),
+ VkPhysicalDevice("physicalDevice", "the physical device from which to query the video decode or encode capabilities."),
+ VkVideoProfileInfoKHR.const.p("pVideoProfile", "a pointer to a ##VkVideoProfileInfoKHR structure."),
VkVideoCapabilitiesKHR.p("pCapabilities", "a pointer to a ##VkVideoCapabilitiesKHR structure in which the capabilities are returned.")
)
VkResult(
"GetPhysicalDeviceVideoFormatPropertiesKHR",
"""
- Query supported Video Decode and Encode image formats.
+ Query supported video decode and encode image formats and capabilities.
C Specification
- To enumerate the supported output, input and DPB image formats for a specific codec operation and video profile, call:
+ To enumerate the supported output, input and DPB image formats and corresponding capabilities for a specific video profile, call:
VkResult vkGetPhysicalDeviceVideoFormatPropertiesKHR(
@@ -322,9 +335,17 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
Description
If {@code pVideoFormatProperties} is {@code NULL}, then the number of video format properties supported for the given {@code physicalDevice} is returned in {@code pVideoFormatPropertyCount}. Otherwise, {@code pVideoFormatPropertyCount} must point to a variable set by the user to the number of elements in the {@code pVideoFormatProperties} array, and on return the variable is overwritten with the number of values actually written to {@code pVideoFormatProperties}. If the value of {@code pVideoFormatPropertyCount} is less than the number of video format properties supported, at most {@code pVideoFormatPropertyCount} values will be written to {@code pVideoFormatProperties}, and #INCOMPLETE will be returned instead of #SUCCESS, to indicate that not all the available values were returned.
- If an implementation reports #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR is supported but #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR is not supported in ##VkVideoDecodeCapabilitiesKHR{@code ::flags}, then to query for video format properties for decode DPB or output, ##VkPhysicalDeviceVideoFormatInfoKHR{@code ::imageUsage} must have both #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR and #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR set. Otherwise, the call will fail with #ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR.
+ Video format properties are always queried with respect to a specific set of video profiles. These are specified by chaining the ##VkVideoProfileListInfoKHR structure to {@code pVideoFormatInfo}.
+
+ For most use cases, the images are used by a single video session and a single video profile is provided. For a use case such as video transcoding, where a decode session output image can be used as encode input in one or more encode sessions, multiple video profiles corresponding to the video sessions that will share the image must be provided.
+
+ If any of the video profiles specified via ##VkVideoProfileListInfoKHR{@code ::pProfiles} are not supported, then this command returns one of the video-profile-specific error codes. Furthermore, if ##VkPhysicalDeviceVideoFormatInfoKHR{@code ::imageUsage} includes any image usage flags not supported by the specified video profiles, then this command returns #ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR.
+
+ This command also returns #ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR if ##VkPhysicalDeviceVideoFormatInfoKHR{@code ::imageUsage} does not include the appropriate flags as dictated by the decode capability flags returned in ##VkVideoDecodeCapabilitiesKHR{@code ::flags} for any of the profiles specified in the ##VkVideoProfileListInfoKHR structure provided in the {@code pNext} chain of {@code pVideoFormatInfo}.
- If an implementation reports #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR is supported but #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR is not supported in ##VkVideoDecodeCapabilitiesKHR{@code ::flags}, then to query for video format properties for decode DPB, ##VkPhysicalDeviceVideoFormatInfoKHR{@code ::imageUsage} must have #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR set and #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR not set. Otherwise, the call will fail with #ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR. Similarly, to query for video format properties for decode output, ##VkPhysicalDeviceVideoFormatInfoKHR{@code ::imageUsage} must have #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR set and #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR not set. Otherwise, the call will fail with #ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR.
+ If the decode capability flags include #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR but not #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR, then in order to query video format properties for decode DPB and output usage, ##VkPhysicalDeviceVideoFormatInfoKHR{@code ::imageUsage} must include both #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR and #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR. Otherwise, the call will fail with #ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR.
+
+ If the decode capability flags include #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR but not #VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR, then in order to query video format properties for decode DPB usage, ##VkPhysicalDeviceVideoFormatInfoKHR{@code ::imageUsage} must include #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR, but not #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR. Otherwise, the call will fail with #ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR. Similarly, to query video format properties for decode output usage, ##VkPhysicalDeviceVideoFormatInfoKHR{@code ::imageUsage} must include #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR, but not #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR. Otherwise, the call will fail with #ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR.
The {@code imageUsage} member of the ##VkPhysicalDeviceVideoFormatInfoKHR structure specifies the expected video usage flags that the returned video formats must support. Correspondingly, the {@code imageUsageFlags} member of each ##VkVideoFormatPropertiesKHR structure returned will contain at least the same set of image usage flags.
@@ -334,12 +355,6 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
For most use cases, only decode or encode related usage flags are going to be specified. For a use case such as transcode, if the image were to be shared between decode and encode session(s), then both decode and encode related usage flags can be set.
- Video format properties are always queried with respect to a specific set of video profiles, as defined by the ##VkVideoProfileInfoKHR structure. These are specified by chaining the ##VkVideoProfileListInfoKHR structure to {@code pVideoFormatInfo}.
-
- For most use cases, the images are used by a single video session and a single video profile is provided. For a use case such as transcode, where a decode session output image can be used as encode input in one or more encode sessions, multiple video profiles corresponding to the video sessions that will share the image must be provided.
-
- If any of the profiles specified via ##VkVideoProfileListInfoKHR{@code ::pProfiles} are not supported, then {@code vkGetPhysicalDeviceVideoFormatPropertiesKHR} returns one of the video-profile-specific error codes. Furthermore, if ##VkPhysicalDeviceVideoFormatInfoKHR{@code ::imageUsage} includes any image usage flags not supported by the specified video profiles then {@code vkGetPhysicalDeviceVideoFormatPropertiesKHR} returns #ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR.
-
Multiple ##VkVideoFormatPropertiesKHR entries may be returned with the same {@code format} member with different {@code componentMapping}, {@code imageType}, or {@code imageTiling} values, as described later.
In addition, a different set of ##VkVideoFormatPropertiesKHR entries may be returned depending on the {@code imageUsage} member of the ##VkPhysicalDeviceVideoFormatInfoKHR structure, even for the same set of video profiles, for example, based on whether encode input, encode DPB, decode output, and/or decode DPB usage is requested.
@@ -358,7 +373,7 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
Valid Usage
- - The {@code pNext} chain of {@code pVideoFormatInfo} must include a valid ##VkVideoProfileListInfoKHR structure with {@code profileCount} greater than 0
+ - The {@code pNext} chain of {@code pVideoFormatInfo} must include a ##VkVideoProfileListInfoKHR structure with {@code profileCount} greater than 0
Valid Usage (Implicit)
@@ -393,10 +408,10 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
##VkPhysicalDeviceVideoFormatInfoKHR, ##VkVideoFormatPropertiesKHR
""",
- VkPhysicalDevice("physicalDevice", "the physical device being queried."),
- VkPhysicalDeviceVideoFormatInfoKHR.const.p("pVideoFormatInfo", "a pointer to a ##VkPhysicalDeviceVideoFormatInfoKHR structure specifying the codec and video profile for which information is returned."),
+ VkPhysicalDevice("physicalDevice", "the physical device from which to query the video format properties."),
+ VkPhysicalDeviceVideoFormatInfoKHR.const.p("pVideoFormatInfo", "a pointer to a ##VkPhysicalDeviceVideoFormatInfoKHR structure specifying the usage and video profiles for which supported image formats and capabilities are returned."),
AutoSize("pVideoFormatProperties")..Check(1)..uint32_t.p("pVideoFormatPropertyCount", "a pointer to an integer related to the number of video format properties available or queried, as described below."),
- nullable..VkVideoFormatPropertiesKHR.p("pVideoFormatProperties", "a pointer to an array of ##VkVideoFormatPropertiesKHR structures in which supported formats and image parameters are returned.")
+ nullable..VkVideoFormatPropertiesKHR.p("pVideoFormatProperties", "a pointer to an array of ##VkVideoFormatPropertiesKHR structures in which supported image formats and capabilities are returned.")
)
VkResult(
@@ -415,7 +430,19 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
VkVideoSessionKHR* pVideoSession);
Description
- Video session objects are created in uninitialized state. In order to transition the video session into initial state, the application must issue a #CmdControlVideoCodingKHR() command with the {@code flags} member of ##VkVideoCodingControlInfoKHR including #VIDEO_CODING_CONTROL_RESET_BIT_KHR.
+ The resulting video session object is said to be created with the video codec operation specified in {@code pCreateInfo→pVideoProfile→videoCodecOperation}.
+
+ The name and version of the codec-specific Video Std header to be used with the video session is specified by the ##VkExtensionProperties structure pointed to by {@code pCreateInfo→pStdHeaderVersion}. If a non-existent or unsupported Video Std header version is specified in {@code pCreateInfo→pStdHeaderVersion→specVersion}, then this command returns #ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR.
+
+ Video session objects are created in uninitialized state. In order to transition the video session into initial state, the application must issue a #CmdControlVideoCodingKHR() command with ##VkVideoCodingControlInfoKHR{@code ::flags} including #VIDEO_CODING_CONTROL_RESET_BIT_KHR.
+
+ Video session objects also maintain the state of the DPB. The number of DPB slots usable with the created video session is specified in {@code pCreateInfo→maxDpbSlots}, and each slot is initially in the inactive state.
+
+ Each DPB slot maintained by the created video session can refer to a reference picture representing a video frame.
+
+ In addition, if the {@code videoCodecOperation} member of the ##VkVideoProfileInfoKHR structure pointed to by {@code pCreateInfo→pVideoProfile} is #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR and the {@code pictureLayout} member of the ##VkVideoDecodeH264ProfileInfoKHR structure provided in the ##VkVideoProfileInfoKHR{@code ::pNext} chain is not #VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR, then the created video session supports interlaced frames and each DPB slot maintained by the created video session can instead refer to separate top field and bottom field reference pictures that together can represent a full video frame. In this case, it is up to the application, driven by the video content, whether it associates any individual DPB slot with separate top and/or bottom field pictures or a single picture representing a full frame.
+
+ The created video session can be used to perform video coding operations using video frames up to the maximum size specified in {@code pCreateInfo→maxCodedExtent}. The minimum frame size allowed is implicitly derived from ##VkVideoCapabilitiesKHR{@code ::minCodedExtent}, as returned by #GetPhysicalDeviceVideoCapabilitiesKHR() for the video profile specified by {@code pCreateInfo→pVideoProfile}. Accordingly, the created video session is said to be created with a {@code minCodedExtent} equal to that.
Valid Usage (Implicit)
@@ -445,19 +472,19 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
##VkAllocationCallbacks, ##VkVideoSessionCreateInfoKHR
""",
- VkDevice("device", "the logical device that creates the decode or encode session object."),
- VkVideoSessionCreateInfoKHR.const.p("pCreateInfo", "a pointer to a ##VkVideoSessionCreateInfoKHR structure containing parameters specifying the creation of the decode or encode session."),
+ VkDevice("device", "the logical device that creates the video session."),
+ VkVideoSessionCreateInfoKHR.const.p("pCreateInfo", "a pointer to a ##VkVideoSessionCreateInfoKHR structure containing parameters to be used to create the video session."),
nullable..VkAllocationCallbacks.const.p("pAllocator", "controls host memory allocation as described in the Memory Allocation chapter."),
- Check(1)..VkVideoSessionKHR.p("pVideoSession", "a pointer to a {@code VkVideoSessionKHR} structure specifying the decode or encode video session object which will be created by this function when it returns #SUCCESS")
+ Check(1)..VkVideoSessionKHR.p("pVideoSession", "a pointer to a {@code VkVideoSessionKHR} handle in which the resulting video session object is returned.")
)
void(
"DestroyVideoSessionKHR",
"""
- Destroy decode session object.
+ Destroy video session object.
C Specification
- To destroy a decode session object, call:
+ To destroy a video session, call:
void vkDestroyVideoSessionKHR(
@@ -465,6 +492,13 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
VkVideoSessionKHR videoSession,
const VkAllocationCallbacks* pAllocator);
+ Valid Usage
+
+ - All submitted commands that refer to {@code videoSession} must have completed execution
+ - If ##VkAllocationCallbacks were provided when {@code videoSession} was created, a compatible set of callbacks must be provided here
+ - If no ##VkAllocationCallbacks were provided when {@code videoSession} was created, {@code pAllocator} must be {@code NULL}
+
+
Valid Usage (Implicit)
- {@code device} must be a valid {@code VkDevice} handle
@@ -482,18 +516,18 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
##VkAllocationCallbacks
""",
- VkDevice("device", "the device that was used for the creation of the video session."),
- VkVideoSessionKHR("videoSession", "the decode or encode video session to be destroyed."),
+ VkDevice("device", "the logical device that destroys the video session."),
+ VkVideoSessionKHR("videoSession", "the video session to destroy."),
nullable..VkAllocationCallbacks.const.p("pAllocator", "controls host memory allocation as described in the Memory Allocation chapter.")
)
VkResult(
"GetVideoSessionMemoryRequirementsKHR",
"""
- Get Memory Requirements.
+ Get the memory requirements for a video session.
C Specification
- To get memory requirements for a video session, call:
+ To determine the memory requirements for a video session object, call:
VkResult vkGetVideoSessionMemoryRequirementsKHR(
@@ -521,11 +555,6 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
- #SUCCESS
- #INCOMPLETE
-
- On failure, this command returns
-
- - #ERROR_INITIALIZATION_FAILED
-
See Also
@@ -553,6 +582,24 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
uint32_t bindSessionMemoryInfoCount,
const VkBindVideoSessionMemoryInfoKHR* pBindSessionMemoryInfos);
+ Description
+ The valid usage statements below refer to the ##VkMemoryRequirements structure corresponding to a specific element of {@code pBindSessionMemoryInfos}, which is defined as follows:
+
+
+ - If the {@code memoryBindIndex} member of the element of {@code pBindSessionMemoryInfos} in question matches the {@code memoryBindIndex} member of one of the elements returned in {@code pMemoryRequirements} when #GetVideoSessionMemoryRequirementsKHR() is called with the same {@code videoSession} and with {@code pMemoryRequirementsCount} equal to {@code bindSessionMemoryInfoCount}, then the {@code memoryRequirements} member of that element of {@code pMemoryRequirements} is the ##VkMemoryRequirements structure corresponding to the element of {@code pBindSessionMemoryInfos} in question.
+ - Otherwise the element of {@code pBindSessionMemoryInfos} in question is said to not have a corresponding ##VkMemoryRequirements structure.
+
+
+ Valid Usage
+
+ - The memory binding of {@code videoSession} identified by the {@code memoryBindIndex} member of any element of {@code pBindSessionMemoryInfos} must not already be backed by a memory object
+ - The {@code memoryBindIndex} member of each element of {@code pBindSessionMemoryInfos} must be unique within {@code pBindSessionMemoryInfos}
+ - Each element of {@code pBindSessionMemoryInfos} must have a corresponding ##VkMemoryRequirements structure
+ - If an element of {@code pBindSessionMemoryInfos} has a corresponding ##VkMemoryRequirements structure, then the {@code memory} member of that element of {@code pBindSessionMemoryInfos} must have been allocated using one of the memory types allowed in the {@code memoryTypeBits} member of the corresponding ##VkMemoryRequirements structure
+ - If an element of {@code pBindSessionMemoryInfos} has a corresponding ##VkMemoryRequirements structure, then the {@code memoryOffset} member of that element of {@code pBindSessionMemoryInfos} must be an integer multiple of the {@code alignment} member of the corresponding ##VkMemoryRequirements structure
+ - If an element of {@code pBindSessionMemoryInfos} has a corresponding ##VkMemoryRequirements structure, then the {@code memorySize} member of that element of {@code pBindSessionMemoryInfos} must equal the {@code size} member of the corresponding ##VkMemoryRequirements structure
+
+
Valid Usage (Implicit)
- {@code device} must be a valid {@code VkDevice} handle
@@ -578,7 +625,6 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
- #ERROR_OUT_OF_HOST_MEMORY
- #ERROR_OUT_OF_DEVICE_MEMORY
- - #ERROR_INITIALIZATION_FAILED
@@ -595,7 +641,7 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
VkResult(
"CreateVideoSessionParametersKHR",
"""
- Creates video session video session parameter object.
+ Creates video session parameters object.
C Specification
To create a video session parameters object, call:
@@ -607,6 +653,56 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
const VkAllocationCallbacks* pAllocator,
VkVideoSessionParametersKHR* pVideoSessionParameters);
+ Description
+ The resulting video session parameters object is said to be created with the video codec operation {@code pCreateInfo→videoSession} was created with.
+
+ If {@code pCreateInfo→videoSessionParametersTemplate} is not #NULL_HANDLE, then it will be used as a template for constructing the new video session parameters object. This happens by first adding any parameters according to the additional creation parameters provided in the {@code pCreateInfo→pNext} chain, followed by adding any parameters from the template object that have a key that does not match the key of any of the already added parameters.
+
+ If {@code pCreateInfo→videoSession} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then the created video session parameters object will initially contain the following sets of parameter entries:
+
+
+ -
+ {@code StdVideoH264SequenceParameterSet} structures representing H.264 SPS entries, as follows:
+
+ - If the {@code pParametersAddInfo} member of the ##VkVideoDecodeH264SessionParametersCreateInfoKHR structure provided in the {@code pCreateInfo→pNext} chain is not {@code NULL}, then the set of {@code StdVideoH264SequenceParameterSet} entries specified in {@code pParametersAddInfo→pStdSPSs} are added first;
+ - If {@code pCreateInfo→videoSessionParametersTemplate} is not #NULL_HANDLE, then each {@code StdVideoH264SequenceParameterSet} entry stored in it is copied to the created video session parameters object if the created object does not already contain such an entry with the same {@code seq_parameter_set_id}.
+
+
+ -
+ {@code StdVideoH264PictureParameterSet} structures representing H.264 PPS entries, as follows:
+
+ - If the {@code pParametersAddInfo} member of the ##VkVideoDecodeH264SessionParametersCreateInfoKHR structure provided in the {@code pCreateInfo→pNext} chain is not {@code NULL}, then the set of {@code StdVideoH264PictureParameterSet} entries specified in {@code pParametersAddInfo→pStdPPSs} are added first;
+ - If {@code pCreateInfo→videoSessionParametersTemplate} is not #NULL_HANDLE, then each {@code StdVideoH264PictureParameterSet} entry stored in it is copied to the created video session parameters object if the created object does not already contain such an entry with the same {@code seq_parameter_set_id} and {@code pic_parameter_set_id}.
+
+
+
+
+ If {@code pCreateInfo→videoSession} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the created video session parameters object will initially contain the following sets of parameter entries:
+
+
+ -
+ {@code StdVideoH265VideoParameterSet} structures representing H.264 VPS entries, as follows:
+
+ - If the {@code pParametersAddInfo} member of the ##VkVideoDecodeH265SessionParametersCreateInfoKHR structure provided in the {@code pCreateInfo→pNext} chain is not {@code NULL}, then the set of {@code StdVideoH265VideoParameterSet} entries specified in {@code pParametersAddInfo→pStdVPSs} are added first;
+ - If {@code pCreateInfo→videoSessionParametersTemplate} is not #NULL_HANDLE, then each {@code StdVideoH265VideoParameterSet} entry stored in it is copied to the created video session parameters object if the created object does not already contain such an entry with the same {@code vps_video_parameter_set_id}.
+
+
+ -
+ {@code StdVideoH265SequenceParameterSet} structures representing H.265 SPS entries, as follows:
+
+ - If the {@code pParametersAddInfo} member of the ##VkVideoDecodeH265SessionParametersCreateInfoKHR structure provided in the {@code pCreateInfo→pNext} chain is not {@code NULL}, then the set of {@code StdVideoH265SequenceParameterSet} entries specified in {@code pParametersAddInfo→pStdSPSs} are added first;
+ - If {@code pCreateInfo→videoSessionParametersTemplate} is not #NULL_HANDLE, then each {@code StdVideoH265SequenceParameterSet} entry stored in it is copied to the created video session parameters object if the created object does not already contain such an entry with the same {@code sps_video_parameter_set_id} and {@code sps_seq_parameter_set_id}.
+
+
+ -
+ {@code StdVideoH265PictureParameterSet} structures representing H.265 PPS entries, as follows:
+
+ - If the {@code pParametersAddInfo} member of the ##VkVideoDecodeH265SessionParametersCreateInfoKHR structure provided in the {@code pCreateInfo→pNext} chain is not {@code NULL}, then the set of {@code StdVideoH265PictureParameterSet} entries specified in {@code pParametersAddInfo→pStdPPSs} are added first;
+ - If {@code pCreateInfo→videoSessionParametersTemplate} is not #NULL_HANDLE, then each {@code StdVideoH265PictureParameterSet} entry stored in it is copied to the created video session parameters object if the created object does not already contain such an entry with the same {@code sps_video_parameter_set_id}, {@code pps_seq_parameter_set_id}, and {@code pps_pic_parameter_set_id}.
+
+
+
+
Valid Usage (Implicit)
- {@code device} must be a valid {@code VkDevice} handle
@@ -624,10 +720,9 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
- On failure, this command returns
- - #ERROR_INITIALIZATION_FAILED
- #ERROR_OUT_OF_HOST_MEMORY
- #ERROR_OUT_OF_DEVICE_MEMORY
- - #ERROR_TOO_MANY_OBJECTS
+ - #ERROR_INITIALIZATION_FAILED
@@ -635,19 +730,19 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
##VkAllocationCallbacks, ##VkVideoSessionParametersCreateInfoKHR
""",
- VkDevice("device", "the logical device that was used for the creation of the video session object."),
- VkVideoSessionParametersCreateInfoKHR.const.p("pCreateInfo", "a pointer to ##VkVideoSessionParametersCreateInfoKHR structure specifying the video session parameters."),
+ VkDevice("device", "the logical device that creates the video session parameters object."),
+ VkVideoSessionParametersCreateInfoKHR.const.p("pCreateInfo", "a pointer to ##VkVideoSessionParametersCreateInfoKHR structure containing parameters to be used to create the video session parameters object."),
nullable..VkAllocationCallbacks.const.p("pAllocator", "controls host memory allocation as described in the Memory Allocation chapter."),
- Check(1)..VkVideoSessionParametersKHR.p("pVideoSessionParameters", "a pointer to a {@code VkVideoSessionParametersKHR} handle in which the video session parameters object is returned.")
+ Check(1)..VkVideoSessionParametersKHR.p("pVideoSessionParameters", "a pointer to a {@code VkVideoSessionParametersKHR} handle in which the resulting video session parameters object is returned.")
)
VkResult(
"UpdateVideoSessionParametersKHR",
"""
- Update video session video session parameter object.
+ Update video session parameters object.
C Specification
- To update, add, or remove video session parameters state, call:
+ To update video session parameters object with new parameters, call:
VkResult vkUpdateVideoSessionParametersKHR(
@@ -655,6 +750,48 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
VkVideoSessionParametersKHR videoSessionParameters,
const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
+ Description
+ After a successful call to this command, the update sequence counter of {@code videoSessionParameters} is changed to the value specified in {@code pUpdateInfo→updateSequenceCount}.
+
+ Note:
+ As each update issued to a video session parameters object needs to specify the next available update sequence count value, concurrent updates of the same video session parameters object are inherently disallowed. However, recording video coding operations to command buffers referring to parameters previously added to the video session parameters object is allowed, even if there is a concurrent update in progress adding some new entries to the object.
+
+
+ If {@code videoSessionParameters} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR and the {@code pUpdateInfo→pNext} chain includes a ##VkVideoDecodeH264SessionParametersAddInfoKHR structure, then this command adds the following parameter entries to {@code videoSessionParameters}:
+
+
+ - The H.264 SPS entries specified in ##VkVideoDecodeH264SessionParametersAddInfoKHR{@code ::pStdSPSs}.
+ - The H.264 PPS entries specified in ##VkVideoDecodeH264SessionParametersAddInfoKHR{@code ::pStdPPSs}.
+
+
+ If {@code videoSessionParameters} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR and the {@code pUpdateInfo→pNext} chain includes a ##VkVideoDecodeH265SessionParametersAddInfoKHR structure, then this command adds the following parameter entries to {@code videoSessionParameters}:
+
+
+ - The H.265 VPS entries specified in ##VkVideoDecodeH265SessionParametersAddInfoKHR{@code ::pStdVPSs}.
+ - The H.265 SPS entries specified in ##VkVideoDecodeH265SessionParametersAddInfoKHR{@code ::pStdSPSs}.
+ - The H.265 PPS entries specified in ##VkVideoDecodeH265SessionParametersAddInfoKHR{@code ::pStdPPSs}.
+
+
+ Valid Usage
+
+ - {@code pUpdateInfo→updateSequenceCount} must equal the current update sequence counter of {@code videoSessionParameters} plus one
+ - If {@code videoSessionParameters} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR and the {@code pNext} chain of {@code pUpdateInfo} includes a ##VkVideoDecodeH264SessionParametersAddInfoKHR structure, then {@code videoSessionParameters} must not already contain a {@code StdVideoH264SequenceParameterSet} entry with {@code seq_parameter_set_id} matching any of the elements of ##VkVideoDecodeH264SessionParametersAddInfoKHR{@code ::pStdSPSs}
+ - If {@code videoSessionParameters} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then the number of {@code StdVideoH264SequenceParameterSet} entries already stored in it plus the value of the {@code stdSPSCount} member of the ##VkVideoDecodeH264SessionParametersAddInfoKHR structure included in the {@code pUpdateInfo→pNext} chain must be less than or equal to the ##VkVideoDecodeH264SessionParametersCreateInfoKHR{@code ::maxStdSPSCount} {@code videoSessionParameters} was created with
+ - If {@code videoSessionParameters} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR and the {@code pNext} chain of {@code pUpdateInfo} includes a ##VkVideoDecodeH264SessionParametersAddInfoKHR structure, then {@code videoSessionParameters} must not already contain a {@code StdVideoH264PictureParameterSet} entry with both {@code seq_parameter_set_id} and {@code pic_parameter_set_id} matching any of the elements of ##VkVideoDecodeH264SessionParametersAddInfoKHR{@code ::pStdPPSs}
+ - If {@code videoSessionParameters} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then the number of {@code StdVideoH264PictureParameterSet} entries already stored in it plus the value of the {@code stdPPSCount} member of the ##VkVideoDecodeH264SessionParametersAddInfoKHR structure included in the {@code pUpdateInfo→pNext} chain must be less than or equal to the ##VkVideoDecodeH264SessionParametersCreateInfoKHR{@code ::maxStdPPSCount} {@code videoSessionParameters} was created with
+ - If {@code videoSessionParameters} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR and the {@code pNext} chain of {@code pUpdateInfo} includes a ##VkVideoDecodeH265SessionParametersAddInfoKHR structure, then {@code videoSessionParameters} must not already contain a {@code StdVideoH265VideoParameterSet} entry with {@code vps_video_parameter_set_id} matching any of the elements of ##VkVideoDecodeH265SessionParametersAddInfoKHR{@code ::pStdVPSs}
+ - If {@code videoSessionParameters} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the number of {@code StdVideoH265VideoParameterSet} entries already stored in it plus the value of the {@code stdVPSCount} member of the ##VkVideoDecodeH265SessionParametersAddInfoKHR structure included in the {@code pUpdateInfo→pNext} chain must be less than or equal to the ##VkVideoDecodeH265SessionParametersCreateInfoKHR{@code ::maxStdVPSCount} {@code videoSessionParameters} was created with
+ - If {@code videoSessionParameters} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR and the {@code pNext} chain of {@code pUpdateInfo} includes a ##VkVideoDecodeH265SessionParametersAddInfoKHR structure, then {@code videoSessionParameters} must not already contain a {@code StdVideoH265SequenceParameterSet} entry with both {@code sps_video_parameter_set_id} and {@code sps_seq_parameter_set_id} matching any of the elements of ##VkVideoDecodeH265SessionParametersAddInfoKHR{@code ::pStdSPSs}
+ - If {@code videoSessionParameters} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the number of {@code StdVideoH265SequenceParameterSet} entries already stored in it plus the value of the {@code stdSPSCount} member of the ##VkVideoDecodeH265SessionParametersAddInfoKHR structure included in the {@code pUpdateInfo→pNext} chain must be less than or equal to the ##VkVideoDecodeH265SessionParametersCreateInfoKHR{@code ::maxStdSPSCount} {@code videoSessionParameters} was created with
+ - If {@code videoSessionParameters} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR and the {@code pNext} chain of {@code pUpdateInfo} includes a ##VkVideoDecodeH265SessionParametersAddInfoKHR structure, then {@code videoSessionParameters} must not already contain a {@code StdVideoH265PictureParameterSet} entry with {@code sps_video_parameter_set_id}, {@code pps_seq_parameter_set_id}, and {@code pps_pic_parameter_set_id} all matching any of the elements of ##VkVideoDecodeH265SessionParametersAddInfoKHR{@code ::pStdPPSs}
+ - If {@code videoSessionParameters} was created with the video codec operation #VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the number of {@code StdVideoH265PictureParameterSet} entries already stored in it plus the value of the {@code stdPPSCount} member of the ##VkVideoDecodeH265SessionParametersAddInfoKHR structure included in the {@code pUpdateInfo→pNext} chain must be less than or equal to the ##VkVideoDecodeH265SessionParametersCreateInfoKHR{@code ::maxStdPPSCount} {@code videoSessionParameters} was created with
+ - If {@code videoSessionParameters} was created with the video codec operation #VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT and the {@code pNext} chain of {@code pUpdateInfo} includes a ##VkVideoEncodeH264SessionParametersAddInfoEXT structure, then {@code videoSessionParameters} must not already contain a {@code StdVideoH264SequenceParameterSet} entry with {@code seq_parameter_set_id} matching any of the elements of ##VkVideoEncodeH264SessionParametersAddInfoEXT{@code ::pStdSPSs}
+ - If {@code videoSessionParameters} was created with the video codec operation #VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT and the {@code pNext} chain of {@code pUpdateInfo} includes a ##VkVideoEncodeH264SessionParametersAddInfoEXT structure, then {@code videoSessionParameters} must not already contain a {@code StdVideoH264PictureParameterSet} entry with both {@code seq_parameter_set_id} and {@code pic_parameter_set_id} matching any of the elements of ##VkVideoEncodeH264SessionParametersAddInfoEXT{@code ::pStdPPSs}
+ - If {@code videoSessionParameters} was created with the video codec operation #VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT and the {@code pNext} chain of {@code pUpdateInfo} includes a ##VkVideoEncodeH265SessionParametersAddInfoEXT structure, then {@code videoSessionParameters} must not already contain a {@code StdVideoH265VideoParameterSet} entry with {@code vps_video_parameter_set_id} matching any of the elements of ##VkVideoEncodeH265SessionParametersAddInfoEXT{@code ::pStdVPSs}
+ - If {@code videoSessionParameters} was created with the video codec operation #VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT and the {@code pNext} chain of {@code pUpdateInfo} includes a ##VkVideoEncodeH265SessionParametersAddInfoEXT structure, then {@code videoSessionParameters} must not already contain a {@code StdVideoH265SequenceParameterSet} entry with both {@code sps_video_parameter_set_id} and {@code sps_seq_parameter_set_id} matching any of the elements of ##VkVideoEncodeH265SessionParametersAddInfoEXT{@code ::pStdSPSs}
+ - If {@code videoSessionParameters} was created with the video codec operation #VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT and the {@code pNext} chain of {@code pUpdateInfo} includes a ##VkVideoEncodeH265SessionParametersAddInfoEXT structure, then {@code videoSessionParameters} must not already contain a {@code StdVideoH265PictureParameterSet} entry with {@code sps_video_parameter_set_id}, {@code pps_seq_parameter_set_id}, and {@code pps_pic_parameter_set_id} all matching any of the elements of ##VkVideoEncodeH265SessionParametersAddInfoEXT{@code ::pStdPPSs}
+
+
Valid Usage (Implicit)
- {@code device} must be a valid {@code VkDevice} handle
@@ -671,8 +808,8 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
- On failure, this command returns
- - #ERROR_INITIALIZATION_FAILED
- - #ERROR_TOO_MANY_OBJECTS
+ - #ERROR_OUT_OF_HOST_MEMORY
+ - #ERROR_OUT_OF_DEVICE_MEMORY
@@ -680,9 +817,9 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
##VkVideoSessionParametersUpdateInfoKHR
""",
- VkDevice("device", "the logical device that was used for the creation of the video session object."),
- VkVideoSessionParametersKHR("videoSessionParameters", "the video session parameters object that is going to be updated."),
- VkVideoSessionParametersUpdateInfoKHR.const.p("pUpdateInfo", "a pointer to a ##VkVideoSessionParametersUpdateInfoKHR structure containing the session parameters update information.")
+ VkDevice("device", "the logical device that updates the video session parameters."),
+ VkVideoSessionParametersKHR("videoSessionParameters", "the video session parameters object to update."),
+ VkVideoSessionParametersUpdateInfoKHR.const.p("pUpdateInfo", "a pointer to a ##VkVideoSessionParametersUpdateInfoKHR structure specifying the parameter update information.")
)
void(
@@ -699,6 +836,13 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
VkVideoSessionParametersKHR videoSessionParameters,
const VkAllocationCallbacks* pAllocator);
+ Valid Usage
+
+ - All submitted commands that refer to {@code videoSessionParameters} must have completed execution
+ - If ##VkAllocationCallbacks were provided when {@code videoSessionParameters} was created, a compatible set of callbacks must be provided here
+ - If no ##VkAllocationCallbacks were provided when {@code videoSessionParameters} was created, {@code pAllocator} must be {@code NULL}
+
+
Valid Usage (Implicit)
- {@code device} must be a valid {@code VkDevice} handle
@@ -715,15 +859,15 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
##VkAllocationCallbacks
""",
- VkDevice("device", "the device the video session parameters object was created with."),
- VkVideoSessionParametersKHR("videoSessionParameters", "the video session parameters object to be destroyed."),
+ VkDevice("device", "the logical device that destroys the video session parameters object."),
+ VkVideoSessionParametersKHR("videoSessionParameters", "the video session parameters object to destroy."),
nullable..VkAllocationCallbacks.const.p("pAllocator", "controls host memory allocation as described in the Memory Allocation chapter.")
)
void(
"CmdBeginVideoCodingKHR",
"""
- Start decode jobs.
+ Begin video coding scope.
C Specification
To begin a video coding scope, call:
@@ -734,7 +878,47 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
const VkVideoBeginCodingInfoKHR* pBeginInfo);
Description
- After beginning a video coding scope, the session object specified by the {@code videoSession} member of ##VkVideoBeginCodingInfoKHR is bound to the command buffer, and the command buffer is ready to record video coding operations.
+ After beginning a video coding scope, the video session object specified in {@code pBeginInfo→videoSession} is bound to the command buffer, and the command buffer is ready to record video coding operations. Similarly, if {@code pBeginInfo→videoSessionParameters} is not #NULL_HANDLE, it is also bound to the command buffer, and video coding operations can refer to the codec-specific parameters stored in it.
+
+ This command also establishes the set of bound reference picture resources that can be used as reconstructed pictures or reference pictures within the video coding scope. Each element of this set consists of a video picture resource and the DPB slot index associated with it, if there is one.
+
+ The set of bound reference picture resources is immutable within a video coding scope, however, the DPB slot index associated with any of the bound reference picture resources can change during the video coding scope in response to video coding operations.
+
+ The ##VkVideoReferenceSlotInfoKHR structures provided as the elements of {@code pBeginInfo→pReferenceSlots} are interpreted by this command as follows:
+
+
+ - If {@code slotIndex} is non-negative and {@code pPictureResource} is not {@code NULL}, then the video picture resource defined by the ##VkVideoPictureResourceInfoKHR structure pointed to by {@code pPictureResource} is added to the set of bound reference picture resources and is associated with the DPB slot index specified in {@code slotIndex}.
+ - If {@code slotIndex} is non-negative and {@code pPictureResource} is {@code NULL}, then the DPB slot with index {@code slotIndex} is deactivated by this command.
+ - If {@code slotIndex} is negative and {@code pPictureResource} is not {@code NULL}, then the video picture resource defined by the ##VkVideoPictureResourceInfoKHR structure pointed to by {@code pPictureResource} is added to the set of bound reference picture resources without an associated DPB slot. Such a picture resource can be subsequently used as a reconstructed picture to associate it with a DPB slot.
+ - If {@code slotIndex} is negative and {@code pPictureResource} is {@code NULL}, then the element is ignored.
+
+
+ Note:
+ It is possible for multiple bound reference picture resources to be associated with the same DPB slot index, or for a single bound reference picture to refer to multiple separate reference pictures. For example, in case of an
H.264 decode profile with
interlaced frame support a single DPB slot can refer to two separate pictures for the top and bottom fields. Depending on the picture layout used by the
H.264 decode profile, the following special cases
may arise:
+
+
+ - If the picture layout is #VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR, then the top and bottom field pictures are physically co-located in the same video picture resource with even scanlines corresponding to the top field and odd scanlines corresponding to the bottom field, respectively.
+ - If the picture layout is #VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR, then the top and bottom field pictures are stored in separate video picture resources (in separate subregions of the same image layer, in separate layers of the same image, or in entirely separate images), hence two elements of ##VkVideoBeginCodingInfoKHR{@code ::pReferenceSlots} can contain the same {@code slotIndex} but specify different video picture resources in their {@code pPictureResource} members.
+
+
+
+ All non-negative {@code slotIndex} values specified in the elements of {@code pBeginInfo→pReferenceSlots} must identify DPB slots of the video session that are in the active state at the time this command is executed on the device.
+
+ Note:
+ The application does not have to specify an entry in {@code pBeginInfo→pReferenceSlots} corresponding to all active DPB slots of the video session, but only for those which are intended to be used in the video coding scope. This way the application can avoid any potential runtime cost associated with binding the corresponding picture resources to the command buffer.
+
+
+ Valid Usage
+
+ - The {@code VkCommandPool} that {@code commandBuffer} was allocated from must support the video codec operation {@code pBeginInfo→videoSession} was created with, as returned by #GetPhysicalDeviceQueueFamilyProperties2() in ##VkQueueFamilyVideoPropertiesKHR{@code ::videoCodecOperations}
+ - There must be no active queries
+ - If {@code commandBuffer} is an unprotected command buffer and {@code protectedNoFault} is not supported, then {@code pBeginInfo→videoSession} must not have been created with #VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR
+ - If {@code commandBuffer} is a protected command buffer and {@code protectedNoFault} is not supported, then {@code pBeginInfo→videoSession} must have been created with #VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR
+ - If {@code commandBuffer} is an unprotected command buffer, {@code protectedNoFault} is not supported, and the {@code pPictureResource} member of any element of {@code pBeginInfo→pReferenceSlots} is not {@code NULL}, then {@code pPictureResource→imageViewBinding} for that element must not specify an image view created from a protected image
+ - If {@code commandBuffer} is a protected command buffer {@code protectedNoFault} is not supported, and the {@code pPictureResource} member of any element of {@code pBeginInfo→pReferenceSlots} is not {@code NULL}, then {@code pPictureResource→imageViewBinding} for that element must specify an image view created from a protected image
+ - If the {@code slotIndex} member of any element of {@code pBeginInfo→pReferenceSlots} is not negative, then it must specify the index of a DPB slot that is in the active state in {@code pBeginInfo→videoSession} at the time the command is executed on the device
+ - Each video picture resource specified by any non-{@code NULL} {@code pPictureResource} member specified in the elements of {@code pBeginInfo→pReferenceSlots} for which {@code slotIndex} is not negative must match one of the video picture resources currently associated with the DPB slot index of {@code pBeginInfo→videoSession} specified by {@code slotIndex} at the time the command is executed on the device
+
Valid Usage (Implicit)
@@ -763,14 +947,14 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
##VkVideoBeginCodingInfoKHR
""",
- VkCommandBuffer("commandBuffer", "the command buffer to be used when recording commands for the video decode or encode operations."),
- VkVideoBeginCodingInfoKHR.const.p("pBeginInfo", "a pointer to a ##VkVideoBeginCodingInfoKHR structure.")
+ VkCommandBuffer("commandBuffer", "the command buffer in which to record the command."),
+ VkVideoBeginCodingInfoKHR.const.p("pBeginInfo", "a pointer to a ##VkVideoBeginCodingInfoKHR structure specifying the parameters of the video coding scope, including the video session and video session parameters object to use.")
)
void(
"CmdEndVideoCodingKHR",
"""
- End decode jobs.
+ End video coding scope.
C Specification
To end a video coding scope, call:
@@ -781,7 +965,12 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
const VkVideoEndCodingInfoKHR* pEndCodingInfo);
Description
- After ending a video coding scope, the session object previously bound by the corresponding #CmdBeginVideoCodingKHR() command is unbound.
+ After ending a video coding scope, the video session object, the optional video session parameters object, and all reference picture resources previously bound by the corresponding #CmdBeginVideoCodingKHR() command are unbound.
+
+ Valid Usage
+
+ - There must be no active queries
+
Valid Usage (Implicit)
@@ -810,14 +999,14 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
##VkVideoEndCodingInfoKHR
""",
- VkCommandBuffer("commandBuffer", "the command buffer to be filled by this function."),
- VkVideoEndCodingInfoKHR.const.p("pEndCodingInfo", "a pointer to a ##VkVideoEndCodingInfoKHR structure.")
+ VkCommandBuffer("commandBuffer", "the command buffer in which to record the command."),
+ VkVideoEndCodingInfoKHR.const.p("pEndCodingInfo", "a pointer to a ##VkVideoEndCodingInfoKHR structure specifying the parameters for ending the video coding scope.")
)
void(
"CmdControlVideoCodingKHR",
"""
- Set encode rate control parameters.
+ Control video coding parameters.
C Specification
To apply dynamic controls to the currently bound video session object, call:
@@ -827,6 +1016,20 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
VkCommandBuffer commandBuffer,
const VkVideoCodingControlInfoKHR* pCodingControlInfo);
+ Description
+ The control parameters provided in this call are applied to the video session at the time the command executes on the device and are in effect until a subsequent call to this command with the same video session bound changes the corresponding control parameters.
+
+ A newly created video session must be reset before performing video coding operations using it by including #VIDEO_CODING_CONTROL_RESET_BIT_KHR in {@code pCodingControlInfo→flags}. The reset operation also returns all DPB slots of the video session to the inactive state. Correspondingly, any DPB slot index associated with the bound reference picture resources is removed.
+
+ For encode sessions, the reset operation returns rate control configuration to implementation default settings.
+
+ After video coding operations are performed using a video session, the reset operation can be used to return the video session to the same initial state as after the reset of a newly created video session. This can be used, for example, when different video sequences are needed to be processed with the same video session object.
+
+ Valid Usage
+
+ - If {@code pCodingControlInfo→flags} does not include #VIDEO_CODING_CONTROL_RESET_BIT_KHR, then the bound video session must not be in uninitialized state at the time the command is executed on the device
+
+
Valid Usage (Implicit)
- {@code commandBuffer} must be a valid {@code VkCommandBuffer} handle
@@ -854,7 +1057,7 @@ val KHR_video_queue = "KHRVideoQueue".nativeClassVK("KHR_video_queue", type = "d
##VkVideoCodingControlInfoKHR
""",
- VkCommandBuffer("commandBuffer", "the command buffer to be filled by this function."),
- VkVideoCodingControlInfoKHR.const.p("pCodingControlInfo", "a pointer to a ##VkVideoCodingControlInfoKHR structure.")
+ VkCommandBuffer("commandBuffer", "the command buffer in which to record the command."),
+ VkVideoCodingControlInfoKHR.const.p("pCodingControlInfo", "a pointer to a ##VkVideoCodingControlInfoKHR structure specifying the control parameters.")
)
}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_xcb_surface.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_xcb_surface.kt
new file mode 100644
index 0000000000..9050cc6012
--- /dev/null
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/KHR_xcb_surface.kt
@@ -0,0 +1,173 @@
+/*
+ * Copyright LWJGL. All rights reserved.
+ * License terms: https://www.lwjgl.org/license
+ * MACHINE GENERATED FILE, DO NOT EDIT
+ */
+package vulkan.templates
+
+import org.lwjgl.generator.*
+import vulkan.*
+
+val KHR_xcb_surface = "KHRXcbSurface".nativeClassVK("KHR_xcb_surface", type = "instance", postfix = "KHR") {
+ documentation =
+ """
+ The {@code VK_KHR_xcb_surface} extension is an instance extension. It provides a mechanism to create a {@code VkSurfaceKHR} object (defined by the {@link KHRSurface VK_KHR_surface} extension) that refers to an X11 {@code Window}, using the XCB client-side library, as well as a query to determine support for rendering via XCB.
+
+ VK_KHR_xcb_surface
+
+ - Name String
+ - {@code VK_KHR_xcb_surface}
+
+ - Extension Type
+ - Instance extension
+
+ - Registered Extension Number
+ - 6
+
+ - Revision
+ - 6
+
+ - Extension and Version Dependencies
+
+ - Requires support for Vulkan 1.0
+ - Requires {@link KHRSurface VK_KHR_surface} to be enabled
+
+
+ - Contact
+
+
+
+ Other Extension Metadata
+
+ - Last Modified Date
+ - 2015-11-28
+
+ - IP Status
+ - No known IP claims.
+
+ - Contributors
+
+ - Patrick Doane, Blizzard
+ - Jason Ekstrand, Intel
+ - Ian Elliott, LunarG
+ - Courtney Goeltzenleuchter, LunarG
+ - Jesse Hall, Google
+ - James Jones, NVIDIA
+ - Antoine Labour, Google
+ - Jon Leech, Khronos
+ - David Mao, AMD
+ - Norbert Nopper, Freescale
+ - Alon Or-bach, Samsung
+ - Daniel Rakos, AMD
+ - Graham Sellers, AMD
+ - Ray Smith, ARM
+ - Jeff Vigil, Qualcomm
+ - Chia-I Wu, LunarG
+
+
+ """
+
+ IntConstant(
+ "The extension specification version.",
+
+ "KHR_XCB_SURFACE_SPEC_VERSION".."6"
+ )
+
+ StringConstant(
+ "The extension name.",
+
+ "KHR_XCB_SURFACE_EXTENSION_NAME".."VK_KHR_xcb_surface"
+ )
+
+ EnumConstant(
+ "Extends {@code VkStructureType}.",
+
+ "STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR".."1000005000"
+ )
+
+ VkResult(
+ "CreateXcbSurfaceKHR",
+ """
+ Create a {@code VkSurfaceKHR} object for a X11 window, using the XCB client-side library.
+
+ C Specification
+ To create a {@code VkSurfaceKHR} object for an X11 window, using the XCB client-side library, call:
+
+
+VkResult vkCreateXcbSurfaceKHR(
+ VkInstance instance,
+ const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+ Valid Usage (Implicit)
+
+ - {@code instance} must be a valid {@code VkInstance} handle
+ - {@code pCreateInfo} must be a valid pointer to a valid ##VkXcbSurfaceCreateInfoKHR structure
+ - If {@code pAllocator} is not {@code NULL}, {@code pAllocator} must be a valid pointer to a valid ##VkAllocationCallbacks structure
+ - {@code pSurface} must be a valid pointer to a {@code VkSurfaceKHR} handle
+
+
+ Return Codes
+
+ - On success, this command returns
+
+
+ - On failure, this command returns
+
+ - #ERROR_OUT_OF_HOST_MEMORY
+ - #ERROR_OUT_OF_DEVICE_MEMORY
+
+
+
+ See Also
+ ##VkAllocationCallbacks, ##VkXcbSurfaceCreateInfoKHR
+ """,
+
+ VkInstance("instance", "the instance to associate the surface with."),
+ VkXcbSurfaceCreateInfoKHR.const.p("pCreateInfo", "a pointer to a ##VkXcbSurfaceCreateInfoKHR structure containing parameters affecting the creation of the surface object."),
+ nullable..VkAllocationCallbacks.const.p("pAllocator", "the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see Memory Allocation)."),
+ Check(1)..VkSurfaceKHR.p("pSurface", "a pointer to a {@code VkSurfaceKHR} handle in which the created surface object is returned.")
+ )
+
+ VkBool32(
+ "GetPhysicalDeviceXcbPresentationSupportKHR",
+ """
+ Query physical device for presentation to X11 server using XCB.
+
+ C Specification
+ To determine whether a queue family of a physical device supports presentation to an X11 server, using the XCB client-side library, call:
+
+
+VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ xcb_connection_t* connection,
+ xcb_visualid_t visual_id);
+
+ Description
+ This platform-specific function can be called prior to creating a surface.
+
+ Valid Usage
+
+ - {@code queueFamilyIndex} must be less than {@code pQueueFamilyPropertyCount} returned by {@code vkGetPhysicalDeviceQueueFamilyProperties} for the given {@code physicalDevice}
+
+
+ Valid Usage (Implicit)
+
+ - {@code physicalDevice} must be a valid {@code VkPhysicalDevice} handle
+ - {@code connection} must be a valid pointer to an {@code xcb_connection_t} value
+
+ """,
+
+ VkPhysicalDevice("physicalDevice", "the physical device."),
+ uint32_t("queueFamilyIndex", "the queue family index."),
+ xcb_connection_t.p("connection", "a pointer to an {@code xcb_connection_t} to the X server."),
+ xcb_visualid_t("visual_id", "an X11 visual ({@code xcb_visualid_t}).")
+ )
+}
\ No newline at end of file
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/NV_device_generated_commands.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/NV_device_generated_commands.kt
index e3e2e15c71..5adc14e209 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/NV_device_generated_commands.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/NV_device_generated_commands.kt
@@ -337,7 +337,6 @@ val NV_device_generated_commands = "NVDeviceGeneratedCommands".nativeClassVK("NV
If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
A valid pipeline must be bound to the pipeline bind point used by this command
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -376,9 +375,27 @@ val NV_device_generated_commands = "NVDeviceGeneratedCommands".nativeClassVK("NV
If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be #STENCIL_OP_KEEP
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT dynamic state enabled then #CmdSetViewport() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR dynamic state enabled then #CmdSetScissor() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then #CmdSetLineWidth() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then #CmdSetDepthBias() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then #CmdSetBlendConstants() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then #CmdSetDepthBounds() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then #CmdSetStencilCompareMask() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then #CmdSetStencilWriteMask() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then #CmdSetStencilReference() must have been called in the current command buffer prior to this drawing command
If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to ##VkPhysicalDeviceMultiviewProperties{@code ::maxMultiviewInstanceIndex}
If the bound graphics pipeline was created with ##VkPipelineSampleLocationsStateCreateInfoEXT{@code ::sampleLocationsEnable} set to #TRUE and the current subpass has a depth/stencil attachment, then that attachment must have been created with the #IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled then #CmdSetSampleLocationsEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CULL_MODE dynamic state enabled then #CmdSetCullMode() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_FRONT_FACE dynamic state enabled then #CmdSetFrontFace() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then #CmdSetPrimitiveTopology() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then #CmdSetDepthTestEnable() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_WRITE_ENABLE dynamic state enabled then #CmdSetDepthWriteEnable() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_COMPARE_OP dynamic state enabled then #CmdSetDepthCompareOp() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE dynamic state enabled then #CmdSetDepthBoundsTestEnable() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_TEST_ENABLE dynamic state enabled then #CmdSetStencilTestEnable() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_OP dynamic state enabled then #CmdSetStencilOp() must have been called in the current command buffer prior to this drawing command
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, then #CmdSetViewportWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::scissorCount} of the pipeline
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, then #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::viewportCount} of the pipeline
If the bound graphics pipeline state was created with both the #DYNAMIC_STATE_SCISSOR_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled then both #CmdSetViewportWithCount() and #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -406,7 +423,7 @@ val NV_device_generated_commands = "NVDeviceGeneratedCommands".nativeClassVK("NV
If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::colorAttachmentCount} greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} equal to #NULL_HANDLE must have the corresponding element of ##VkPipelineRenderingCreateInfo{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to #FORMAT_UNDEFINED
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then #CmdSetColorWriteEnableEXT() must have been called in the current command buffer prior to this drawing command
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the ##VkPipelineColorBlendStateCreateInfo{@code ::attachmentCount} of the currently bound graphics pipeline
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command for each discard rectangle in ##VkPipelineDiscardRectangleStateCreateInfoEXT{@code ::discardRectangleCount}
If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to #FORMAT_UNDEFINED
If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
@@ -422,37 +439,38 @@ val NV_device_generated_commands = "NVDeviceGeneratedCommands".nativeClassVK("NV
If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline must have been created with a ##VkGraphicsPipelineCreateInfo{@code ::renderPass} equal to #NULL_HANDLE
If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, rasterization discard must not be enabled
If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, the bound graphics pipeline must not have been created with a non-zero value in ##VkPipelineRasterizationStateStreamCreateInfoEXT{@code ::rasterizationStream}
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_EXT dynamic state enabled then #CmdSetLineStippleEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV dynamic state enabled then #CmdSetRepresentativeFragmentTestEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT state enabled and the last call to #CmdSetColorBlendEnableEXT() set {@code pColorBlendEnables} for any attachment to #TRUE, then for those attachments in the subpass the corresponding image view’s format features must contain #FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to #CmdSetRasterizationSamplesEXT() must follow the rules for a zero-attachment subpass
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the {@code samples} parameter in the last call to #CmdSetSampleMaskEXT() must be greater or equal to the ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -472,7 +490,7 @@ val NV_device_generated_commands = "NVDeviceGeneratedCommands".nativeClassVK("NV
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to #CmdSetCoverageModulationTableEnableNV() set {@code coverageModulationTableEnable} to #TRUE, then the {@code coverageModulationTableCount} parameter in the last call to #CmdSetCoverageModulationTableNV() must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by #GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV()
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportSwizzleStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportSwizzleNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
@@ -483,6 +501,7 @@ val NV_device_generated_commands = "NVDeviceGeneratedCommands".nativeClassVK("NV
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_DEFAULT_EXT, then the {@code stippledRectangularLines} feature must be enabled and ##VkPhysicalDeviceLimits{@code ::strictLines} must be VK_TRUE
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to #CmdSetConservativeRasterizationModeEXT() must be #CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
If the currently bound pipeline was created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT, then Mesh Shader Queries must not be active
+ If dynamic state was inherited from ##VkCommandBufferInheritanceViewportScissorInfoNV, it must be set in the current command buffer prior to this drawing command
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/NV_mesh_shader.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/NV_mesh_shader.kt
index 05907a5ecb..c12a12b64e 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/NV_mesh_shader.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/NV_mesh_shader.kt
@@ -141,7 +141,6 @@ val NV_mesh_shader = "NVMeshShader".nativeClassVK("NV_mesh_shader", type = "devi
- If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
- A valid pipeline must be bound to the pipeline bind point used by this command
- - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
- There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -180,9 +179,27 @@ val NV_mesh_shader = "NVMeshShader".nativeClassVK("NV_mesh_shader", type = "devi
- If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be #STENCIL_OP_KEEP
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT dynamic state enabled then #CmdSetViewport() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR dynamic state enabled then #CmdSetScissor() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then #CmdSetLineWidth() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then #CmdSetDepthBias() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then #CmdSetBlendConstants() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then #CmdSetDepthBounds() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then #CmdSetStencilCompareMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then #CmdSetStencilWriteMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then #CmdSetStencilReference() must have been called in the current command buffer prior to this drawing command
- If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to ##VkPhysicalDeviceMultiviewProperties{@code ::maxMultiviewInstanceIndex}
- If the bound graphics pipeline was created with ##VkPipelineSampleLocationsStateCreateInfoEXT{@code ::sampleLocationsEnable} set to #TRUE and the current subpass has a depth/stencil attachment, then that attachment must have been created with the #IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled then #CmdSetSampleLocationsEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CULL_MODE dynamic state enabled then #CmdSetCullMode() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_FRONT_FACE dynamic state enabled then #CmdSetFrontFace() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then #CmdSetPrimitiveTopology() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then #CmdSetDepthTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_WRITE_ENABLE dynamic state enabled then #CmdSetDepthWriteEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_COMPARE_OP dynamic state enabled then #CmdSetDepthCompareOp() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE dynamic state enabled then #CmdSetDepthBoundsTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_TEST_ENABLE dynamic state enabled then #CmdSetStencilTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_OP dynamic state enabled then #CmdSetStencilOp() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, then #CmdSetViewportWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::scissorCount} of the pipeline
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, then #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::viewportCount} of the pipeline
- If the bound graphics pipeline state was created with both the #DYNAMIC_STATE_SCISSOR_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled then both #CmdSetViewportWithCount() and #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -210,7 +227,7 @@ val NV_mesh_shader = "NVMeshShader".nativeClassVK("NV_mesh_shader", type = "devi
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::colorAttachmentCount} greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} equal to #NULL_HANDLE must have the corresponding element of ##VkPipelineRenderingCreateInfo{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to #FORMAT_UNDEFINED
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then #CmdSetColorWriteEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the ##VkPipelineColorBlendStateCreateInfo{@code ::attachmentCount} of the currently bound graphics pipeline
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command for each discard rectangle in ##VkPipelineDiscardRectangleStateCreateInfoEXT{@code ::discardRectangleCount}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to #FORMAT_UNDEFINED
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
@@ -226,37 +243,38 @@ val NV_mesh_shader = "NVMeshShader".nativeClassVK("NV_mesh_shader", type = "devi
- If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline must have been created with a ##VkGraphicsPipelineCreateInfo{@code ::renderPass} equal to #NULL_HANDLE
- If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, rasterization discard must not be enabled
- If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, the bound graphics pipeline must not have been created with a non-zero value in ##VkPipelineRasterizationStateStreamCreateInfoEXT{@code ::rasterizationStream}
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_EXT dynamic state enabled then #CmdSetLineStippleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV dynamic state enabled then #CmdSetRepresentativeFragmentTestEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT state enabled and the last call to #CmdSetColorBlendEnableEXT() set {@code pColorBlendEnables} for any attachment to #TRUE, then for those attachments in the subpass the corresponding image view’s format features must contain #FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to #CmdSetRasterizationSamplesEXT() must follow the rules for a zero-attachment subpass
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the {@code samples} parameter in the last call to #CmdSetSampleMaskEXT() must be greater or equal to the ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -276,7 +294,7 @@ val NV_mesh_shader = "NVMeshShader".nativeClassVK("NV_mesh_shader", type = "devi
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to #CmdSetCoverageModulationTableEnableNV() set {@code coverageModulationTableEnable} to #TRUE, then the {@code coverageModulationTableCount} parameter in the last call to #CmdSetCoverageModulationTableNV() must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
- If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
- If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by #GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportSwizzleStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportSwizzleNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
@@ -287,6 +305,7 @@ val NV_mesh_shader = "NVMeshShader".nativeClassVK("NV_mesh_shader", type = "devi
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_DEFAULT_EXT, then the {@code stippledRectangularLines} feature must be enabled and ##VkPhysicalDeviceLimits{@code ::strictLines} must be VK_TRUE
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to #CmdSetConservativeRasterizationModeEXT() must be #CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
- If the currently bound pipeline was created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT, then Mesh Shader Queries must not be active
+ - If dynamic state was inherited from ##VkCommandBufferInheritanceViewportScissorInfoNV, it must be set in the current command buffer prior to this drawing command
@@ -366,7 +385,6 @@ val NV_mesh_shader = "NVMeshShader".nativeClassVK("NV_mesh_shader", type = "devi
- If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
- A valid pipeline must be bound to the pipeline bind point used by this command
- - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
- There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -405,9 +423,27 @@ val NV_mesh_shader = "NVMeshShader".nativeClassVK("NV_mesh_shader", type = "devi
- If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be #STENCIL_OP_KEEP
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT dynamic state enabled then #CmdSetViewport() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR dynamic state enabled then #CmdSetScissor() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then #CmdSetLineWidth() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then #CmdSetDepthBias() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then #CmdSetBlendConstants() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then #CmdSetDepthBounds() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then #CmdSetStencilCompareMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then #CmdSetStencilWriteMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then #CmdSetStencilReference() must have been called in the current command buffer prior to this drawing command
- If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to ##VkPhysicalDeviceMultiviewProperties{@code ::maxMultiviewInstanceIndex}
- If the bound graphics pipeline was created with ##VkPipelineSampleLocationsStateCreateInfoEXT{@code ::sampleLocationsEnable} set to #TRUE and the current subpass has a depth/stencil attachment, then that attachment must have been created with the #IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled then #CmdSetSampleLocationsEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CULL_MODE dynamic state enabled then #CmdSetCullMode() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_FRONT_FACE dynamic state enabled then #CmdSetFrontFace() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then #CmdSetPrimitiveTopology() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then #CmdSetDepthTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_WRITE_ENABLE dynamic state enabled then #CmdSetDepthWriteEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_COMPARE_OP dynamic state enabled then #CmdSetDepthCompareOp() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE dynamic state enabled then #CmdSetDepthBoundsTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_TEST_ENABLE dynamic state enabled then #CmdSetStencilTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_OP dynamic state enabled then #CmdSetStencilOp() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, then #CmdSetViewportWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::scissorCount} of the pipeline
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, then #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::viewportCount} of the pipeline
- If the bound graphics pipeline state was created with both the #DYNAMIC_STATE_SCISSOR_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled then both #CmdSetViewportWithCount() and #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -435,7 +471,7 @@ val NV_mesh_shader = "NVMeshShader".nativeClassVK("NV_mesh_shader", type = "devi
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::colorAttachmentCount} greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} equal to #NULL_HANDLE must have the corresponding element of ##VkPipelineRenderingCreateInfo{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to #FORMAT_UNDEFINED
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then #CmdSetColorWriteEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the ##VkPipelineColorBlendStateCreateInfo{@code ::attachmentCount} of the currently bound graphics pipeline
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command for each discard rectangle in ##VkPipelineDiscardRectangleStateCreateInfoEXT{@code ::discardRectangleCount}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to #FORMAT_UNDEFINED
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
@@ -451,37 +487,38 @@ val NV_mesh_shader = "NVMeshShader".nativeClassVK("NV_mesh_shader", type = "devi
- If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline must have been created with a ##VkGraphicsPipelineCreateInfo{@code ::renderPass} equal to #NULL_HANDLE
- If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, rasterization discard must not be enabled
- If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, the bound graphics pipeline must not have been created with a non-zero value in ##VkPipelineRasterizationStateStreamCreateInfoEXT{@code ::rasterizationStream}
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_EXT dynamic state enabled then #CmdSetLineStippleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV dynamic state enabled then #CmdSetRepresentativeFragmentTestEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT state enabled and the last call to #CmdSetColorBlendEnableEXT() set {@code pColorBlendEnables} for any attachment to #TRUE, then for those attachments in the subpass the corresponding image view’s format features must contain #FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to #CmdSetRasterizationSamplesEXT() must follow the rules for a zero-attachment subpass
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the {@code samples} parameter in the last call to #CmdSetSampleMaskEXT() must be greater or equal to the ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -501,7 +538,7 @@ val NV_mesh_shader = "NVMeshShader".nativeClassVK("NV_mesh_shader", type = "devi
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to #CmdSetCoverageModulationTableEnableNV() set {@code coverageModulationTableEnable} to #TRUE, then the {@code coverageModulationTableCount} parameter in the last call to #CmdSetCoverageModulationTableNV() must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
- If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
- If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by #GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportSwizzleStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportSwizzleNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
@@ -512,6 +549,7 @@ val NV_mesh_shader = "NVMeshShader".nativeClassVK("NV_mesh_shader", type = "devi
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_DEFAULT_EXT, then the {@code stippledRectangularLines} feature must be enabled and ##VkPhysicalDeviceLimits{@code ::strictLines} must be VK_TRUE
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to #CmdSetConservativeRasterizationModeEXT() must be #CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
- If the currently bound pipeline was created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT, then Mesh Shader Queries must not be active
+ - If dynamic state was inherited from ##VkCommandBufferInheritanceViewportScissorInfoNV, it must be set in the current command buffer prior to this drawing command
@@ -611,7 +649,6 @@ val NV_mesh_shader = "NVMeshShader".nativeClassVK("NV_mesh_shader", type = "devi
- If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
- A valid pipeline must be bound to the pipeline bind point used by this command
- - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
- There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -650,9 +687,27 @@ val NV_mesh_shader = "NVMeshShader".nativeClassVK("NV_mesh_shader", type = "devi
- If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be #STENCIL_OP_KEEP
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT dynamic state enabled then #CmdSetViewport() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR dynamic state enabled then #CmdSetScissor() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then #CmdSetLineWidth() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then #CmdSetDepthBias() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then #CmdSetBlendConstants() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then #CmdSetDepthBounds() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then #CmdSetStencilCompareMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then #CmdSetStencilWriteMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then #CmdSetStencilReference() must have been called in the current command buffer prior to this drawing command
- If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to ##VkPhysicalDeviceMultiviewProperties{@code ::maxMultiviewInstanceIndex}
- If the bound graphics pipeline was created with ##VkPipelineSampleLocationsStateCreateInfoEXT{@code ::sampleLocationsEnable} set to #TRUE and the current subpass has a depth/stencil attachment, then that attachment must have been created with the #IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled then #CmdSetSampleLocationsEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CULL_MODE dynamic state enabled then #CmdSetCullMode() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_FRONT_FACE dynamic state enabled then #CmdSetFrontFace() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then #CmdSetPrimitiveTopology() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then #CmdSetDepthTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_WRITE_ENABLE dynamic state enabled then #CmdSetDepthWriteEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_COMPARE_OP dynamic state enabled then #CmdSetDepthCompareOp() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE dynamic state enabled then #CmdSetDepthBoundsTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_TEST_ENABLE dynamic state enabled then #CmdSetStencilTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_OP dynamic state enabled then #CmdSetStencilOp() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, then #CmdSetViewportWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::scissorCount} of the pipeline
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, then #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::viewportCount} of the pipeline
- If the bound graphics pipeline state was created with both the #DYNAMIC_STATE_SCISSOR_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled then both #CmdSetViewportWithCount() and #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -680,7 +735,7 @@ val NV_mesh_shader = "NVMeshShader".nativeClassVK("NV_mesh_shader", type = "devi
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::colorAttachmentCount} greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} equal to #NULL_HANDLE must have the corresponding element of ##VkPipelineRenderingCreateInfo{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to #FORMAT_UNDEFINED
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then #CmdSetColorWriteEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the ##VkPipelineColorBlendStateCreateInfo{@code ::attachmentCount} of the currently bound graphics pipeline
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command for each discard rectangle in ##VkPipelineDiscardRectangleStateCreateInfoEXT{@code ::discardRectangleCount}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to #FORMAT_UNDEFINED
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
@@ -696,37 +751,38 @@ val NV_mesh_shader = "NVMeshShader".nativeClassVK("NV_mesh_shader", type = "devi
- If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline must have been created with a ##VkGraphicsPipelineCreateInfo{@code ::renderPass} equal to #NULL_HANDLE
- If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, rasterization discard must not be enabled
- If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, the bound graphics pipeline must not have been created with a non-zero value in ##VkPipelineRasterizationStateStreamCreateInfoEXT{@code ::rasterizationStream}
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_EXT dynamic state enabled then #CmdSetLineStippleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV dynamic state enabled then #CmdSetRepresentativeFragmentTestEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT state enabled and the last call to #CmdSetColorBlendEnableEXT() set {@code pColorBlendEnables} for any attachment to #TRUE, then for those attachments in the subpass the corresponding image view’s format features must contain #FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to #CmdSetRasterizationSamplesEXT() must follow the rules for a zero-attachment subpass
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the {@code samples} parameter in the last call to #CmdSetSampleMaskEXT() must be greater or equal to the ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -746,7 +802,7 @@ val NV_mesh_shader = "NVMeshShader".nativeClassVK("NV_mesh_shader", type = "devi
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to #CmdSetCoverageModulationTableEnableNV() set {@code coverageModulationTableEnable} to #TRUE, then the {@code coverageModulationTableCount} parameter in the last call to #CmdSetCoverageModulationTableNV() must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
- If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
- If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by #GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportSwizzleStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportSwizzleNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
@@ -757,6 +813,7 @@ val NV_mesh_shader = "NVMeshShader".nativeClassVK("NV_mesh_shader", type = "devi
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_DEFAULT_EXT, then the {@code stippledRectangularLines} feature must be enabled and ##VkPhysicalDeviceLimits{@code ::strictLines} must be VK_TRUE
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to #CmdSetConservativeRasterizationModeEXT() must be #CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
- If the currently bound pipeline was created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT, then Mesh Shader Queries must not be active
+ - If dynamic state was inherited from ##VkCommandBufferInheritanceViewportScissorInfoNV, it must be set in the current command buffer prior to this drawing command
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/NV_ray_tracing.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/NV_ray_tracing.kt
index 50e1c17f8b..967579fb82 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/NV_ray_tracing.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/NV_ray_tracing.kt
@@ -498,6 +498,7 @@ val NV_ray_tracing = "NVRayTracing".nativeClassVK("NV_ray_tracing", type = "devi
- If {@code update} is #TRUE, then objects that were previously active must not be made inactive as per Inactive Primitives and Instances
- If {@code update} is #TRUE, then objects that were previously inactive must not be made active as per Inactive Primitives and Instances
- If {@code update} is #TRUE, the {@code src} and {@code dst} objects must either be the same object or not have any memory aliasing
+ - {@code dst} must be bound completely and contiguously to a single {@code VkDeviceMemory} object via #BindAccelerationStructureMemoryNV()
Valid Usage (Implicit)
@@ -567,6 +568,8 @@ val NV_ray_tracing = "NVRayTracing".nativeClassVK("NV_ray_tracing", type = "devi
If {@code mode} is #COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR, {@code src} must have been constructed with #BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR in the build
The {@code buffer} used to create {@code src} must be bound to device memory
The {@code buffer} used to create {@code dst} must be bound to device memory
+ The range of memory backing {@code dst} that is accessed by this command must not overlap the memory backing {@code src} that is accessed by this command
+ {@code dst} must be bound completely and contiguously to a single {@code VkDeviceMemory} object via #BindAccelerationStructureMemoryNV()
Valid Usage (Implicit)
@@ -652,7 +655,6 @@ val NV_ray_tracing = "NVRayTracing".nativeClassVK("NV_ray_tracing", type = "devi
If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
A valid pipeline must be bound to the pipeline bind point used by this command
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/STD_vulkan_video_codec_h264.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/STD_vulkan_video_codec_h264.kt
index a9655da0a1..9576a93ac7 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/STD_vulkan_video_codec_h264.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/STD_vulkan_video_codec_h264.kt
@@ -188,7 +188,7 @@ val STD_vulkan_video_codec_h264 = "STDVulkanVideoCodecH264".nativeClassVK("STD_v
IntConstant(
"The extension specification version.",
- "VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION".."VK_MAKE_VIDEO_STD_VERSION(0, 9, 8)"
+ "VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION".."VK_MAKE_VIDEO_STD_VERSION(1, 0, 0)"
).noPrefix()
StringConstant(
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/STD_vulkan_video_codec_h265.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/STD_vulkan_video_codec_h265.kt
index 50d849dfb0..834e6abb36 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/STD_vulkan_video_codec_h265.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/STD_vulkan_video_codec_h265.kt
@@ -126,7 +126,7 @@ val STD_vulkan_video_codec_h265 = "STDVulkanVideoCodecH265".nativeClassVK("STD_v
IntConstant(
"The extension specification version.",
- "VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION".."VK_MAKE_VIDEO_STD_VERSION(0, 9, 9)"
+ "VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION".."VK_MAKE_VIDEO_STD_VERSION(1, 0, 0)"
).noPrefix()
StringConstant(
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/VK10.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/VK10.kt
index dc98007c53..1e16a4d15e 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/VK10.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/VK10.kt
@@ -114,7 +114,7 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
VkStructureType - Vulkan structure types ({@code sType})
See Also
- ##VkAccelerationStructureBuildGeometryInfoKHR, ##VkAccelerationStructureBuildSizesInfoKHR, ##VkAccelerationStructureCaptureDescriptorDataInfoEXT, ##VkAccelerationStructureCreateInfoKHR, ##VkAccelerationStructureCreateInfoNV, ##VkAccelerationStructureDeviceAddressInfoKHR, ##VkAccelerationStructureGeometryAabbsDataKHR, ##VkAccelerationStructureGeometryInstancesDataKHR, ##VkAccelerationStructureGeometryKHR, ##VkAccelerationStructureGeometryMotionTrianglesDataNV, ##VkAccelerationStructureGeometryTrianglesDataKHR, ##VkAccelerationStructureInfoNV, ##VkAccelerationStructureMemoryRequirementsInfoNV, ##VkAccelerationStructureMotionInfoNV, ##VkAccelerationStructureTrianglesOpacityMicromapEXT, ##VkAccelerationStructureVersionInfoKHR, ##VkAcquireNextImageInfoKHR, ##VkAcquireProfilingLockInfoKHR, ##VkAmigoProfilingSubmitInfoSEC, ##VkApplicationInfo, ##VkAttachmentDescription2, ##VkAttachmentDescriptionStencilLayout, ##VkAttachmentReference2, ##VkAttachmentReferenceStencilLayout, ##VkAttachmentSampleCountInfoAMD, ##VkBaseInStructure, ##VkBaseOutStructure, ##VkBindAccelerationStructureMemoryInfoNV, ##VkBindBufferMemoryDeviceGroupInfo, ##VkBindBufferMemoryInfo, ##VkBindImageMemoryDeviceGroupInfo, ##VkBindImageMemoryInfo, ##VkBindImageMemorySwapchainInfoKHR, ##VkBindImagePlaneMemoryInfo, ##VkBindSparseInfo, ##VkBindVideoSessionMemoryInfoKHR, ##VkBlitImageInfo2, ##VkBufferCaptureDescriptorDataInfoEXT, ##VkBufferCopy2, ##VkBufferCreateInfo, ##VkBufferDeviceAddressCreateInfoEXT, ##VkBufferDeviceAddressInfo, ##VkBufferImageCopy2, ##VkBufferMemoryBarrier, ##VkBufferMemoryBarrier2, ##VkBufferMemoryRequirementsInfo2, ##VkBufferOpaqueCaptureAddressCreateInfo, ##VkBufferViewCreateInfo, ##VkCalibratedTimestampInfoEXT, ##VkCheckpointData2NV, ##VkCheckpointDataNV, ##VkCommandBufferAllocateInfo, ##VkCommandBufferBeginInfo, ##VkCommandBufferInheritanceConditionalRenderingInfoEXT, ##VkCommandBufferInheritanceInfo, ##VkCommandBufferInheritanceRenderPassTransformInfoQCOM, ##VkCommandBufferInheritanceRenderingInfo, ##VkCommandBufferInheritanceViewportScissorInfoNV, ##VkCommandBufferSubmitInfo, ##VkCommandPoolCreateInfo, ##VkComputePipelineCreateInfo, ##VkConditionalRenderingBeginInfoEXT, ##VkCooperativeMatrixPropertiesNV, ##VkCopyAccelerationStructureInfoKHR, ##VkCopyAccelerationStructureToMemoryInfoKHR, ##VkCopyBufferInfo2, ##VkCopyBufferToImageInfo2, ##VkCopyCommandTransformInfoQCOM, ##VkCopyDescriptorSet, ##VkCopyImageInfo2, ##VkCopyImageToBufferInfo2, ##VkCopyMemoryToAccelerationStructureInfoKHR, ##VkCopyMemoryToMicromapInfoEXT, ##VkCopyMicromapInfoEXT, ##VkCopyMicromapToMemoryInfoEXT, ##VkCuFunctionCreateInfoNVX, ##VkCuLaunchInfoNVX, ##VkCuModuleCreateInfoNVX, ##VkD3D12FenceSubmitInfoKHR, ##VkDebugMarkerMarkerInfoEXT, ##VkDebugMarkerObjectNameInfoEXT, ##VkDebugMarkerObjectTagInfoEXT, ##VkDebugReportCallbackCreateInfoEXT, ##VkDebugUtilsLabelEXT, ##VkDebugUtilsMessengerCallbackDataEXT, ##VkDebugUtilsMessengerCreateInfoEXT, ##VkDebugUtilsObjectNameInfoEXT, ##VkDebugUtilsObjectTagInfoEXT, ##VkDedicatedAllocationBufferCreateInfoNV, ##VkDedicatedAllocationImageCreateInfoNV, ##VkDedicatedAllocationMemoryAllocateInfoNV, ##VkDependencyInfo, ##VkDescriptorAddressInfoEXT, ##VkDescriptorBufferBindingInfoEXT, ##VkDescriptorBufferBindingPushDescriptorBufferHandleEXT, ##VkDescriptorGetInfoEXT, ##VkDescriptorPoolCreateInfo, ##VkDescriptorPoolInlineUniformBlockCreateInfo, ##VkDescriptorSetAllocateInfo, ##VkDescriptorSetBindingReferenceVALVE, ##VkDescriptorSetLayoutBindingFlagsCreateInfo, ##VkDescriptorSetLayoutCreateInfo, ##VkDescriptorSetLayoutHostMappingInfoVALVE, ##VkDescriptorSetLayoutSupport, ##VkDescriptorSetVariableDescriptorCountAllocateInfo, ##VkDescriptorSetVariableDescriptorCountLayoutSupport, ##VkDescriptorUpdateTemplateCreateInfo, ##VkDeviceAddressBindingCallbackDataEXT, ##VkDeviceBufferMemoryRequirements, ##VkDeviceCreateInfo, ##VkDeviceDeviceMemoryReportCreateInfoEXT, ##VkDeviceDiagnosticsConfigCreateInfoNV, ##VkDeviceEventInfoEXT, ##VkDeviceFaultCountsEXT, ##VkDeviceFaultInfoEXT, ##VkDeviceGroupBindSparseInfo, ##VkDeviceGroupCommandBufferBeginInfo, ##VkDeviceGroupDeviceCreateInfo, ##VkDeviceGroupPresentCapabilitiesKHR, ##VkDeviceGroupPresentInfoKHR, ##VkDeviceGroupRenderPassBeginInfo, ##VkDeviceGroupSubmitInfo, ##VkDeviceGroupSwapchainCreateInfoKHR, ##VkDeviceImageMemoryRequirements, ##VkDeviceMemoryOpaqueCaptureAddressInfo, ##VkDeviceMemoryOverallocationCreateInfoAMD, ##VkDeviceMemoryReportCallbackDataEXT, ##VkDevicePrivateDataCreateInfo, ##VkDeviceQueueCreateInfo, ##VkDeviceQueueGlobalPriorityCreateInfoKHR, ##VkDeviceQueueInfo2, ##VkDirectDriverLoadingInfoLUNARG, ##VkDirectDriverLoadingListLUNARG, ##VkDisplayEventInfoEXT, ##VkDisplayModeCreateInfoKHR, ##VkDisplayModeProperties2KHR, ##VkDisplayNativeHdrSurfaceCapabilitiesAMD, ##VkDisplayPlaneCapabilities2KHR, ##VkDisplayPlaneInfo2KHR, ##VkDisplayPlaneProperties2KHR, ##VkDisplayPowerInfoEXT, ##VkDisplayPresentInfoKHR, ##VkDisplayProperties2KHR, ##VkDisplaySurfaceCreateInfoKHR, ##VkDrmFormatModifierPropertiesList2EXT, ##VkDrmFormatModifierPropertiesListEXT, ##VkEventCreateInfo, ##VkExportFenceCreateInfo, ##VkExportFenceWin32HandleInfoKHR, ##VkExportMemoryAllocateInfo, ##VkExportMemoryAllocateInfoNV, ##VkExportMemoryWin32HandleInfoKHR, ##VkExportMemoryWin32HandleInfoNV, ##VkExportMetalBufferInfoEXT, ##VkExportMetalCommandQueueInfoEXT, ##VkExportMetalDeviceInfoEXT, ##VkExportMetalIOSurfaceInfoEXT, ##VkExportMetalObjectCreateInfoEXT, ##VkExportMetalObjectsInfoEXT, ##VkExportMetalSharedEventInfoEXT, ##VkExportMetalTextureInfoEXT, ##VkExportSemaphoreCreateInfo, ##VkExportSemaphoreWin32HandleInfoKHR, ##VkExternalBufferProperties, ##VkExternalFenceProperties, ##VkExternalImageFormatProperties, ##VkExternalMemoryBufferCreateInfo, ##VkExternalMemoryImageCreateInfo, ##VkExternalMemoryImageCreateInfoNV, ##VkExternalSemaphoreProperties, ##VkFenceCreateInfo, ##VkFenceGetFdInfoKHR, ##VkFenceGetWin32HandleInfoKHR, ##VkFilterCubicImageViewImageFormatPropertiesEXT, ##VkFormatProperties2, ##VkFormatProperties3, ##VkFragmentShadingRateAttachmentInfoKHR, ##VkFramebufferAttachmentImageInfo, ##VkFramebufferAttachmentsCreateInfo, ##VkFramebufferCreateInfo, ##VkFramebufferMixedSamplesCombinationNV, ##VkGeneratedCommandsInfoNV, ##VkGeneratedCommandsMemoryRequirementsInfoNV, ##VkGeometryAABBNV, ##VkGeometryNV, ##VkGeometryTrianglesNV, ##VkGraphicsPipelineCreateInfo, ##VkGraphicsPipelineLibraryCreateInfoEXT, ##VkGraphicsPipelineShaderGroupsCreateInfoNV, ##VkGraphicsShaderGroupCreateInfoNV, ##VkHdrMetadataEXT, ##VkHeadlessSurfaceCreateInfoEXT, ##VkImageBlit2, ##VkImageCaptureDescriptorDataInfoEXT, ##VkImageCompressionControlEXT, ##VkImageCompressionPropertiesEXT, ##VkImageCopy2, ##VkImageCreateInfo, ##VkImageDrmFormatModifierExplicitCreateInfoEXT, ##VkImageDrmFormatModifierListCreateInfoEXT, ##VkImageDrmFormatModifierPropertiesEXT, ##VkImageFormatListCreateInfo, ##VkImageFormatProperties2, ##VkImageMemoryBarrier, ##VkImageMemoryBarrier2, ##VkImageMemoryRequirementsInfo2, ##VkImagePlaneMemoryRequirementsInfo, ##VkImageResolve2, ##VkImageSparseMemoryRequirementsInfo2, ##VkImageStencilUsageCreateInfo, ##VkImageSubresource2EXT, ##VkImageSwapchainCreateInfoKHR, ##VkImageViewASTCDecodeModeEXT, ##VkImageViewAddressPropertiesNVX, ##VkImageViewCaptureDescriptorDataInfoEXT, ##VkImageViewCreateInfo, ##VkImageViewHandleInfoNVX, ##VkImageViewMinLodCreateInfoEXT, ##VkImageViewSampleWeightCreateInfoQCOM, ##VkImageViewUsageCreateInfo, ##VkImportFenceFdInfoKHR, ##VkImportFenceWin32HandleInfoKHR, ##VkImportMemoryFdInfoKHR, ##VkImportMemoryHostPointerInfoEXT, ##VkImportMemoryWin32HandleInfoKHR, ##VkImportMemoryWin32HandleInfoNV, ##VkImportMetalBufferInfoEXT, ##VkImportMetalIOSurfaceInfoEXT, ##VkImportMetalSharedEventInfoEXT, ##VkImportMetalTextureInfoEXT, ##VkImportSemaphoreFdInfoKHR, ##VkImportSemaphoreWin32HandleInfoKHR, ##VkIndirectCommandsLayoutCreateInfoNV, ##VkIndirectCommandsLayoutTokenNV, ##VkInitializePerformanceApiInfoINTEL, ##VkInstanceCreateInfo, ##VkMacOSSurfaceCreateInfoMVK, ##VkMappedMemoryRange, ##VkMemoryAllocateFlagsInfo, ##VkMemoryAllocateInfo, ##VkMemoryBarrier, ##VkMemoryBarrier2, ##VkMemoryDedicatedAllocateInfo, ##VkMemoryDedicatedRequirements, ##VkMemoryFdPropertiesKHR, ##VkMemoryGetFdInfoKHR, ##VkMemoryGetRemoteAddressInfoNV, ##VkMemoryGetWin32HandleInfoKHR, ##VkMemoryHostPointerPropertiesEXT, ##VkMemoryOpaqueCaptureAddressAllocateInfo, ##VkMemoryPriorityAllocateInfoEXT, ##VkMemoryRequirements2, ##VkMemoryWin32HandlePropertiesKHR, ##VkMetalSurfaceCreateInfoEXT, ##VkMicromapBuildInfoEXT, ##VkMicromapBuildSizesInfoEXT, ##VkMicromapCreateInfoEXT, ##VkMicromapVersionInfoEXT, ##VkMultisamplePropertiesEXT, ##VkMultisampledRenderToSingleSampledInfoEXT, ##VkMultiviewPerViewAttributesInfoNVX, ##VkMutableDescriptorTypeCreateInfoEXT, ##VkOpaqueCaptureDescriptorDataCreateInfoEXT, ##VkOpticalFlowExecuteInfoNV, ##VkOpticalFlowImageFormatInfoNV, ##VkOpticalFlowImageFormatPropertiesNV, ##VkOpticalFlowSessionCreateInfoNV, ##VkOpticalFlowSessionCreatePrivateDataInfoNV, ##VkPerformanceConfigurationAcquireInfoINTEL, ##VkPerformanceCounterDescriptionKHR, ##VkPerformanceCounterKHR, ##VkPerformanceMarkerInfoINTEL, ##VkPerformanceOverrideInfoINTEL, ##VkPerformanceQuerySubmitInfoKHR, ##VkPerformanceStreamMarkerInfoINTEL, ##VkPhysicalDevice16BitStorageFeatures, ##VkPhysicalDevice4444FormatsFeaturesEXT, ##VkPhysicalDevice8BitStorageFeatures, ##VkPhysicalDeviceASTCDecodeFeaturesEXT, ##VkPhysicalDeviceAccelerationStructureFeaturesKHR, ##VkPhysicalDeviceAccelerationStructurePropertiesKHR, ##VkPhysicalDeviceAddressBindingReportFeaturesEXT, ##VkPhysicalDeviceAmigoProfilingFeaturesSEC, ##VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT, ##VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, ##VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, ##VkPhysicalDeviceBorderColorSwizzleFeaturesEXT, ##VkPhysicalDeviceBufferDeviceAddressFeatures, ##VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, ##VkPhysicalDeviceCoherentMemoryFeaturesAMD, ##VkPhysicalDeviceColorWriteEnableFeaturesEXT, ##VkPhysicalDeviceComputeShaderDerivativesFeaturesNV, ##VkPhysicalDeviceConditionalRenderingFeaturesEXT, ##VkPhysicalDeviceConservativeRasterizationPropertiesEXT, ##VkPhysicalDeviceCooperativeMatrixFeaturesNV, ##VkPhysicalDeviceCooperativeMatrixPropertiesNV, ##VkPhysicalDeviceCopyMemoryIndirectFeaturesNV, ##VkPhysicalDeviceCopyMemoryIndirectPropertiesNV, ##VkPhysicalDeviceCornerSampledImageFeaturesNV, ##VkPhysicalDeviceCoverageReductionModeFeaturesNV, ##VkPhysicalDeviceCustomBorderColorFeaturesEXT, ##VkPhysicalDeviceCustomBorderColorPropertiesEXT, ##VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV, ##VkPhysicalDeviceDepthClampZeroOneFeaturesEXT, ##VkPhysicalDeviceDepthClipControlFeaturesEXT, ##VkPhysicalDeviceDepthClipEnableFeaturesEXT, ##VkPhysicalDeviceDepthStencilResolveProperties, ##VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT, ##VkPhysicalDeviceDescriptorBufferFeaturesEXT, ##VkPhysicalDeviceDescriptorBufferPropertiesEXT, ##VkPhysicalDeviceDescriptorIndexingFeatures, ##VkPhysicalDeviceDescriptorIndexingProperties, ##VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE, ##VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV, ##VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV, ##VkPhysicalDeviceDeviceMemoryReportFeaturesEXT, ##VkPhysicalDeviceDiagnosticsConfigFeaturesNV, ##VkPhysicalDeviceDiscardRectanglePropertiesEXT, ##VkPhysicalDeviceDriverProperties, ##VkPhysicalDeviceDrmPropertiesEXT, ##VkPhysicalDeviceDynamicRenderingFeatures, ##VkPhysicalDeviceExclusiveScissorFeaturesNV, ##VkPhysicalDeviceExtendedDynamicState2FeaturesEXT, ##VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, ##VkPhysicalDeviceExtendedDynamicState3PropertiesEXT, ##VkPhysicalDeviceExtendedDynamicStateFeaturesEXT, ##VkPhysicalDeviceExternalBufferInfo, ##VkPhysicalDeviceExternalFenceInfo, ##VkPhysicalDeviceExternalImageFormatInfo, ##VkPhysicalDeviceExternalMemoryHostPropertiesEXT, ##VkPhysicalDeviceExternalMemoryRDMAFeaturesNV, ##VkPhysicalDeviceExternalSemaphoreInfo, ##VkPhysicalDeviceFaultFeaturesEXT, ##VkPhysicalDeviceFeatures2, ##VkPhysicalDeviceFloatControlsProperties, ##VkPhysicalDeviceFragmentDensityMap2FeaturesEXT, ##VkPhysicalDeviceFragmentDensityMap2PropertiesEXT, ##VkPhysicalDeviceFragmentDensityMapFeaturesEXT, ##VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM, ##VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM, ##VkPhysicalDeviceFragmentDensityMapPropertiesEXT, ##VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR, ##VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR, ##VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, ##VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV, ##VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV, ##VkPhysicalDeviceFragmentShadingRateFeaturesKHR, ##VkPhysicalDeviceFragmentShadingRateKHR, ##VkPhysicalDeviceFragmentShadingRatePropertiesKHR, ##VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR, ##VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT, ##VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT, ##VkPhysicalDeviceGroupProperties, ##VkPhysicalDeviceHostQueryResetFeatures, ##VkPhysicalDeviceIDProperties, ##VkPhysicalDeviceImage2DViewOf3DFeaturesEXT, ##VkPhysicalDeviceImageCompressionControlFeaturesEXT, ##VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT, ##VkPhysicalDeviceImageDrmFormatModifierInfoEXT, ##VkPhysicalDeviceImageFormatInfo2, ##VkPhysicalDeviceImageProcessingFeaturesQCOM, ##VkPhysicalDeviceImageProcessingPropertiesQCOM, ##VkPhysicalDeviceImageRobustnessFeatures, ##VkPhysicalDeviceImageViewImageFormatInfoEXT, ##VkPhysicalDeviceImageViewMinLodFeaturesEXT, ##VkPhysicalDeviceImagelessFramebufferFeatures, ##VkPhysicalDeviceIndexTypeUint8FeaturesEXT, ##VkPhysicalDeviceInheritedViewportScissorFeaturesNV, ##VkPhysicalDeviceInlineUniformBlockFeatures, ##VkPhysicalDeviceInlineUniformBlockProperties, ##VkPhysicalDeviceInvocationMaskFeaturesHUAWEI, ##VkPhysicalDeviceLegacyDitheringFeaturesEXT, ##VkPhysicalDeviceLineRasterizationFeaturesEXT, ##VkPhysicalDeviceLineRasterizationPropertiesEXT, ##VkPhysicalDeviceLinearColorAttachmentFeaturesNV, ##VkPhysicalDeviceMaintenance3Properties, ##VkPhysicalDeviceMaintenance4Features, ##VkPhysicalDeviceMaintenance4Properties, ##VkPhysicalDeviceMemoryBudgetPropertiesEXT, ##VkPhysicalDeviceMemoryDecompressionFeaturesNV, ##VkPhysicalDeviceMemoryDecompressionPropertiesNV, ##VkPhysicalDeviceMemoryPriorityFeaturesEXT, ##VkPhysicalDeviceMemoryProperties2, ##VkPhysicalDeviceMeshShaderFeaturesEXT, ##VkPhysicalDeviceMeshShaderFeaturesNV, ##VkPhysicalDeviceMeshShaderPropertiesEXT, ##VkPhysicalDeviceMeshShaderPropertiesNV, ##VkPhysicalDeviceMultiDrawFeaturesEXT, ##VkPhysicalDeviceMultiDrawPropertiesEXT, ##VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT, ##VkPhysicalDeviceMultiviewFeatures, ##VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, ##VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM, ##VkPhysicalDeviceMultiviewProperties, ##VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT, ##VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT, ##VkPhysicalDeviceOpacityMicromapFeaturesEXT, ##VkPhysicalDeviceOpacityMicromapPropertiesEXT, ##VkPhysicalDeviceOpticalFlowFeaturesNV, ##VkPhysicalDeviceOpticalFlowPropertiesNV, ##VkPhysicalDevicePCIBusInfoPropertiesEXT, ##VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT, ##VkPhysicalDevicePerformanceQueryFeaturesKHR, ##VkPhysicalDevicePerformanceQueryPropertiesKHR, ##VkPhysicalDevicePipelineCreationCacheControlFeatures, ##VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR, ##VkPhysicalDevicePipelinePropertiesFeaturesEXT, ##VkPhysicalDevicePipelineProtectedAccessFeaturesEXT, ##VkPhysicalDevicePipelineRobustnessFeaturesEXT, ##VkPhysicalDevicePipelineRobustnessPropertiesEXT, ##VkPhysicalDevicePointClippingProperties, ##VkPhysicalDevicePortabilitySubsetFeaturesKHR, ##VkPhysicalDevicePortabilitySubsetPropertiesKHR, ##VkPhysicalDevicePresentBarrierFeaturesNV, ##VkPhysicalDevicePresentIdFeaturesKHR, ##VkPhysicalDevicePresentWaitFeaturesKHR, ##VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT, ##VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT, ##VkPhysicalDevicePrivateDataFeatures, ##VkPhysicalDeviceProperties2, ##VkPhysicalDeviceProtectedMemoryFeatures, ##VkPhysicalDeviceProtectedMemoryProperties, ##VkPhysicalDeviceProvokingVertexFeaturesEXT, ##VkPhysicalDeviceProvokingVertexPropertiesEXT, ##VkPhysicalDevicePushDescriptorPropertiesKHR, ##VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT, ##VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT, ##VkPhysicalDeviceRayQueryFeaturesKHR, ##VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV, ##VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV, ##VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR, ##VkPhysicalDeviceRayTracingMotionBlurFeaturesNV, ##VkPhysicalDeviceRayTracingPipelineFeaturesKHR, ##VkPhysicalDeviceRayTracingPipelinePropertiesKHR, ##VkPhysicalDeviceRayTracingPropertiesNV, ##VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV, ##VkPhysicalDeviceRobustness2FeaturesEXT, ##VkPhysicalDeviceRobustness2PropertiesEXT, ##VkPhysicalDeviceSampleLocationsPropertiesEXT, ##VkPhysicalDeviceSamplerFilterMinmaxProperties, ##VkPhysicalDeviceSamplerYcbcrConversionFeatures, ##VkPhysicalDeviceScalarBlockLayoutFeatures, ##VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, ##VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, ##VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, ##VkPhysicalDeviceShaderAtomicInt64Features, ##VkPhysicalDeviceShaderClockFeaturesKHR, ##VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM, ##VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM, ##VkPhysicalDeviceShaderCoreProperties2AMD, ##VkPhysicalDeviceShaderCorePropertiesAMD, ##VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures, ##VkPhysicalDeviceShaderDrawParametersFeatures, ##VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD, ##VkPhysicalDeviceShaderFloat16Int8Features, ##VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT, ##VkPhysicalDeviceShaderImageFootprintFeaturesNV, ##VkPhysicalDeviceShaderIntegerDotProductFeatures, ##VkPhysicalDeviceShaderIntegerDotProductProperties, ##VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL, ##VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT, ##VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT, ##VkPhysicalDeviceShaderSMBuiltinsFeaturesNV, ##VkPhysicalDeviceShaderSMBuiltinsPropertiesNV, ##VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, ##VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR, ##VkPhysicalDeviceShaderTerminateInvocationFeatures, ##VkPhysicalDeviceShadingRateImageFeaturesNV, ##VkPhysicalDeviceShadingRateImagePropertiesNV, ##VkPhysicalDeviceSparseImageFormatInfo2, ##VkPhysicalDeviceSubgroupProperties, ##VkPhysicalDeviceSubgroupSizeControlFeatures, ##VkPhysicalDeviceSubgroupSizeControlProperties, ##VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT, ##VkPhysicalDeviceSubpassShadingFeaturesHUAWEI, ##VkPhysicalDeviceSubpassShadingPropertiesHUAWEI, ##VkPhysicalDeviceSurfaceInfo2KHR, ##VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT, ##VkPhysicalDeviceSynchronization2Features, ##VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT, ##VkPhysicalDeviceTexelBufferAlignmentProperties, ##VkPhysicalDeviceTextureCompressionASTCHDRFeatures, ##VkPhysicalDeviceTilePropertiesFeaturesQCOM, ##VkPhysicalDeviceTimelineSemaphoreFeatures, ##VkPhysicalDeviceTimelineSemaphoreProperties, ##VkPhysicalDeviceToolProperties, ##VkPhysicalDeviceTransformFeedbackFeaturesEXT, ##VkPhysicalDeviceTransformFeedbackPropertiesEXT, ##VkPhysicalDeviceUniformBufferStandardLayoutFeatures, ##VkPhysicalDeviceVariablePointersFeatures, ##VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT, ##VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, ##VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT, ##VkPhysicalDeviceVideoFormatInfoKHR, ##VkPhysicalDeviceVulkan11Features, ##VkPhysicalDeviceVulkan11Properties, ##VkPhysicalDeviceVulkan12Features, ##VkPhysicalDeviceVulkan12Properties, ##VkPhysicalDeviceVulkan13Features, ##VkPhysicalDeviceVulkan13Properties, ##VkPhysicalDeviceVulkanMemoryModelFeatures, ##VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR, ##VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT, ##VkPhysicalDeviceYcbcrImageArraysFeaturesEXT, ##VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures, ##VkPipelineCacheCreateInfo, ##VkPipelineColorBlendAdvancedStateCreateInfoEXT, ##VkPipelineColorBlendStateCreateInfo, ##VkPipelineColorWriteCreateInfoEXT, ##VkPipelineCompilerControlCreateInfoAMD, ##VkPipelineCoverageModulationStateCreateInfoNV, ##VkPipelineCoverageReductionStateCreateInfoNV, ##VkPipelineCoverageToColorStateCreateInfoNV, ##VkPipelineCreationFeedbackCreateInfo, ##VkPipelineDepthStencilStateCreateInfo, ##VkPipelineDiscardRectangleStateCreateInfoEXT, ##VkPipelineDynamicStateCreateInfo, ##VkPipelineExecutableInfoKHR, ##VkPipelineExecutableInternalRepresentationKHR, ##VkPipelineExecutablePropertiesKHR, ##VkPipelineExecutableStatisticKHR, ##VkPipelineFragmentShadingRateEnumStateCreateInfoNV, ##VkPipelineFragmentShadingRateStateCreateInfoKHR, ##VkPipelineInfoKHR, ##VkPipelineInputAssemblyStateCreateInfo, ##VkPipelineLayoutCreateInfo, ##VkPipelineLibraryCreateInfoKHR, ##VkPipelineMultisampleStateCreateInfo, ##VkPipelinePropertiesIdentifierEXT, ##VkPipelineRasterizationConservativeStateCreateInfoEXT, ##VkPipelineRasterizationDepthClipStateCreateInfoEXT, ##VkPipelineRasterizationLineStateCreateInfoEXT, ##VkPipelineRasterizationProvokingVertexStateCreateInfoEXT, ##VkPipelineRasterizationStateCreateInfo, ##VkPipelineRasterizationStateRasterizationOrderAMD, ##VkPipelineRasterizationStateStreamCreateInfoEXT, ##VkPipelineRenderingCreateInfo, ##VkPipelineRepresentativeFragmentTestStateCreateInfoNV, ##VkPipelineRobustnessCreateInfoEXT, ##VkPipelineSampleLocationsStateCreateInfoEXT, ##VkPipelineShaderStageCreateInfo, ##VkPipelineShaderStageModuleIdentifierCreateInfoEXT, ##VkPipelineShaderStageRequiredSubgroupSizeCreateInfo, ##VkPipelineTessellationDomainOriginStateCreateInfo, ##VkPipelineTessellationStateCreateInfo, ##VkPipelineVertexInputDivisorStateCreateInfoEXT, ##VkPipelineVertexInputStateCreateInfo, ##VkPipelineViewportCoarseSampleOrderStateCreateInfoNV, ##VkPipelineViewportDepthClipControlCreateInfoEXT, ##VkPipelineViewportExclusiveScissorStateCreateInfoNV, ##VkPipelineViewportShadingRateImageStateCreateInfoNV, ##VkPipelineViewportStateCreateInfo, ##VkPipelineViewportSwizzleStateCreateInfoNV, ##VkPipelineViewportWScalingStateCreateInfoNV, ##VkPresentIdKHR, ##VkPresentInfoKHR, ##VkPresentRegionsKHR, ##VkPresentTimesInfoGOOGLE, ##VkPrivateDataSlotCreateInfo, ##VkProtectedSubmitInfo, ##VkQueryPoolCreateInfo, ##VkQueryPoolPerformanceCreateInfoKHR, ##VkQueryPoolPerformanceQueryCreateInfoINTEL, ##VkQueueFamilyCheckpointProperties2NV, ##VkQueueFamilyCheckpointPropertiesNV, ##VkQueueFamilyGlobalPriorityPropertiesKHR, ##VkQueueFamilyProperties2, ##VkQueueFamilyQueryResultStatusPropertiesKHR, ##VkQueueFamilyVideoPropertiesKHR, ##VkRayTracingPipelineCreateInfoKHR, ##VkRayTracingPipelineCreateInfoNV, ##VkRayTracingPipelineInterfaceCreateInfoKHR, ##VkRayTracingShaderGroupCreateInfoKHR, ##VkRayTracingShaderGroupCreateInfoNV, ##VkReleaseSwapchainImagesInfoEXT, ##VkRenderPassAttachmentBeginInfo, ##VkRenderPassBeginInfo, ##VkRenderPassCreateInfo, ##VkRenderPassCreateInfo2, ##VkRenderPassCreationControlEXT, ##VkRenderPassCreationFeedbackCreateInfoEXT, ##VkRenderPassFragmentDensityMapCreateInfoEXT, ##VkRenderPassInputAttachmentAspectCreateInfo, ##VkRenderPassMultiviewCreateInfo, ##VkRenderPassSampleLocationsBeginInfoEXT, ##VkRenderPassSubpassFeedbackCreateInfoEXT, ##VkRenderPassTransformBeginInfoQCOM, ##VkRenderingAttachmentInfo, ##VkRenderingFragmentDensityMapAttachmentInfoEXT, ##VkRenderingFragmentShadingRateAttachmentInfoKHR, ##VkRenderingInfo, ##VkResolveImageInfo2, ##VkSampleLocationsInfoEXT, ##VkSamplerBorderColorComponentMappingCreateInfoEXT, ##VkSamplerCaptureDescriptorDataInfoEXT, ##VkSamplerCreateInfo, ##VkSamplerCustomBorderColorCreateInfoEXT, ##VkSamplerReductionModeCreateInfo, ##VkSamplerYcbcrConversionCreateInfo, ##VkSamplerYcbcrConversionImageFormatProperties, ##VkSamplerYcbcrConversionInfo, ##VkSemaphoreCreateInfo, ##VkSemaphoreGetFdInfoKHR, ##VkSemaphoreGetWin32HandleInfoKHR, ##VkSemaphoreSignalInfo, ##VkSemaphoreSubmitInfo, ##VkSemaphoreTypeCreateInfo, ##VkSemaphoreWaitInfo, ##VkShaderModuleCreateInfo, ##VkShaderModuleIdentifierEXT, ##VkShaderModuleValidationCacheCreateInfoEXT, ##VkSharedPresentSurfaceCapabilitiesKHR, ##VkSparseImageFormatProperties2, ##VkSparseImageMemoryRequirements2, ##VkSubmitInfo, ##VkSubmitInfo2, ##VkSubpassBeginInfo, ##VkSubpassDependency2, ##VkSubpassDescription2, ##VkSubpassDescriptionDepthStencilResolve, ##VkSubpassEndInfo, ##VkSubpassFragmentDensityMapOffsetEndInfoQCOM, ##VkSubpassResolvePerformanceQueryEXT, ##VkSubpassShadingPipelineCreateInfoHUAWEI, ##VkSubresourceLayout2EXT, ##VkSurfaceCapabilities2EXT, ##VkSurfaceCapabilities2KHR, ##VkSurfaceCapabilitiesFullScreenExclusiveEXT, ##VkSurfaceCapabilitiesPresentBarrierNV, ##VkSurfaceFormat2KHR, ##VkSurfaceFullScreenExclusiveInfoEXT, ##VkSurfaceFullScreenExclusiveWin32InfoEXT, ##VkSurfacePresentModeCompatibilityEXT, ##VkSurfacePresentModeEXT, ##VkSurfacePresentScalingCapabilitiesEXT, ##VkSurfaceProtectedCapabilitiesKHR, ##VkSwapchainCounterCreateInfoEXT, ##VkSwapchainCreateInfoKHR, ##VkSwapchainDisplayNativeHdrCreateInfoAMD, ##VkSwapchainPresentBarrierCreateInfoNV, ##VkSwapchainPresentFenceInfoEXT, ##VkSwapchainPresentModeInfoEXT, ##VkSwapchainPresentModesCreateInfoEXT, ##VkSwapchainPresentScalingCreateInfoEXT, ##VkTextureLODGatherFormatPropertiesAMD, ##VkTilePropertiesQCOM, ##VkTimelineSemaphoreSubmitInfo, ##VkValidationCacheCreateInfoEXT, ##VkValidationFeaturesEXT, ##VkValidationFlagsEXT, ##VkVertexInputAttributeDescription2EXT, ##VkVertexInputBindingDescription2EXT, ##VkVideoBeginCodingInfoKHR, ##VkVideoCapabilitiesKHR, ##VkVideoCodingControlInfoKHR, ##VkVideoDecodeCapabilitiesKHR, ##VkVideoDecodeH264CapabilitiesEXT, ##VkVideoDecodeH264DpbSlotInfoEXT, ##VkVideoDecodeH264PictureInfoEXT, ##VkVideoDecodeH264ProfileInfoEXT, ##VkVideoDecodeH264SessionParametersAddInfoEXT, ##VkVideoDecodeH264SessionParametersCreateInfoEXT, ##VkVideoDecodeH265CapabilitiesEXT, ##VkVideoDecodeH265DpbSlotInfoEXT, ##VkVideoDecodeH265PictureInfoEXT, ##VkVideoDecodeH265ProfileInfoEXT, ##VkVideoDecodeH265SessionParametersAddInfoEXT, ##VkVideoDecodeH265SessionParametersCreateInfoEXT, ##VkVideoDecodeInfoKHR, ##VkVideoDecodeUsageInfoKHR, ##VkVideoEncodeCapabilitiesKHR, ##VkVideoEncodeH264CapabilitiesEXT, ##VkVideoEncodeH264DpbSlotInfoEXT, ##VkVideoEncodeH264EmitPictureParametersInfoEXT, ##VkVideoEncodeH264NaluSliceInfoEXT, ##VkVideoEncodeH264ProfileInfoEXT, ##VkVideoEncodeH264RateControlInfoEXT, ##VkVideoEncodeH264RateControlLayerInfoEXT, ##VkVideoEncodeH264ReferenceListsInfoEXT, ##VkVideoEncodeH264SessionParametersAddInfoEXT, ##VkVideoEncodeH264SessionParametersCreateInfoEXT, ##VkVideoEncodeH264VclFrameInfoEXT, ##VkVideoEncodeH265CapabilitiesEXT, ##VkVideoEncodeH265DpbSlotInfoEXT, ##VkVideoEncodeH265EmitPictureParametersInfoEXT, ##VkVideoEncodeH265NaluSliceSegmentInfoEXT, ##VkVideoEncodeH265ProfileInfoEXT, ##VkVideoEncodeH265RateControlInfoEXT, ##VkVideoEncodeH265RateControlLayerInfoEXT, ##VkVideoEncodeH265ReferenceListsInfoEXT, ##VkVideoEncodeH265SessionParametersAddInfoEXT, ##VkVideoEncodeH265SessionParametersCreateInfoEXT, ##VkVideoEncodeH265VclFrameInfoEXT, ##VkVideoEncodeInfoKHR, ##VkVideoEncodeRateControlInfoKHR, ##VkVideoEncodeRateControlLayerInfoKHR, ##VkVideoEncodeUsageInfoKHR, ##VkVideoEndCodingInfoKHR, ##VkVideoFormatPropertiesKHR, ##VkVideoPictureResourceInfoKHR, ##VkVideoProfileInfoKHR, ##VkVideoProfileListInfoKHR, ##VkVideoReferenceSlotInfoKHR, ##VkVideoSessionCreateInfoKHR, ##VkVideoSessionMemoryRequirementsKHR, ##VkVideoSessionParametersCreateInfoKHR, ##VkVideoSessionParametersUpdateInfoKHR, ##VkWaylandSurfaceCreateInfoKHR, ##VkWin32KeyedMutexAcquireReleaseInfoKHR, ##VkWin32KeyedMutexAcquireReleaseInfoNV, ##VkWin32SurfaceCreateInfoKHR, ##VkWriteDescriptorSet, ##VkWriteDescriptorSetAccelerationStructureKHR, ##VkWriteDescriptorSetAccelerationStructureNV, ##VkWriteDescriptorSetInlineUniformBlock, ##VkXlibSurfaceCreateInfoKHR
+ ##VkAccelerationStructureBuildGeometryInfoKHR, ##VkAccelerationStructureBuildSizesInfoKHR, ##VkAccelerationStructureCaptureDescriptorDataInfoEXT, ##VkAccelerationStructureCreateInfoKHR, ##VkAccelerationStructureCreateInfoNV, ##VkAccelerationStructureDeviceAddressInfoKHR, ##VkAccelerationStructureGeometryAabbsDataKHR, ##VkAccelerationStructureGeometryInstancesDataKHR, ##VkAccelerationStructureGeometryKHR, ##VkAccelerationStructureGeometryMotionTrianglesDataNV, ##VkAccelerationStructureGeometryTrianglesDataKHR, ##VkAccelerationStructureInfoNV, ##VkAccelerationStructureMemoryRequirementsInfoNV, ##VkAccelerationStructureMotionInfoNV, ##VkAccelerationStructureTrianglesOpacityMicromapEXT, ##VkAccelerationStructureVersionInfoKHR, ##VkAcquireNextImageInfoKHR, ##VkAcquireProfilingLockInfoKHR, ##VkAmigoProfilingSubmitInfoSEC, ##VkAndroidHardwareBufferFormatProperties2ANDROID, ##VkAndroidHardwareBufferFormatPropertiesANDROID, ##VkAndroidHardwareBufferPropertiesANDROID, ##VkAndroidHardwareBufferUsageANDROID, ##VkAndroidSurfaceCreateInfoKHR, ##VkApplicationInfo, ##VkAttachmentDescription2, ##VkAttachmentDescriptionStencilLayout, ##VkAttachmentReference2, ##VkAttachmentReferenceStencilLayout, ##VkAttachmentSampleCountInfoAMD, ##VkBaseInStructure, ##VkBaseOutStructure, ##VkBindAccelerationStructureMemoryInfoNV, ##VkBindBufferMemoryDeviceGroupInfo, ##VkBindBufferMemoryInfo, ##VkBindImageMemoryDeviceGroupInfo, ##VkBindImageMemoryInfo, ##VkBindImageMemorySwapchainInfoKHR, ##VkBindImagePlaneMemoryInfo, ##VkBindSparseInfo, ##VkBindVideoSessionMemoryInfoKHR, ##VkBlitImageInfo2, ##VkBufferCaptureDescriptorDataInfoEXT, ##VkBufferCopy2, ##VkBufferCreateInfo, ##VkBufferDeviceAddressCreateInfoEXT, ##VkBufferDeviceAddressInfo, ##VkBufferImageCopy2, ##VkBufferMemoryBarrier, ##VkBufferMemoryBarrier2, ##VkBufferMemoryRequirementsInfo2, ##VkBufferOpaqueCaptureAddressCreateInfo, ##VkBufferViewCreateInfo, ##VkCalibratedTimestampInfoEXT, ##VkCheckpointData2NV, ##VkCheckpointDataNV, ##VkCommandBufferAllocateInfo, ##VkCommandBufferBeginInfo, ##VkCommandBufferInheritanceConditionalRenderingInfoEXT, ##VkCommandBufferInheritanceInfo, ##VkCommandBufferInheritanceRenderPassTransformInfoQCOM, ##VkCommandBufferInheritanceRenderingInfo, ##VkCommandBufferInheritanceViewportScissorInfoNV, ##VkCommandBufferSubmitInfo, ##VkCommandPoolCreateInfo, ##VkComputePipelineCreateInfo, ##VkConditionalRenderingBeginInfoEXT, ##VkCooperativeMatrixPropertiesNV, ##VkCopyAccelerationStructureInfoKHR, ##VkCopyAccelerationStructureToMemoryInfoKHR, ##VkCopyBufferInfo2, ##VkCopyBufferToImageInfo2, ##VkCopyCommandTransformInfoQCOM, ##VkCopyDescriptorSet, ##VkCopyImageInfo2, ##VkCopyImageToBufferInfo2, ##VkCopyMemoryToAccelerationStructureInfoKHR, ##VkCopyMemoryToMicromapInfoEXT, ##VkCopyMicromapInfoEXT, ##VkCopyMicromapToMemoryInfoEXT, ##VkCuFunctionCreateInfoNVX, ##VkCuLaunchInfoNVX, ##VkCuModuleCreateInfoNVX, ##VkD3D12FenceSubmitInfoKHR, ##VkDebugMarkerMarkerInfoEXT, ##VkDebugMarkerObjectNameInfoEXT, ##VkDebugMarkerObjectTagInfoEXT, ##VkDebugReportCallbackCreateInfoEXT, ##VkDebugUtilsLabelEXT, ##VkDebugUtilsMessengerCallbackDataEXT, ##VkDebugUtilsMessengerCreateInfoEXT, ##VkDebugUtilsObjectNameInfoEXT, ##VkDebugUtilsObjectTagInfoEXT, ##VkDedicatedAllocationBufferCreateInfoNV, ##VkDedicatedAllocationImageCreateInfoNV, ##VkDedicatedAllocationMemoryAllocateInfoNV, ##VkDependencyInfo, ##VkDescriptorAddressInfoEXT, ##VkDescriptorBufferBindingInfoEXT, ##VkDescriptorBufferBindingPushDescriptorBufferHandleEXT, ##VkDescriptorGetInfoEXT, ##VkDescriptorPoolCreateInfo, ##VkDescriptorPoolInlineUniformBlockCreateInfo, ##VkDescriptorSetAllocateInfo, ##VkDescriptorSetBindingReferenceVALVE, ##VkDescriptorSetLayoutBindingFlagsCreateInfo, ##VkDescriptorSetLayoutCreateInfo, ##VkDescriptorSetLayoutHostMappingInfoVALVE, ##VkDescriptorSetLayoutSupport, ##VkDescriptorSetVariableDescriptorCountAllocateInfo, ##VkDescriptorSetVariableDescriptorCountLayoutSupport, ##VkDescriptorUpdateTemplateCreateInfo, ##VkDeviceAddressBindingCallbackDataEXT, ##VkDeviceBufferMemoryRequirements, ##VkDeviceCreateInfo, ##VkDeviceDeviceMemoryReportCreateInfoEXT, ##VkDeviceDiagnosticsConfigCreateInfoNV, ##VkDeviceEventInfoEXT, ##VkDeviceFaultCountsEXT, ##VkDeviceFaultInfoEXT, ##VkDeviceGroupBindSparseInfo, ##VkDeviceGroupCommandBufferBeginInfo, ##VkDeviceGroupDeviceCreateInfo, ##VkDeviceGroupPresentCapabilitiesKHR, ##VkDeviceGroupPresentInfoKHR, ##VkDeviceGroupRenderPassBeginInfo, ##VkDeviceGroupSubmitInfo, ##VkDeviceGroupSwapchainCreateInfoKHR, ##VkDeviceImageMemoryRequirements, ##VkDeviceMemoryOpaqueCaptureAddressInfo, ##VkDeviceMemoryOverallocationCreateInfoAMD, ##VkDeviceMemoryReportCallbackDataEXT, ##VkDevicePrivateDataCreateInfo, ##VkDeviceQueueCreateInfo, ##VkDeviceQueueGlobalPriorityCreateInfoKHR, ##VkDeviceQueueInfo2, ##VkDirectDriverLoadingInfoLUNARG, ##VkDirectDriverLoadingListLUNARG, ##VkDirectFBSurfaceCreateInfoEXT, ##VkDisplayEventInfoEXT, ##VkDisplayModeCreateInfoKHR, ##VkDisplayModeProperties2KHR, ##VkDisplayNativeHdrSurfaceCapabilitiesAMD, ##VkDisplayPlaneCapabilities2KHR, ##VkDisplayPlaneInfo2KHR, ##VkDisplayPlaneProperties2KHR, ##VkDisplayPowerInfoEXT, ##VkDisplayPresentInfoKHR, ##VkDisplayProperties2KHR, ##VkDisplaySurfaceCreateInfoKHR, ##VkDrmFormatModifierPropertiesList2EXT, ##VkDrmFormatModifierPropertiesListEXT, ##VkEventCreateInfo, ##VkExportFenceCreateInfo, ##VkExportFenceWin32HandleInfoKHR, ##VkExportMemoryAllocateInfo, ##VkExportMemoryAllocateInfoNV, ##VkExportMemoryWin32HandleInfoKHR, ##VkExportMemoryWin32HandleInfoNV, ##VkExportMetalBufferInfoEXT, ##VkExportMetalCommandQueueInfoEXT, ##VkExportMetalDeviceInfoEXT, ##VkExportMetalIOSurfaceInfoEXT, ##VkExportMetalObjectCreateInfoEXT, ##VkExportMetalObjectsInfoEXT, ##VkExportMetalSharedEventInfoEXT, ##VkExportMetalTextureInfoEXT, ##VkExportSemaphoreCreateInfo, ##VkExportSemaphoreWin32HandleInfoKHR, ##VkExternalBufferProperties, ##VkExternalFenceProperties, ##VkExternalFormatANDROID, ##VkExternalImageFormatProperties, ##VkExternalMemoryBufferCreateInfo, ##VkExternalMemoryImageCreateInfo, ##VkExternalMemoryImageCreateInfoNV, ##VkExternalSemaphoreProperties, ##VkFenceCreateInfo, ##VkFenceGetFdInfoKHR, ##VkFenceGetWin32HandleInfoKHR, ##VkFilterCubicImageViewImageFormatPropertiesEXT, ##VkFormatProperties2, ##VkFormatProperties3, ##VkFragmentShadingRateAttachmentInfoKHR, ##VkFramebufferAttachmentImageInfo, ##VkFramebufferAttachmentsCreateInfo, ##VkFramebufferCreateInfo, ##VkFramebufferMixedSamplesCombinationNV, ##VkGeneratedCommandsInfoNV, ##VkGeneratedCommandsMemoryRequirementsInfoNV, ##VkGeometryAABBNV, ##VkGeometryNV, ##VkGeometryTrianglesNV, ##VkGraphicsPipelineCreateInfo, ##VkGraphicsPipelineLibraryCreateInfoEXT, ##VkGraphicsPipelineShaderGroupsCreateInfoNV, ##VkGraphicsShaderGroupCreateInfoNV, ##VkHdrMetadataEXT, ##VkHeadlessSurfaceCreateInfoEXT, ##VkImageBlit2, ##VkImageCaptureDescriptorDataInfoEXT, ##VkImageCompressionControlEXT, ##VkImageCompressionPropertiesEXT, ##VkImageCopy2, ##VkImageCreateInfo, ##VkImageDrmFormatModifierExplicitCreateInfoEXT, ##VkImageDrmFormatModifierListCreateInfoEXT, ##VkImageDrmFormatModifierPropertiesEXT, ##VkImageFormatListCreateInfo, ##VkImageFormatProperties2, ##VkImageMemoryBarrier, ##VkImageMemoryBarrier2, ##VkImageMemoryRequirementsInfo2, ##VkImagePlaneMemoryRequirementsInfo, ##VkImageResolve2, ##VkImageSparseMemoryRequirementsInfo2, ##VkImageStencilUsageCreateInfo, ##VkImageSubresource2EXT, ##VkImageSwapchainCreateInfoKHR, ##VkImageViewASTCDecodeModeEXT, ##VkImageViewAddressPropertiesNVX, ##VkImageViewCaptureDescriptorDataInfoEXT, ##VkImageViewCreateInfo, ##VkImageViewHandleInfoNVX, ##VkImageViewMinLodCreateInfoEXT, ##VkImageViewSampleWeightCreateInfoQCOM, ##VkImageViewUsageCreateInfo, ##VkImportAndroidHardwareBufferInfoANDROID, ##VkImportFenceFdInfoKHR, ##VkImportFenceWin32HandleInfoKHR, ##VkImportMemoryFdInfoKHR, ##VkImportMemoryHostPointerInfoEXT, ##VkImportMemoryWin32HandleInfoKHR, ##VkImportMemoryWin32HandleInfoNV, ##VkImportMetalBufferInfoEXT, ##VkImportMetalIOSurfaceInfoEXT, ##VkImportMetalSharedEventInfoEXT, ##VkImportMetalTextureInfoEXT, ##VkImportSemaphoreFdInfoKHR, ##VkImportSemaphoreWin32HandleInfoKHR, ##VkIndirectCommandsLayoutCreateInfoNV, ##VkIndirectCommandsLayoutTokenNV, ##VkInitializePerformanceApiInfoINTEL, ##VkInstanceCreateInfo, ##VkMacOSSurfaceCreateInfoMVK, ##VkMappedMemoryRange, ##VkMemoryAllocateFlagsInfo, ##VkMemoryAllocateInfo, ##VkMemoryBarrier, ##VkMemoryBarrier2, ##VkMemoryDedicatedAllocateInfo, ##VkMemoryDedicatedRequirements, ##VkMemoryFdPropertiesKHR, ##VkMemoryGetAndroidHardwareBufferInfoANDROID, ##VkMemoryGetFdInfoKHR, ##VkMemoryGetRemoteAddressInfoNV, ##VkMemoryGetWin32HandleInfoKHR, ##VkMemoryHostPointerPropertiesEXT, ##VkMemoryOpaqueCaptureAddressAllocateInfo, ##VkMemoryPriorityAllocateInfoEXT, ##VkMemoryRequirements2, ##VkMemoryWin32HandlePropertiesKHR, ##VkMetalSurfaceCreateInfoEXT, ##VkMicromapBuildInfoEXT, ##VkMicromapBuildSizesInfoEXT, ##VkMicromapCreateInfoEXT, ##VkMicromapVersionInfoEXT, ##VkMultisamplePropertiesEXT, ##VkMultisampledRenderToSingleSampledInfoEXT, ##VkMultiviewPerViewAttributesInfoNVX, ##VkMutableDescriptorTypeCreateInfoEXT, ##VkOpaqueCaptureDescriptorDataCreateInfoEXT, ##VkOpticalFlowExecuteInfoNV, ##VkOpticalFlowImageFormatInfoNV, ##VkOpticalFlowImageFormatPropertiesNV, ##VkOpticalFlowSessionCreateInfoNV, ##VkOpticalFlowSessionCreatePrivateDataInfoNV, ##VkPerformanceConfigurationAcquireInfoINTEL, ##VkPerformanceCounterDescriptionKHR, ##VkPerformanceCounterKHR, ##VkPerformanceMarkerInfoINTEL, ##VkPerformanceOverrideInfoINTEL, ##VkPerformanceQuerySubmitInfoKHR, ##VkPerformanceStreamMarkerInfoINTEL, ##VkPhysicalDevice16BitStorageFeatures, ##VkPhysicalDevice4444FormatsFeaturesEXT, ##VkPhysicalDevice8BitStorageFeatures, ##VkPhysicalDeviceASTCDecodeFeaturesEXT, ##VkPhysicalDeviceAccelerationStructureFeaturesKHR, ##VkPhysicalDeviceAccelerationStructurePropertiesKHR, ##VkPhysicalDeviceAddressBindingReportFeaturesEXT, ##VkPhysicalDeviceAmigoProfilingFeaturesSEC, ##VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT, ##VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, ##VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, ##VkPhysicalDeviceBorderColorSwizzleFeaturesEXT, ##VkPhysicalDeviceBufferDeviceAddressFeatures, ##VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, ##VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI, ##VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI, ##VkPhysicalDeviceCoherentMemoryFeaturesAMD, ##VkPhysicalDeviceColorWriteEnableFeaturesEXT, ##VkPhysicalDeviceComputeShaderDerivativesFeaturesNV, ##VkPhysicalDeviceConditionalRenderingFeaturesEXT, ##VkPhysicalDeviceConservativeRasterizationPropertiesEXT, ##VkPhysicalDeviceCooperativeMatrixFeaturesNV, ##VkPhysicalDeviceCooperativeMatrixPropertiesNV, ##VkPhysicalDeviceCopyMemoryIndirectFeaturesNV, ##VkPhysicalDeviceCopyMemoryIndirectPropertiesNV, ##VkPhysicalDeviceCornerSampledImageFeaturesNV, ##VkPhysicalDeviceCoverageReductionModeFeaturesNV, ##VkPhysicalDeviceCustomBorderColorFeaturesEXT, ##VkPhysicalDeviceCustomBorderColorPropertiesEXT, ##VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV, ##VkPhysicalDeviceDepthClampZeroOneFeaturesEXT, ##VkPhysicalDeviceDepthClipControlFeaturesEXT, ##VkPhysicalDeviceDepthClipEnableFeaturesEXT, ##VkPhysicalDeviceDepthStencilResolveProperties, ##VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT, ##VkPhysicalDeviceDescriptorBufferFeaturesEXT, ##VkPhysicalDeviceDescriptorBufferPropertiesEXT, ##VkPhysicalDeviceDescriptorIndexingFeatures, ##VkPhysicalDeviceDescriptorIndexingProperties, ##VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE, ##VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV, ##VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV, ##VkPhysicalDeviceDeviceMemoryReportFeaturesEXT, ##VkPhysicalDeviceDiagnosticsConfigFeaturesNV, ##VkPhysicalDeviceDiscardRectanglePropertiesEXT, ##VkPhysicalDeviceDriverProperties, ##VkPhysicalDeviceDrmPropertiesEXT, ##VkPhysicalDeviceDynamicRenderingFeatures, ##VkPhysicalDeviceExclusiveScissorFeaturesNV, ##VkPhysicalDeviceExtendedDynamicState2FeaturesEXT, ##VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, ##VkPhysicalDeviceExtendedDynamicState3PropertiesEXT, ##VkPhysicalDeviceExtendedDynamicStateFeaturesEXT, ##VkPhysicalDeviceExternalBufferInfo, ##VkPhysicalDeviceExternalFenceInfo, ##VkPhysicalDeviceExternalImageFormatInfo, ##VkPhysicalDeviceExternalMemoryHostPropertiesEXT, ##VkPhysicalDeviceExternalMemoryRDMAFeaturesNV, ##VkPhysicalDeviceExternalSemaphoreInfo, ##VkPhysicalDeviceFaultFeaturesEXT, ##VkPhysicalDeviceFeatures2, ##VkPhysicalDeviceFloatControlsProperties, ##VkPhysicalDeviceFragmentDensityMap2FeaturesEXT, ##VkPhysicalDeviceFragmentDensityMap2PropertiesEXT, ##VkPhysicalDeviceFragmentDensityMapFeaturesEXT, ##VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM, ##VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM, ##VkPhysicalDeviceFragmentDensityMapPropertiesEXT, ##VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR, ##VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR, ##VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, ##VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV, ##VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV, ##VkPhysicalDeviceFragmentShadingRateFeaturesKHR, ##VkPhysicalDeviceFragmentShadingRateKHR, ##VkPhysicalDeviceFragmentShadingRatePropertiesKHR, ##VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR, ##VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT, ##VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT, ##VkPhysicalDeviceGroupProperties, ##VkPhysicalDeviceHostQueryResetFeatures, ##VkPhysicalDeviceIDProperties, ##VkPhysicalDeviceImage2DViewOf3DFeaturesEXT, ##VkPhysicalDeviceImageCompressionControlFeaturesEXT, ##VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT, ##VkPhysicalDeviceImageDrmFormatModifierInfoEXT, ##VkPhysicalDeviceImageFormatInfo2, ##VkPhysicalDeviceImageProcessingFeaturesQCOM, ##VkPhysicalDeviceImageProcessingPropertiesQCOM, ##VkPhysicalDeviceImageRobustnessFeatures, ##VkPhysicalDeviceImageViewImageFormatInfoEXT, ##VkPhysicalDeviceImageViewMinLodFeaturesEXT, ##VkPhysicalDeviceImagelessFramebufferFeatures, ##VkPhysicalDeviceIndexTypeUint8FeaturesEXT, ##VkPhysicalDeviceInheritedViewportScissorFeaturesNV, ##VkPhysicalDeviceInlineUniformBlockFeatures, ##VkPhysicalDeviceInlineUniformBlockProperties, ##VkPhysicalDeviceInvocationMaskFeaturesHUAWEI, ##VkPhysicalDeviceLegacyDitheringFeaturesEXT, ##VkPhysicalDeviceLineRasterizationFeaturesEXT, ##VkPhysicalDeviceLineRasterizationPropertiesEXT, ##VkPhysicalDeviceLinearColorAttachmentFeaturesNV, ##VkPhysicalDeviceMaintenance3Properties, ##VkPhysicalDeviceMaintenance4Features, ##VkPhysicalDeviceMaintenance4Properties, ##VkPhysicalDeviceMemoryBudgetPropertiesEXT, ##VkPhysicalDeviceMemoryDecompressionFeaturesNV, ##VkPhysicalDeviceMemoryDecompressionPropertiesNV, ##VkPhysicalDeviceMemoryPriorityFeaturesEXT, ##VkPhysicalDeviceMemoryProperties2, ##VkPhysicalDeviceMeshShaderFeaturesEXT, ##VkPhysicalDeviceMeshShaderFeaturesNV, ##VkPhysicalDeviceMeshShaderPropertiesEXT, ##VkPhysicalDeviceMeshShaderPropertiesNV, ##VkPhysicalDeviceMultiDrawFeaturesEXT, ##VkPhysicalDeviceMultiDrawPropertiesEXT, ##VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT, ##VkPhysicalDeviceMultiviewFeatures, ##VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, ##VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM, ##VkPhysicalDeviceMultiviewProperties, ##VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT, ##VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT, ##VkPhysicalDeviceOpacityMicromapFeaturesEXT, ##VkPhysicalDeviceOpacityMicromapPropertiesEXT, ##VkPhysicalDeviceOpticalFlowFeaturesNV, ##VkPhysicalDeviceOpticalFlowPropertiesNV, ##VkPhysicalDevicePCIBusInfoPropertiesEXT, ##VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT, ##VkPhysicalDevicePerformanceQueryFeaturesKHR, ##VkPhysicalDevicePerformanceQueryPropertiesKHR, ##VkPhysicalDevicePipelineCreationCacheControlFeatures, ##VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR, ##VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT, ##VkPhysicalDevicePipelinePropertiesFeaturesEXT, ##VkPhysicalDevicePipelineProtectedAccessFeaturesEXT, ##VkPhysicalDevicePipelineRobustnessFeaturesEXT, ##VkPhysicalDevicePipelineRobustnessPropertiesEXT, ##VkPhysicalDevicePointClippingProperties, ##VkPhysicalDevicePortabilitySubsetFeaturesKHR, ##VkPhysicalDevicePortabilitySubsetPropertiesKHR, ##VkPhysicalDevicePresentBarrierFeaturesNV, ##VkPhysicalDevicePresentIdFeaturesKHR, ##VkPhysicalDevicePresentWaitFeaturesKHR, ##VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT, ##VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT, ##VkPhysicalDevicePrivateDataFeatures, ##VkPhysicalDeviceProperties2, ##VkPhysicalDeviceProtectedMemoryFeatures, ##VkPhysicalDeviceProtectedMemoryProperties, ##VkPhysicalDeviceProvokingVertexFeaturesEXT, ##VkPhysicalDeviceProvokingVertexPropertiesEXT, ##VkPhysicalDevicePushDescriptorPropertiesKHR, ##VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT, ##VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT, ##VkPhysicalDeviceRayQueryFeaturesKHR, ##VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV, ##VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV, ##VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR, ##VkPhysicalDeviceRayTracingMotionBlurFeaturesNV, ##VkPhysicalDeviceRayTracingPipelineFeaturesKHR, ##VkPhysicalDeviceRayTracingPipelinePropertiesKHR, ##VkPhysicalDeviceRayTracingPropertiesNV, ##VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV, ##VkPhysicalDeviceRobustness2FeaturesEXT, ##VkPhysicalDeviceRobustness2PropertiesEXT, ##VkPhysicalDeviceSampleLocationsPropertiesEXT, ##VkPhysicalDeviceSamplerFilterMinmaxProperties, ##VkPhysicalDeviceSamplerYcbcrConversionFeatures, ##VkPhysicalDeviceScalarBlockLayoutFeatures, ##VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, ##VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, ##VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, ##VkPhysicalDeviceShaderAtomicInt64Features, ##VkPhysicalDeviceShaderClockFeaturesKHR, ##VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM, ##VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM, ##VkPhysicalDeviceShaderCoreProperties2AMD, ##VkPhysicalDeviceShaderCorePropertiesAMD, ##VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures, ##VkPhysicalDeviceShaderDrawParametersFeatures, ##VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD, ##VkPhysicalDeviceShaderFloat16Int8Features, ##VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT, ##VkPhysicalDeviceShaderImageFootprintFeaturesNV, ##VkPhysicalDeviceShaderIntegerDotProductFeatures, ##VkPhysicalDeviceShaderIntegerDotProductProperties, ##VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL, ##VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT, ##VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT, ##VkPhysicalDeviceShaderSMBuiltinsFeaturesNV, ##VkPhysicalDeviceShaderSMBuiltinsPropertiesNV, ##VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, ##VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR, ##VkPhysicalDeviceShaderTerminateInvocationFeatures, ##VkPhysicalDeviceShadingRateImageFeaturesNV, ##VkPhysicalDeviceShadingRateImagePropertiesNV, ##VkPhysicalDeviceSparseImageFormatInfo2, ##VkPhysicalDeviceSubgroupProperties, ##VkPhysicalDeviceSubgroupSizeControlFeatures, ##VkPhysicalDeviceSubgroupSizeControlProperties, ##VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT, ##VkPhysicalDeviceSubpassShadingFeaturesHUAWEI, ##VkPhysicalDeviceSubpassShadingPropertiesHUAWEI, ##VkPhysicalDeviceSurfaceInfo2KHR, ##VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT, ##VkPhysicalDeviceSynchronization2Features, ##VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT, ##VkPhysicalDeviceTexelBufferAlignmentProperties, ##VkPhysicalDeviceTextureCompressionASTCHDRFeatures, ##VkPhysicalDeviceTilePropertiesFeaturesQCOM, ##VkPhysicalDeviceTimelineSemaphoreFeatures, ##VkPhysicalDeviceTimelineSemaphoreProperties, ##VkPhysicalDeviceToolProperties, ##VkPhysicalDeviceTransformFeedbackFeaturesEXT, ##VkPhysicalDeviceTransformFeedbackPropertiesEXT, ##VkPhysicalDeviceUniformBufferStandardLayoutFeatures, ##VkPhysicalDeviceVariablePointersFeatures, ##VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT, ##VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, ##VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT, ##VkPhysicalDeviceVideoFormatInfoKHR, ##VkPhysicalDeviceVulkan11Features, ##VkPhysicalDeviceVulkan11Properties, ##VkPhysicalDeviceVulkan12Features, ##VkPhysicalDeviceVulkan12Properties, ##VkPhysicalDeviceVulkan13Features, ##VkPhysicalDeviceVulkan13Properties, ##VkPhysicalDeviceVulkanMemoryModelFeatures, ##VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR, ##VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT, ##VkPhysicalDeviceYcbcrImageArraysFeaturesEXT, ##VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures, ##VkPipelineCacheCreateInfo, ##VkPipelineColorBlendAdvancedStateCreateInfoEXT, ##VkPipelineColorBlendStateCreateInfo, ##VkPipelineColorWriteCreateInfoEXT, ##VkPipelineCompilerControlCreateInfoAMD, ##VkPipelineCoverageModulationStateCreateInfoNV, ##VkPipelineCoverageReductionStateCreateInfoNV, ##VkPipelineCoverageToColorStateCreateInfoNV, ##VkPipelineCreationFeedbackCreateInfo, ##VkPipelineDepthStencilStateCreateInfo, ##VkPipelineDiscardRectangleStateCreateInfoEXT, ##VkPipelineDynamicStateCreateInfo, ##VkPipelineExecutableInfoKHR, ##VkPipelineExecutableInternalRepresentationKHR, ##VkPipelineExecutablePropertiesKHR, ##VkPipelineExecutableStatisticKHR, ##VkPipelineFragmentShadingRateEnumStateCreateInfoNV, ##VkPipelineFragmentShadingRateStateCreateInfoKHR, ##VkPipelineInfoKHR, ##VkPipelineInputAssemblyStateCreateInfo, ##VkPipelineLayoutCreateInfo, ##VkPipelineLibraryCreateInfoKHR, ##VkPipelineMultisampleStateCreateInfo, ##VkPipelinePropertiesIdentifierEXT, ##VkPipelineRasterizationConservativeStateCreateInfoEXT, ##VkPipelineRasterizationDepthClipStateCreateInfoEXT, ##VkPipelineRasterizationLineStateCreateInfoEXT, ##VkPipelineRasterizationProvokingVertexStateCreateInfoEXT, ##VkPipelineRasterizationStateCreateInfo, ##VkPipelineRasterizationStateRasterizationOrderAMD, ##VkPipelineRasterizationStateStreamCreateInfoEXT, ##VkPipelineRenderingCreateInfo, ##VkPipelineRepresentativeFragmentTestStateCreateInfoNV, ##VkPipelineRobustnessCreateInfoEXT, ##VkPipelineSampleLocationsStateCreateInfoEXT, ##VkPipelineShaderStageCreateInfo, ##VkPipelineShaderStageModuleIdentifierCreateInfoEXT, ##VkPipelineShaderStageRequiredSubgroupSizeCreateInfo, ##VkPipelineTessellationDomainOriginStateCreateInfo, ##VkPipelineTessellationStateCreateInfo, ##VkPipelineVertexInputDivisorStateCreateInfoEXT, ##VkPipelineVertexInputStateCreateInfo, ##VkPipelineViewportCoarseSampleOrderStateCreateInfoNV, ##VkPipelineViewportDepthClipControlCreateInfoEXT, ##VkPipelineViewportExclusiveScissorStateCreateInfoNV, ##VkPipelineViewportShadingRateImageStateCreateInfoNV, ##VkPipelineViewportStateCreateInfo, ##VkPipelineViewportSwizzleStateCreateInfoNV, ##VkPipelineViewportWScalingStateCreateInfoNV, ##VkPresentIdKHR, ##VkPresentInfoKHR, ##VkPresentRegionsKHR, ##VkPresentTimesInfoGOOGLE, ##VkPrivateDataSlotCreateInfo, ##VkProtectedSubmitInfo, ##VkQueryPoolCreateInfo, ##VkQueryPoolPerformanceCreateInfoKHR, ##VkQueryPoolPerformanceQueryCreateInfoINTEL, ##VkQueueFamilyCheckpointProperties2NV, ##VkQueueFamilyCheckpointPropertiesNV, ##VkQueueFamilyGlobalPriorityPropertiesKHR, ##VkQueueFamilyProperties2, ##VkQueueFamilyQueryResultStatusPropertiesKHR, ##VkQueueFamilyVideoPropertiesKHR, ##VkRayTracingPipelineCreateInfoKHR, ##VkRayTracingPipelineCreateInfoNV, ##VkRayTracingPipelineInterfaceCreateInfoKHR, ##VkRayTracingShaderGroupCreateInfoKHR, ##VkRayTracingShaderGroupCreateInfoNV, ##VkReleaseSwapchainImagesInfoEXT, ##VkRenderPassAttachmentBeginInfo, ##VkRenderPassBeginInfo, ##VkRenderPassCreateInfo, ##VkRenderPassCreateInfo2, ##VkRenderPassCreationControlEXT, ##VkRenderPassCreationFeedbackCreateInfoEXT, ##VkRenderPassFragmentDensityMapCreateInfoEXT, ##VkRenderPassInputAttachmentAspectCreateInfo, ##VkRenderPassMultiviewCreateInfo, ##VkRenderPassSampleLocationsBeginInfoEXT, ##VkRenderPassSubpassFeedbackCreateInfoEXT, ##VkRenderPassTransformBeginInfoQCOM, ##VkRenderingAttachmentInfo, ##VkRenderingFragmentDensityMapAttachmentInfoEXT, ##VkRenderingFragmentShadingRateAttachmentInfoKHR, ##VkRenderingInfo, ##VkResolveImageInfo2, ##VkSampleLocationsInfoEXT, ##VkSamplerBorderColorComponentMappingCreateInfoEXT, ##VkSamplerCaptureDescriptorDataInfoEXT, ##VkSamplerCreateInfo, ##VkSamplerCustomBorderColorCreateInfoEXT, ##VkSamplerReductionModeCreateInfo, ##VkSamplerYcbcrConversionCreateInfo, ##VkSamplerYcbcrConversionImageFormatProperties, ##VkSamplerYcbcrConversionInfo, ##VkSemaphoreCreateInfo, ##VkSemaphoreGetFdInfoKHR, ##VkSemaphoreGetWin32HandleInfoKHR, ##VkSemaphoreSignalInfo, ##VkSemaphoreSubmitInfo, ##VkSemaphoreTypeCreateInfo, ##VkSemaphoreWaitInfo, ##VkShaderModuleCreateInfo, ##VkShaderModuleIdentifierEXT, ##VkShaderModuleValidationCacheCreateInfoEXT, ##VkSharedPresentSurfaceCapabilitiesKHR, ##VkSparseImageFormatProperties2, ##VkSparseImageMemoryRequirements2, ##VkSubmitInfo, ##VkSubmitInfo2, ##VkSubpassBeginInfo, ##VkSubpassDependency2, ##VkSubpassDescription2, ##VkSubpassDescriptionDepthStencilResolve, ##VkSubpassEndInfo, ##VkSubpassFragmentDensityMapOffsetEndInfoQCOM, ##VkSubpassResolvePerformanceQueryEXT, ##VkSubpassShadingPipelineCreateInfoHUAWEI, ##VkSubresourceLayout2EXT, ##VkSurfaceCapabilities2EXT, ##VkSurfaceCapabilities2KHR, ##VkSurfaceCapabilitiesFullScreenExclusiveEXT, ##VkSurfaceCapabilitiesPresentBarrierNV, ##VkSurfaceFormat2KHR, ##VkSurfaceFullScreenExclusiveInfoEXT, ##VkSurfaceFullScreenExclusiveWin32InfoEXT, ##VkSurfacePresentModeCompatibilityEXT, ##VkSurfacePresentModeEXT, ##VkSurfacePresentScalingCapabilitiesEXT, ##VkSurfaceProtectedCapabilitiesKHR, ##VkSwapchainCounterCreateInfoEXT, ##VkSwapchainCreateInfoKHR, ##VkSwapchainDisplayNativeHdrCreateInfoAMD, ##VkSwapchainPresentBarrierCreateInfoNV, ##VkSwapchainPresentFenceInfoEXT, ##VkSwapchainPresentModeInfoEXT, ##VkSwapchainPresentModesCreateInfoEXT, ##VkSwapchainPresentScalingCreateInfoEXT, ##VkTextureLODGatherFormatPropertiesAMD, ##VkTilePropertiesQCOM, ##VkTimelineSemaphoreSubmitInfo, ##VkValidationCacheCreateInfoEXT, ##VkValidationFeaturesEXT, ##VkValidationFlagsEXT, ##VkVertexInputAttributeDescription2EXT, ##VkVertexInputBindingDescription2EXT, ##VkVideoBeginCodingInfoKHR, ##VkVideoCapabilitiesKHR, ##VkVideoCodingControlInfoKHR, ##VkVideoDecodeCapabilitiesKHR, ##VkVideoDecodeH264CapabilitiesKHR, ##VkVideoDecodeH264DpbSlotInfoKHR, ##VkVideoDecodeH264PictureInfoKHR, ##VkVideoDecodeH264ProfileInfoKHR, ##VkVideoDecodeH264SessionParametersAddInfoKHR, ##VkVideoDecodeH264SessionParametersCreateInfoKHR, ##VkVideoDecodeH265CapabilitiesKHR, ##VkVideoDecodeH265DpbSlotInfoKHR, ##VkVideoDecodeH265PictureInfoKHR, ##VkVideoDecodeH265ProfileInfoKHR, ##VkVideoDecodeH265SessionParametersAddInfoKHR, ##VkVideoDecodeH265SessionParametersCreateInfoKHR, ##VkVideoDecodeInfoKHR, ##VkVideoDecodeUsageInfoKHR, ##VkVideoEncodeCapabilitiesKHR, ##VkVideoEncodeH264CapabilitiesEXT, ##VkVideoEncodeH264DpbSlotInfoEXT, ##VkVideoEncodeH264EmitPictureParametersInfoEXT, ##VkVideoEncodeH264NaluSliceInfoEXT, ##VkVideoEncodeH264ProfileInfoEXT, ##VkVideoEncodeH264RateControlInfoEXT, ##VkVideoEncodeH264RateControlLayerInfoEXT, ##VkVideoEncodeH264ReferenceListsInfoEXT, ##VkVideoEncodeH264SessionParametersAddInfoEXT, ##VkVideoEncodeH264SessionParametersCreateInfoEXT, ##VkVideoEncodeH264VclFrameInfoEXT, ##VkVideoEncodeH265CapabilitiesEXT, ##VkVideoEncodeH265DpbSlotInfoEXT, ##VkVideoEncodeH265EmitPictureParametersInfoEXT, ##VkVideoEncodeH265NaluSliceSegmentInfoEXT, ##VkVideoEncodeH265ProfileInfoEXT, ##VkVideoEncodeH265RateControlInfoEXT, ##VkVideoEncodeH265RateControlLayerInfoEXT, ##VkVideoEncodeH265ReferenceListsInfoEXT, ##VkVideoEncodeH265SessionParametersAddInfoEXT, ##VkVideoEncodeH265SessionParametersCreateInfoEXT, ##VkVideoEncodeH265VclFrameInfoEXT, ##VkVideoEncodeInfoKHR, ##VkVideoEncodeRateControlInfoKHR, ##VkVideoEncodeRateControlLayerInfoKHR, ##VkVideoEncodeUsageInfoKHR, ##VkVideoEndCodingInfoKHR, ##VkVideoFormatPropertiesKHR, ##VkVideoPictureResourceInfoKHR, ##VkVideoProfileInfoKHR, ##VkVideoProfileListInfoKHR, ##VkVideoReferenceSlotInfoKHR, ##VkVideoSessionCreateInfoKHR, ##VkVideoSessionMemoryRequirementsKHR, ##VkVideoSessionParametersCreateInfoKHR, ##VkVideoSessionParametersUpdateInfoKHR, ##VkWaylandSurfaceCreateInfoKHR, ##VkWin32KeyedMutexAcquireReleaseInfoKHR, ##VkWin32KeyedMutexAcquireReleaseInfoNV, ##VkWin32SurfaceCreateInfoKHR, ##VkWriteDescriptorSet, ##VkWriteDescriptorSetAccelerationStructureKHR, ##VkWriteDescriptorSetAccelerationStructureNV, ##VkWriteDescriptorSetInlineUniformBlock, ##VkXcbSurfaceCreateInfoKHR, ##VkXlibSurfaceCreateInfoKHR
""",
"STRUCTURE_TYPE_APPLICATION_INFO".."0",
@@ -260,6 +260,10 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
#ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR | #PIPELINE_STAGE_TASK_SHADER_BIT_EXT, #PIPELINE_STAGE_MESH_SHADER_BIT_EXT, #PIPELINE_STAGE_VERTEX_SHADER_BIT, #PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT, #PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT, #PIPELINE_STAGE_GEOMETRY_SHADER_BIT, #PIPELINE_STAGE_FRAGMENT_SHADER_BIT, #PIPELINE_STAGE_COMPUTE_SHADER_BIT, #PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR, or #PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR |
#ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR | #PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR |
#ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT | #PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT |
+ #ACCESS_2_VIDEO_DECODE_READ_BIT_KHR | #PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR |
+ #ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR | #PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR |
+ #ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR | #PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR |
+ #ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR | #PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR |
""",
@@ -312,12 +316,12 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
#IMAGE_LAYOUT_SHARED_PRESENT_KHR is valid only for shared presentable images, and must be used for any usage the image supports.
#IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR must only be used as a fragment shading rate attachment or shading rate image. This layout is valid only for image subresources of images created with the #IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR usage bit enabled.
#IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT must only be used as a fragment density map attachment in a {@code VkRenderPass}. This layout is valid only for image subresources of images created with the #IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT usage bit enabled.
- #IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR must only be used as a decode output image of a video decode operation. This layout is valid only for image subresources of images created with the #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR usage bit enabled.
+ #IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR must only be used as a decode output picture in a video decode operation. This layout is valid only for image subresources of images created with the #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR usage bit enabled.
#IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR is reserved for future use.
- #IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR must only be used as a decode source or destination image of a video decode operation. This layout is valid only for image subresources of images created with the #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR usage bit enabled.
+ #IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR must only be used as an output reconstructed picture or an input reference picture in a video decode operation. This layout is valid only for image subresources of images created with the #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR usage bit enabled.
#IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR is reserved for future use.
- #IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR must only be used as a encode source image of a video encode operation. This layout is valid only for image subresources of images created with the #IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR usage bit enabled.
- #IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR must only be used as a encode source or destination image of a video encode operation. This layout is valid only for image subresources of images created with the #IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR usage bit enabled.
+ #IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR must only be used as an encode input picture in a video encode operation. This layout is valid only for image subresources of images created with the #IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR usage bit enabled.
+ #IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR must only be used as an output reconstructed picture or an input reference picture in a video encode operation. This layout is valid only for image subresources of images created with the #IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR usage bit enabled.
#IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT must only be used as either a color attachment or depth/stencil attachment in a {@code VkFramebuffer} and/or read-only access in a shader as a sampled image, combined image/sampler, or input attachment. This layout is valid only for image subresources of images created with the #IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT usage bit enabled and either the #IMAGE_USAGE_COLOR_ATTACHMENT_BIT or #IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT and either the #IMAGE_USAGE_INPUT_ATTACHMENT_BIT or #IMAGE_USAGE_SAMPLED_BIT usage bits enabled.
@@ -784,7 +788,7 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
See Also
- ##VkAccelerationStructureGeometryTrianglesDataKHR, ##VkAttachmentDescription, ##VkAttachmentDescription2, ##VkBufferViewCreateInfo, ##VkCommandBufferInheritanceRenderingInfo, ##VkDescriptorAddressInfoEXT, ##VkFramebufferAttachmentImageInfo, ##VkGeometryTrianglesNV, ##VkImageCreateInfo, ##VkImageFormatListCreateInfo, ##VkImageViewASTCDecodeModeEXT, ##VkImageViewCreateInfo, ##VkOpticalFlowImageFormatPropertiesNV, ##VkOpticalFlowSessionCreateInfoNV, ##VkPhysicalDeviceImageFormatInfo2, ##VkPhysicalDeviceSparseImageFormatInfo2, ##VkPipelineRenderingCreateInfo, ##VkSamplerCustomBorderColorCreateInfoEXT, ##VkSamplerYcbcrConversionCreateInfo, ##VkSurfaceFormatKHR, ##VkSwapchainCreateInfoKHR, ##VkVertexInputAttributeDescription, ##VkVertexInputAttributeDescription2EXT, ##VkVideoFormatPropertiesKHR, ##VkVideoSessionCreateInfoKHR, #GetPhysicalDeviceExternalImageFormatPropertiesNV(), #GetPhysicalDeviceFormatProperties(), #GetPhysicalDeviceFormatProperties2(), #GetPhysicalDeviceFormatProperties2KHR(), #GetPhysicalDeviceImageFormatProperties(), #GetPhysicalDeviceSparseImageFormatProperties()
+ ##VkAccelerationStructureGeometryTrianglesDataKHR, ##VkAndroidHardwareBufferFormatProperties2ANDROID, ##VkAndroidHardwareBufferFormatPropertiesANDROID, ##VkAttachmentDescription, ##VkAttachmentDescription2, ##VkBufferViewCreateInfo, ##VkCommandBufferInheritanceRenderingInfo, ##VkDescriptorAddressInfoEXT, ##VkFramebufferAttachmentImageInfo, ##VkGeometryTrianglesNV, ##VkImageCreateInfo, ##VkImageFormatListCreateInfo, ##VkImageViewASTCDecodeModeEXT, ##VkImageViewCreateInfo, ##VkOpticalFlowImageFormatPropertiesNV, ##VkOpticalFlowSessionCreateInfoNV, ##VkPhysicalDeviceImageFormatInfo2, ##VkPhysicalDeviceSparseImageFormatInfo2, ##VkPipelineRenderingCreateInfo, ##VkSamplerCustomBorderColorCreateInfoEXT, ##VkSamplerYcbcrConversionCreateInfo, ##VkSurfaceFormatKHR, ##VkSwapchainCreateInfoKHR, ##VkVertexInputAttributeDescription, ##VkVertexInputAttributeDescription2EXT, ##VkVideoFormatPropertiesKHR, ##VkVideoSessionCreateInfoKHR, #GetPhysicalDeviceExternalImageFormatPropertiesNV(), #GetPhysicalDeviceFormatProperties(), #GetPhysicalDeviceFormatProperties2(), #GetPhysicalDeviceFormatProperties2KHR(), #GetPhysicalDeviceImageFormatProperties(), #GetPhysicalDeviceSparseImageFormatProperties()
""",
"FORMAT_UNDEFINED".."0",
@@ -1007,13 +1011,13 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
#FORMAT_FEATURE_DISJOINT_BIT specifies that a multi-planar image can have the #IMAGE_CREATE_DISJOINT_BIT set during image creation. An implementation must not set #FORMAT_FEATURE_DISJOINT_BIT for single-plane formats.
#FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT specifies that an image view can be used as a fragment density map attachment.
#FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR specifies that an image view can be used as a fragment shading rate attachment. An implementation must not set this feature for formats with numeric type other than {@code *UINT}, or set it as a buffer feature.
- #FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR specifies that an image view with this format can be used as an output for video decode operations
- #FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR specifies that an image view with this format can be used as a DPB for video decode operations
- #FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR specifies that an image view with this format can be used as an input to video encode operations
+ #FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR specifies that an image view with this format can be used as a decode output picture in video decode operations.
+ #FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR specifies that an image view with this format can be used as an output reconstructed picture or an input reference picture in video decode operations.
+ #FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR specifies that an image view with this format can be used as an encode input picture in video encode operations.
- #FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR specifies that an image view with this format can be used as a DPB for video encode operations
+ #FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR specifies that an image view with this format can be used as an output reconstructed picture or an input reference picture in video encode operations.
Note
- Specific video profiles
may have additional restrictions on the format and other image creation parameters corresponding to image views used by video coding operations that
can be enumerated using the #GetPhysicalDeviceVideoFormatPropertiesKHR() command, as described in
Enumeration of Supported Video Output, Input and DPB Formats.
+ Specific
video profiles may have additional restrictions on the format and other image creation parameters corresponding to image views used by video coding operations that
can be enumerated using the #GetPhysicalDeviceVideoFormatPropertiesKHR() command.
@@ -1027,6 +1031,10 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
#FORMAT_FEATURE_VERTEX_BUFFER_BIT specifies that the format can be used as a vertex attribute format (##VkVertexInputAttributeDescription{@code ::format}).
#FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR specifies that the format can be used as the vertex format when creating an acceleration structure (##VkAccelerationStructureGeometryTrianglesDataKHR{@code ::vertexFormat}). This format can also be used as the vertex format in host memory when doing host acceleration structure builds.
+
+ Note
+ #FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT and #FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT are only intended to be advertised for single-component formats, since SPIR-V atomic operations require a scalar type.
+
""",
"FORMAT_FEATURE_SAMPLED_IMAGE_BIT".enum(0x00000001),
@@ -1173,12 +1181,12 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
#IMAGE_USAGE_INPUT_ATTACHMENT_BIT specifies that the image can be used to create a {@code VkImageView} suitable for occupying {@code VkDescriptorSet} slot of type #DESCRIPTOR_TYPE_INPUT_ATTACHMENT; be read from a shader as an input attachment; and be used as an input attachment in a framebuffer.
#IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT specifies that the image can be used to create a {@code VkImageView} suitable for use as a fragment density map image.
#IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR specifies that the image can be used to create a {@code VkImageView} suitable for use as a fragment shading rate attachment or shading rate image
- #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR specifies that video decode operations can use the image as an output picture for video decode operations.
+ #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR specifies that the image can be used as a decode output picture in a video decode operation.
#IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR is reserved for future use.
- #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR specifies that video decode operations can use the image as a DPB Video Picture Resource, representing a reference picture. If an implementation requires separate allocations for DPB and decode output, indicating this by returning #ERROR_FORMAT_NOT_SUPPORTED to any #GetPhysicalDeviceVideoFormatPropertiesKHR() call with both #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR and #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR usage bits, then #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR must not be combined with any other {@code VK_IMAGE_USAGE_*} flags. Otherwise, #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR must be combined with #IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR, if the DPB image is required to coincide with the decoded output picture. In the case where DPB coincides with the decoded output picture, image resources can be used as reference pictures only after acting as targets for video decode operations, where its image view must be set to both ##VkVideoDecodeInfoKHR{@code ::pSetupReferenceSlot→pPictureResource→imageViewBinding} and ##VkVideoDecodeInfoKHR{@code ::dstPictureResource.imageViewBinding}.
- #IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR specifies that the image can be used as an input picture for video encode operations.
+ #IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR specifies that the image can be used as an output reconstructed picture or an input reference picture in a video decode operation.
#IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR is reserved for future use.
- #IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR specifies that video encode operations can use the image as an output to hold a reconstructed picture that can subsequently act as an input reference picture.
+ #IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR specifies that the image can be used as an encode input picture in a video encode operation.
+ #IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR specifies that the image can be used as an output reconstructed picture or an input reference picture in a video encode operation.
#IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT specifies that the image can be transitioned to the #IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT layout to be used as a color or depth/stencil attachment in a {@code VkFramebuffer} and/or as a read-only input resource in a shader (sampled image, combined image sampler or input attachment) in the same render pass.
""",
@@ -1274,8 +1282,8 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
#QUEUE_COMPUTE_BIT specifies that queues in this queue family support compute operations.
#QUEUE_TRANSFER_BIT specifies that queues in this queue family support transfer operations.
#QUEUE_SPARSE_BINDING_BIT specifies that queues in this queue family support sparse memory management operations (see Sparse Resources). If any of the sparse resource features are enabled, then at least one queue family must support this bit.
- #QUEUE_VIDEO_DECODE_BIT_KHR specifies that queues in this queue family support Video Decode operations.
- #QUEUE_VIDEO_ENCODE_BIT_KHR specifies that queues in this queue family support Video Encode operations.
+ #QUEUE_VIDEO_DECODE_BIT_KHR specifies that queues in this queue family support video decode operations.
+ #QUEUE_VIDEO_ENCODE_BIT_KHR specifies that queues in this queue family support video encode operations.
#QUEUE_OPTICAL_FLOW_BIT_NV specifies that queues in this queue family support optical flow operations.
#QUEUE_PROTECTED_BIT specifies that queues in this queue family support the #DEVICE_QUEUE_CREATE_PROTECTED_BIT bit. (see Protected Memory). If the physical device supports the {@code protectedMemory} feature, at least one of its queue families must support this bit.
@@ -1569,7 +1577,7 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
#BUFFER_USAGE_STORAGE_BUFFER_BIT specifies that the buffer can be used in a ##VkDescriptorBufferInfo suitable for occupying a {@code VkDescriptorSet} slot either of type #DESCRIPTOR_TYPE_STORAGE_BUFFER or #DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC.
#BUFFER_USAGE_INDEX_BUFFER_BIT specifies that the buffer is suitable for passing as the {@code buffer} parameter to #CmdBindIndexBuffer().
#BUFFER_USAGE_VERTEX_BUFFER_BIT specifies that the buffer is suitable for passing as an element of the {@code pBuffers} array to #CmdBindVertexBuffers().
- #BUFFER_USAGE_INDIRECT_BUFFER_BIT specifies that the buffer is suitable for passing as the {@code buffer} parameter to #CmdDrawIndirect(), #CmdDrawIndexedIndirect(), #CmdDrawMeshTasksIndirectNV(), #CmdDrawMeshTasksIndirectCountNV(), {@code vkCmdDrawMeshTasksIndirectEXT}, {@code vkCmdDrawMeshTasksIndirectCountEXT}, or #CmdDispatchIndirect(). It is also suitable for passing as the {@code buffer} member of ##VkIndirectCommandsStreamNV, or {@code sequencesCountBuffer} or {@code sequencesIndexBuffer} or {@code preprocessedBuffer} member of ##VkGeneratedCommandsInfoNV
+ #BUFFER_USAGE_INDIRECT_BUFFER_BIT specifies that the buffer is suitable for passing as the {@code buffer} parameter to #CmdDrawIndirect(), #CmdDrawIndexedIndirect(), #CmdDrawMeshTasksIndirectNV(), #CmdDrawMeshTasksIndirectCountNV(), {@code vkCmdDrawMeshTasksIndirectEXT}, {@code vkCmdDrawMeshTasksIndirectCountEXT}, #CmdDrawClusterIndirectHUAWEI(), or #CmdDispatchIndirect(). It is also suitable for passing as the {@code buffer} member of ##VkIndirectCommandsStreamNV, or {@code sequencesCountBuffer} or {@code sequencesIndexBuffer} or {@code preprocessedBuffer} member of ##VkGeneratedCommandsInfoNV
#BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT specifies that the buffer is suitable for passing as the {@code buffer} parameter to #CmdBeginConditionalRenderingEXT().
#BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT specifies that the buffer is suitable for using for binding as a transform feedback buffer with #CmdBindTransformFeedbackBuffersEXT().
#BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT specifies that the buffer is suitable for using as a counter buffer with #CmdBeginTransformFeedbackEXT() and #CmdEndTransformFeedbackEXT().
@@ -1581,10 +1589,10 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
#BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR specifies that the buffer is suitable for use as a read-only input to an acceleration structure build.
#BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR specifies that the buffer is suitable for storage space for a {@code VkAccelerationStructureKHR}.
#BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT specifies that the buffer can be used to retrieve a buffer device address via #GetBufferDeviceAddress() and use that address to access the buffer’s memory from a shader.
- #BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR specifies that the buffer can be used as the source bitstream buffer in a video decode operation.
- #BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR specifies that the buffer can be used as the destination status buffer in a video decode operation.
- #BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR specifies that the buffer can be used as the destination bitstream buffer in a video encode operation.
- #BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR specifies that the buffer can be used as the destination status buffer in a video encode operation.
+ #BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR specifies that the buffer can be used as the source video bitstream buffer in a video decode operation.
+ #BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR is reserved for future use.
+ #BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR specifies that the buffer can be used as the destination video bitstream buffer in a video encode operation.
+ #BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR is reserved for future use.
""",
@@ -1888,8 +1896,8 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
#PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT specifies that pipeline creation will fail if a compile is required for creation of a valid {@code VkPipeline} object; #PIPELINE_COMPILE_REQUIRED will be returned by pipeline creation, and the {@code VkPipeline} will be set to #NULL_HANDLE.
When creating multiple pipelines, #PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT specifies that control will be returned to the application if any individual pipeline returns a result which is not #SUCCESS rather than continuing to create additional pipelines.
#PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV specifies that the pipeline is allowed to use {@code OpTraceRayMotionNV}.
- #PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR specifies that the pipeline will be used with a fragment shading rate attachment.
- #PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT specifies that the pipeline will be used with a fragment density map attachment.
+ #PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR specifies that the pipeline will be used with a fragment shading rate attachment and dynamic rendering.
+ #PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT specifies that the pipeline will be used with a fragment density map attachment and dynamic rendering.
#PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT specifies that pipeline libraries being linked into this library should have link time optimizations applied. If this bit is omitted, implementations should instead perform linking as rapidly as possible.
#PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT specifies that pipeline libraries should retain any information necessary to later perform an optimal link with #PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT.
#PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT specifies that a pipeline will be used with descriptor buffers, rather than descriptor sets.
@@ -1930,6 +1938,7 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
#SHADER_STAGE_ALL is a combination of bits used as shorthand to specify all shader stages supported by the device, including all additional stages which are introduced by extensions.
#SHADER_STAGE_TASK_BIT_EXT specifies the task stage.
#SHADER_STAGE_MESH_BIT_EXT specifies the mesh stage.
+ #SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI specifies the cluster culling stage.
#SHADER_STAGE_RAYGEN_BIT_KHR specifies the ray generation stage.
#SHADER_STAGE_ANY_HIT_BIT_KHR specifies the any-hit stage.
#SHADER_STAGE_CLOSEST_HIT_BIT_KHR specifies the closest hit stage.
@@ -4156,7 +4165,8 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
If {@code buffer} was created with the #BUFFER_CREATE_PROTECTED_BIT bit not set, the buffer must not be bound to a memory object allocated with a memory type that reports #MEMORY_PROPERTY_PROTECTED_BIT
If {@code buffer} was created with ##VkDedicatedAllocationBufferCreateInfoNV{@code ::dedicatedAllocation} equal to #TRUE, {@code memory} must have been allocated with ##VkDedicatedAllocationMemoryAllocateInfoNV{@code ::buffer} equal to a buffer handle created with identical creation parameters to {@code buffer} and {@code memoryOffset} must be zero
If the value of ##VkExportMemoryAllocateInfo{@code ::handleTypes} used to allocate {@code memory} is not 0, it must include at least one of the handles set in ##VkExternalMemoryBufferCreateInfo{@code ::handleTypes} when {@code buffer} was created
- If {@code memory} was allocated by a memory import operation, the external handle type of the imported memory must also have been set in ##VkExternalMemoryBufferCreateInfo{@code ::handleTypes} when {@code buffer} was created
+ If {@code memory} was allocated by a memory import operation, that is not ##VkImportAndroidHardwareBufferInfoANDROID with a non-{@code NULL} {@code buffer} value, the external handle type of the imported memory must also have been set in ##VkExternalMemoryBufferCreateInfo{@code ::handleTypes} when {@code buffer} was created
+ If {@code memory} was allocated with the ##VkImportAndroidHardwareBufferInfoANDROID memory import operation with a non-{@code NULL} {@code buffer} value, #EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID must also have been set in ##VkExternalMemoryBufferCreateInfo{@code ::handleTypes} when {@code buffer} was created
If the ##VkPhysicalDeviceBufferDeviceAddressFeatures{@code ::bufferDeviceAddress} feature is enabled and {@code buffer} was created with the #BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT bit set, {@code memory} must have been allocated with the #MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT bit set
If the ##VkPhysicalDeviceDescriptorBufferFeaturesEXT {@code ::descriptorBufferCaptureReplay} feature is enabled and {@code buffer} was created with the #BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT bit set, {@code memory} must have been allocated with the #MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT bit set
@@ -4227,7 +4237,8 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
If image was created with the #IMAGE_CREATE_PROTECTED_BIT bit not set, the image must not be bound to a memory object created with a memory type that reports #MEMORY_PROPERTY_PROTECTED_BIT
If {@code image} was created with ##VkDedicatedAllocationImageCreateInfoNV{@code ::dedicatedAllocation} equal to #TRUE, {@code memory} must have been created with ##VkDedicatedAllocationMemoryAllocateInfoNV{@code ::image} equal to an image handle created with identical creation parameters to {@code image} and {@code memoryOffset} must be zero
If the value of ##VkExportMemoryAllocateInfo{@code ::handleTypes} used to allocate {@code memory} is not 0, it must include at least one of the handles set in ##VkExternalMemoryImageCreateInfo{@code ::handleTypes} when {@code image} was created
- If {@code memory} was created by a memory import operation, the external handle type of the imported memory must also have been set in ##VkExternalMemoryImageCreateInfo{@code ::handleTypes} when {@code image} was created
+ If {@code memory} was created by a memory import operation, that is not ##VkImportAndroidHardwareBufferInfoANDROID with a non-{@code NULL} {@code buffer} value, the external handle type of the imported memory must also have been set in ##VkExternalMemoryImageCreateInfo{@code ::handleTypes} when {@code image} was created
+ If {@code memory} was created with the ##VkImportAndroidHardwareBufferInfoANDROID memory import operation with a non-{@code NULL} {@code buffer} value, #EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID must also have been set in ##VkExternalMemoryImageCreateInfo{@code ::handleTypes} when {@code image} was created
If the ##VkPhysicalDeviceDescriptorBufferFeaturesEXT {@code ::descriptorBufferCaptureReplay} feature is enabled and {@code image} was created with the #IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT bit set, {@code memory} must have been allocated with the #MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT bit set
{@code image} must not have been created with the #IMAGE_CREATE_DISJOINT_BIT set
{@code memory} must have been allocated using one of the memory types allowed in the {@code memoryTypeBits} member of the ##VkMemoryRequirements structure returned from a call to #GetImageMemoryRequirements() with {@code image}
@@ -4318,6 +4329,7 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
Valid Usage
- {@code image} must not have been created with the #IMAGE_CREATE_DISJOINT_BIT flag set
+ - If {@code image} was created with the #EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID external memory handle type, then {@code image} must be bound to memory
Valid Usage (Implicit)
@@ -5317,9 +5329,8 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_TIMESTAMP, {@code flags} must not contain #QUERY_RESULT_PARTIAL_BIT
If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_PERFORMANCE_QUERY_KHR, {@code flags} must not contain #QUERY_RESULT_WITH_AVAILABILITY_BIT, #QUERY_RESULT_PARTIAL_BIT or #QUERY_RESULT_64_BIT
If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_PERFORMANCE_QUERY_KHR, the {@code queryPool} must have been recorded once for each pass as retrieved via a call to #GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR()
- If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_RESULT_STATUS_ONLY_KHR, {@code flags} must include #QUERY_RESULT_WITH_STATUS_BIT_KHR
- If {@code flags} includes #QUERY_RESULT_WITH_STATUS_BIT_KHR, it must not include #QUERY_RESULT_WITH_AVAILABILITY_BIT
- If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_PERFORMANCE_QUERY_KHR, {@code flags} must not contain #QUERY_RESULT_WITH_STATUS_BIT_KHR
+ If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_RESULT_STATUS_ONLY_KHR, then {@code flags} must include #QUERY_RESULT_WITH_STATUS_BIT_KHR
+ If {@code flags} includes #QUERY_RESULT_WITH_STATUS_BIT_KHR, then it must not include #QUERY_RESULT_WITH_AVAILABILITY_BIT
Valid Usage (Implicit)
@@ -5669,11 +5680,14 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
If the image’s tiling is #IMAGE_TILING_LINEAR and its format is a multi-planar format, then {@code vkGetImageSubresourceLayout} describes one format plane of the image. If the image’s tiling is #IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then {@code vkGetImageSubresourceLayout} describes one memory plane of the image. If the image’s tiling is #IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT and the image is non-linear, then the returned layout has an implementation-dependent meaning; the vendor of the image’s DRM format modifier may provide documentation that explains how to interpret the returned layout.
- {@code vkGetImageSubresourceLayout} is invariant for the lifetime of a single image.
+ {@code vkGetImageSubresourceLayout} is invariant for the lifetime of a single image. However, the subresource layout of images in Android hardware buffer external memory is not known until the image has been bound to memory, so applications must not call #GetImageSubresourceLayout() for such an image before it has been bound.
Valid Usage
- {@code image} must have been created with {@code tiling} equal to #IMAGE_TILING_LINEAR or #IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
+
+
+
- The {@code aspectMask} member of {@code pSubresource} must only have a single bit set
- The {@code mipLevel} member of {@code pSubresource} must be less than the {@code mipLevels} specified in ##VkImageCreateInfo when {@code image} was created
- The {@code arrayLayer} member of {@code pSubresource} must be less than the {@code arrayLayers} specified in ##VkImageCreateInfo when {@code image} was created
@@ -5683,6 +5697,7 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If {@code format} does not contain a stencil or depth component, the {@code aspectMask} member of {@code pSubresource} must not contain #IMAGE_ASPECT_DEPTH_BIT or #IMAGE_ASPECT_STENCIL_BIT
- If the {@code tiling} of the {@code image} is #IMAGE_TILING_LINEAR and its {@code format} is a multi-planar format with two planes, the {@code aspectMask} member of {@code pSubresource} must be #IMAGE_ASPECT_PLANE_0_BIT or #IMAGE_ASPECT_PLANE_1_BIT
- If the {@code tiling} of the {@code image} is #IMAGE_TILING_LINEAR and its {@code format} is a multi-planar format with three planes, the {@code aspectMask} member of {@code pSubresource} must be #IMAGE_ASPECT_PLANE_0_BIT, #IMAGE_ASPECT_PLANE_1_BIT or #IMAGE_ASPECT_PLANE_2_BIT
+ - If {@code image} was created with the #EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID external memory handle type, then {@code image} must be bound to memory
- If the {@code tiling} of the {@code image} is #IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then the {@code aspectMask} member of {@code pSubresource} must be
VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT
and the index i must be less than the ##VkDrmFormatModifierPropertiesEXT{@code ::drmFormatModifierPlaneCount} associated with the image’s {@code format} and ##VkImageDrmFormatModifierPropertiesEXT{@code ::drmFormatModifier}
@@ -8356,7 +8371,6 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
A valid pipeline must be bound to the pipeline bind point used by this command
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -8395,9 +8409,27 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be #STENCIL_OP_KEEP
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT dynamic state enabled then #CmdSetViewport() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR dynamic state enabled then #CmdSetScissor() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then #CmdSetLineWidth() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then #CmdSetDepthBias() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then #CmdSetBlendConstants() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then #CmdSetDepthBounds() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then #CmdSetStencilCompareMask() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then #CmdSetStencilWriteMask() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then #CmdSetStencilReference() must have been called in the current command buffer prior to this drawing command
If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to ##VkPhysicalDeviceMultiviewProperties{@code ::maxMultiviewInstanceIndex}
If the bound graphics pipeline was created with ##VkPipelineSampleLocationsStateCreateInfoEXT{@code ::sampleLocationsEnable} set to #TRUE and the current subpass has a depth/stencil attachment, then that attachment must have been created with the #IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled then #CmdSetSampleLocationsEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CULL_MODE dynamic state enabled then #CmdSetCullMode() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_FRONT_FACE dynamic state enabled then #CmdSetFrontFace() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then #CmdSetPrimitiveTopology() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then #CmdSetDepthTestEnable() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_WRITE_ENABLE dynamic state enabled then #CmdSetDepthWriteEnable() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_COMPARE_OP dynamic state enabled then #CmdSetDepthCompareOp() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE dynamic state enabled then #CmdSetDepthBoundsTestEnable() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_TEST_ENABLE dynamic state enabled then #CmdSetStencilTestEnable() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_OP dynamic state enabled then #CmdSetStencilOp() must have been called in the current command buffer prior to this drawing command
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, then #CmdSetViewportWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::scissorCount} of the pipeline
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, then #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::viewportCount} of the pipeline
If the bound graphics pipeline state was created with both the #DYNAMIC_STATE_SCISSOR_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled then both #CmdSetViewportWithCount() and #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -8425,7 +8457,7 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::colorAttachmentCount} greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} equal to #NULL_HANDLE must have the corresponding element of ##VkPipelineRenderingCreateInfo{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to #FORMAT_UNDEFINED
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then #CmdSetColorWriteEnableEXT() must have been called in the current command buffer prior to this drawing command
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the ##VkPipelineColorBlendStateCreateInfo{@code ::attachmentCount} of the currently bound graphics pipeline
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command for each discard rectangle in ##VkPipelineDiscardRectangleStateCreateInfoEXT{@code ::discardRectangleCount}
If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to #FORMAT_UNDEFINED
If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
@@ -8441,37 +8473,38 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline must have been created with a ##VkGraphicsPipelineCreateInfo{@code ::renderPass} equal to #NULL_HANDLE
If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, rasterization discard must not be enabled
If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, the bound graphics pipeline must not have been created with a non-zero value in ##VkPipelineRasterizationStateStreamCreateInfoEXT{@code ::rasterizationStream}
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_EXT dynamic state enabled then #CmdSetLineStippleEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV dynamic state enabled then #CmdSetRepresentativeFragmentTestEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT state enabled and the last call to #CmdSetColorBlendEnableEXT() set {@code pColorBlendEnables} for any attachment to #TRUE, then for those attachments in the subpass the corresponding image view’s format features must contain #FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to #CmdSetRasterizationSamplesEXT() must follow the rules for a zero-attachment subpass
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the {@code samples} parameter in the last call to #CmdSetSampleMaskEXT() must be greater or equal to the ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -8491,7 +8524,7 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to #CmdSetCoverageModulationTableEnableNV() set {@code coverageModulationTableEnable} to #TRUE, then the {@code coverageModulationTableCount} parameter in the last call to #CmdSetCoverageModulationTableNV() must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
+ If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by #GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV()
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportSwizzleStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportSwizzleNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
@@ -8502,6 +8535,7 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_DEFAULT_EXT, then the {@code stippledRectangularLines} feature must be enabled and ##VkPhysicalDeviceLimits{@code ::strictLines} must be VK_TRUE
If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to #CmdSetConservativeRasterizationModeEXT() must be #CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
If the currently bound pipeline was created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT, then Mesh Shader Queries must not be active
+ If dynamic state was inherited from ##VkCommandBufferInheritanceViewportScissorInfoNV, it must be set in the current command buffer prior to this drawing command
@@ -8598,7 +8632,6 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
- A valid pipeline must be bound to the pipeline bind point used by this command
- - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
- There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -8637,9 +8670,27 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be #STENCIL_OP_KEEP
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT dynamic state enabled then #CmdSetViewport() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR dynamic state enabled then #CmdSetScissor() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then #CmdSetLineWidth() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then #CmdSetDepthBias() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then #CmdSetBlendConstants() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then #CmdSetDepthBounds() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then #CmdSetStencilCompareMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then #CmdSetStencilWriteMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then #CmdSetStencilReference() must have been called in the current command buffer prior to this drawing command
- If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to ##VkPhysicalDeviceMultiviewProperties{@code ::maxMultiviewInstanceIndex}
- If the bound graphics pipeline was created with ##VkPipelineSampleLocationsStateCreateInfoEXT{@code ::sampleLocationsEnable} set to #TRUE and the current subpass has a depth/stencil attachment, then that attachment must have been created with the #IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled then #CmdSetSampleLocationsEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CULL_MODE dynamic state enabled then #CmdSetCullMode() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_FRONT_FACE dynamic state enabled then #CmdSetFrontFace() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then #CmdSetPrimitiveTopology() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then #CmdSetDepthTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_WRITE_ENABLE dynamic state enabled then #CmdSetDepthWriteEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_COMPARE_OP dynamic state enabled then #CmdSetDepthCompareOp() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE dynamic state enabled then #CmdSetDepthBoundsTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_TEST_ENABLE dynamic state enabled then #CmdSetStencilTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_OP dynamic state enabled then #CmdSetStencilOp() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, then #CmdSetViewportWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::scissorCount} of the pipeline
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, then #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::viewportCount} of the pipeline
- If the bound graphics pipeline state was created with both the #DYNAMIC_STATE_SCISSOR_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled then both #CmdSetViewportWithCount() and #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -8667,7 +8718,7 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::colorAttachmentCount} greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} equal to #NULL_HANDLE must have the corresponding element of ##VkPipelineRenderingCreateInfo{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to #FORMAT_UNDEFINED
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then #CmdSetColorWriteEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the ##VkPipelineColorBlendStateCreateInfo{@code ::attachmentCount} of the currently bound graphics pipeline
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command for each discard rectangle in ##VkPipelineDiscardRectangleStateCreateInfoEXT{@code ::discardRectangleCount}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to #FORMAT_UNDEFINED
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
@@ -8683,37 +8734,38 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline must have been created with a ##VkGraphicsPipelineCreateInfo{@code ::renderPass} equal to #NULL_HANDLE
- If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, rasterization discard must not be enabled
- If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, the bound graphics pipeline must not have been created with a non-zero value in ##VkPipelineRasterizationStateStreamCreateInfoEXT{@code ::rasterizationStream}
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_EXT dynamic state enabled then #CmdSetLineStippleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV dynamic state enabled then #CmdSetRepresentativeFragmentTestEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT state enabled and the last call to #CmdSetColorBlendEnableEXT() set {@code pColorBlendEnables} for any attachment to #TRUE, then for those attachments in the subpass the corresponding image view’s format features must contain #FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to #CmdSetRasterizationSamplesEXT() must follow the rules for a zero-attachment subpass
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the {@code samples} parameter in the last call to #CmdSetSampleMaskEXT() must be greater or equal to the ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -8733,7 +8785,7 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to #CmdSetCoverageModulationTableEnableNV() set {@code coverageModulationTableEnable} to #TRUE, then the {@code coverageModulationTableCount} parameter in the last call to #CmdSetCoverageModulationTableNV() must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
- If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
- If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by #GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportSwizzleStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportSwizzleNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
@@ -8744,6 +8796,7 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_DEFAULT_EXT, then the {@code stippledRectangularLines} feature must be enabled and ##VkPhysicalDeviceLimits{@code ::strictLines} must be VK_TRUE
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to #CmdSetConservativeRasterizationModeEXT() must be #CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
- If the currently bound pipeline was created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT, then Mesh Shader Queries must not be active
+ - If dynamic state was inherited from ##VkCommandBufferInheritanceViewportScissorInfoNV, it must be set in the current command buffer prior to this drawing command
@@ -8767,7 +8820,7 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- An index buffer must be bound
- (indexSize × (firstIndex + indexCount) + offset)
must be less than or equal to the size of the bound index buffer, with {@code indexSize} being based on the type specified by {@code indexType}, where the index buffer, {@code indexType}, and {@code offset} are specified via {@code vkCmdBindIndexBuffer}
+ - If {@code robustBufferAccess2} is not enabled,
(indexSize × (firstIndex + indexCount) + offset)
must be less than or equal to the size of the bound index buffer, with {@code indexSize} being based on the type specified by {@code indexType}, where the index buffer, {@code indexType}, and {@code offset} are specified via {@code vkCmdBindIndexBuffer}
Valid Usage (Implicit)
@@ -8841,7 +8894,6 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
- A valid pipeline must be bound to the pipeline bind point used by this command
- - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
- There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -8880,9 +8932,27 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be #STENCIL_OP_KEEP
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT dynamic state enabled then #CmdSetViewport() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR dynamic state enabled then #CmdSetScissor() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then #CmdSetLineWidth() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then #CmdSetDepthBias() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then #CmdSetBlendConstants() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then #CmdSetDepthBounds() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then #CmdSetStencilCompareMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then #CmdSetStencilWriteMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then #CmdSetStencilReference() must have been called in the current command buffer prior to this drawing command
- If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to ##VkPhysicalDeviceMultiviewProperties{@code ::maxMultiviewInstanceIndex}
- If the bound graphics pipeline was created with ##VkPipelineSampleLocationsStateCreateInfoEXT{@code ::sampleLocationsEnable} set to #TRUE and the current subpass has a depth/stencil attachment, then that attachment must have been created with the #IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled then #CmdSetSampleLocationsEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CULL_MODE dynamic state enabled then #CmdSetCullMode() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_FRONT_FACE dynamic state enabled then #CmdSetFrontFace() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then #CmdSetPrimitiveTopology() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then #CmdSetDepthTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_WRITE_ENABLE dynamic state enabled then #CmdSetDepthWriteEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_COMPARE_OP dynamic state enabled then #CmdSetDepthCompareOp() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE dynamic state enabled then #CmdSetDepthBoundsTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_TEST_ENABLE dynamic state enabled then #CmdSetStencilTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_OP dynamic state enabled then #CmdSetStencilOp() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, then #CmdSetViewportWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::scissorCount} of the pipeline
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, then #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::viewportCount} of the pipeline
- If the bound graphics pipeline state was created with both the #DYNAMIC_STATE_SCISSOR_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled then both #CmdSetViewportWithCount() and #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -8910,7 +8980,7 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::colorAttachmentCount} greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} equal to #NULL_HANDLE must have the corresponding element of ##VkPipelineRenderingCreateInfo{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to #FORMAT_UNDEFINED
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then #CmdSetColorWriteEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the ##VkPipelineColorBlendStateCreateInfo{@code ::attachmentCount} of the currently bound graphics pipeline
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command for each discard rectangle in ##VkPipelineDiscardRectangleStateCreateInfoEXT{@code ::discardRectangleCount}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to #FORMAT_UNDEFINED
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
@@ -8926,37 +8996,38 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline must have been created with a ##VkGraphicsPipelineCreateInfo{@code ::renderPass} equal to #NULL_HANDLE
- If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, rasterization discard must not be enabled
- If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, the bound graphics pipeline must not have been created with a non-zero value in ##VkPipelineRasterizationStateStreamCreateInfoEXT{@code ::rasterizationStream}
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_EXT dynamic state enabled then #CmdSetLineStippleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV dynamic state enabled then #CmdSetRepresentativeFragmentTestEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT state enabled and the last call to #CmdSetColorBlendEnableEXT() set {@code pColorBlendEnables} for any attachment to #TRUE, then for those attachments in the subpass the corresponding image view’s format features must contain #FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to #CmdSetRasterizationSamplesEXT() must follow the rules for a zero-attachment subpass
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the {@code samples} parameter in the last call to #CmdSetSampleMaskEXT() must be greater or equal to the ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -8976,7 +9047,7 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to #CmdSetCoverageModulationTableEnableNV() set {@code coverageModulationTableEnable} to #TRUE, then the {@code coverageModulationTableCount} parameter in the last call to #CmdSetCoverageModulationTableNV() must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
- If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
- If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by #GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportSwizzleStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportSwizzleNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
@@ -8987,6 +9058,7 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_DEFAULT_EXT, then the {@code stippledRectangularLines} feature must be enabled and ##VkPhysicalDeviceLimits{@code ::strictLines} must be VK_TRUE
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to #CmdSetConservativeRasterizationModeEXT() must be #CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
- If the currently bound pipeline was created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT, then Mesh Shader Queries must not be active
+ - If dynamic state was inherited from ##VkCommandBufferInheritanceViewportScissorInfoNV, it must be set in the current command buffer prior to this drawing command
@@ -9089,7 +9161,6 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
- A valid pipeline must be bound to the pipeline bind point used by this command
- - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
- There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -9128,9 +9199,27 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be #STENCIL_OP_KEEP
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT dynamic state enabled then #CmdSetViewport() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR dynamic state enabled then #CmdSetScissor() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then #CmdSetLineWidth() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then #CmdSetDepthBias() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then #CmdSetBlendConstants() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then #CmdSetDepthBounds() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then #CmdSetStencilCompareMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then #CmdSetStencilWriteMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then #CmdSetStencilReference() must have been called in the current command buffer prior to this drawing command
- If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to ##VkPhysicalDeviceMultiviewProperties{@code ::maxMultiviewInstanceIndex}
- If the bound graphics pipeline was created with ##VkPipelineSampleLocationsStateCreateInfoEXT{@code ::sampleLocationsEnable} set to #TRUE and the current subpass has a depth/stencil attachment, then that attachment must have been created with the #IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled then #CmdSetSampleLocationsEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CULL_MODE dynamic state enabled then #CmdSetCullMode() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_FRONT_FACE dynamic state enabled then #CmdSetFrontFace() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then #CmdSetPrimitiveTopology() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then #CmdSetDepthTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_WRITE_ENABLE dynamic state enabled then #CmdSetDepthWriteEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_COMPARE_OP dynamic state enabled then #CmdSetDepthCompareOp() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE dynamic state enabled then #CmdSetDepthBoundsTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_TEST_ENABLE dynamic state enabled then #CmdSetStencilTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_OP dynamic state enabled then #CmdSetStencilOp() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, then #CmdSetViewportWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::scissorCount} of the pipeline
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, then #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::viewportCount} of the pipeline
- If the bound graphics pipeline state was created with both the #DYNAMIC_STATE_SCISSOR_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled then both #CmdSetViewportWithCount() and #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -9158,7 +9247,7 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::colorAttachmentCount} greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} equal to #NULL_HANDLE must have the corresponding element of ##VkPipelineRenderingCreateInfo{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to #FORMAT_UNDEFINED
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then #CmdSetColorWriteEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the ##VkPipelineColorBlendStateCreateInfo{@code ::attachmentCount} of the currently bound graphics pipeline
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command for each discard rectangle in ##VkPipelineDiscardRectangleStateCreateInfoEXT{@code ::discardRectangleCount}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to #FORMAT_UNDEFINED
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
@@ -9174,37 +9263,38 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline must have been created with a ##VkGraphicsPipelineCreateInfo{@code ::renderPass} equal to #NULL_HANDLE
- If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, rasterization discard must not be enabled
- If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, the bound graphics pipeline must not have been created with a non-zero value in ##VkPipelineRasterizationStateStreamCreateInfoEXT{@code ::rasterizationStream}
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_EXT dynamic state enabled then #CmdSetLineStippleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV dynamic state enabled then #CmdSetRepresentativeFragmentTestEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT state enabled and the last call to #CmdSetColorBlendEnableEXT() set {@code pColorBlendEnables} for any attachment to #TRUE, then for those attachments in the subpass the corresponding image view’s format features must contain #FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to #CmdSetRasterizationSamplesEXT() must follow the rules for a zero-attachment subpass
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the {@code samples} parameter in the last call to #CmdSetSampleMaskEXT() must be greater or equal to the ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -9224,7 +9314,7 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to #CmdSetCoverageModulationTableEnableNV() set {@code coverageModulationTableEnable} to #TRUE, then the {@code coverageModulationTableCount} parameter in the last call to #CmdSetCoverageModulationTableNV() must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
- If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
- If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by #GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportSwizzleStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportSwizzleNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
@@ -9235,6 +9325,7 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_DEFAULT_EXT, then the {@code stippledRectangularLines} feature must be enabled and ##VkPhysicalDeviceLimits{@code ::strictLines} must be VK_TRUE
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to #CmdSetConservativeRasterizationModeEXT() must be #CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
- If the currently bound pipeline was created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT, then Mesh Shader Queries must not be active
+ - If dynamic state was inherited from ##VkCommandBufferInheritanceViewportScissorInfoNV, it must be set in the current command buffer prior to this drawing command
@@ -9264,6 +9355,7 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- An index buffer must be bound
+ - If {@code robustBufferAccess2} is not enabled,
(indexSize × (firstIndex + indexCount) + offset)
must be less than or equal to the size of the bound index buffer, with {@code indexSize} being based on the type specified by {@code indexType}, where the index buffer, {@code indexType}, and {@code offset} are specified via {@code vkCmdBindIndexBuffer}
- If {@code drawCount} is greater than 1, {@code stride} must be a multiple of 4 and must be greater than or equal to {@code sizeof}(##VkDrawIndexedIndirectCommand)
- If {@code drawCount} is equal to 1,
(offset + sizeof(##VkDrawIndexedIndirectCommand))
must be less than or equal to the size of {@code buffer}
- If {@code drawCount} is greater than 1,
(stride × (drawCount - 1) + offset + sizeof(##VkDrawIndexedIndirectCommand))
must be less than or equal to the size of {@code buffer}
@@ -9340,7 +9432,6 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
- A valid pipeline must be bound to the pipeline bind point used by this command
- - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
- There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -9447,7 +9538,6 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
- A valid pipeline must be bound to the pipeline bind point used by this command
- - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
- There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -9688,7 +9778,6 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If the {@code aspect} member of any element of {@code pRegions} includes any flag other than #IMAGE_ASPECT_STENCIL_BIT or {@code dstImage} was not created with separate stencil usage, #IMAGE_USAGE_TRANSFER_DST_BIT must have been included in the ##VkImageCreateInfo{@code ::usage} used to create {@code dstImage}
- If the {@code aspect} member of any element of {@code pRegions} includes #IMAGE_ASPECT_STENCIL_BIT, and {@code srcImage} was created with separate stencil usage, #IMAGE_USAGE_TRANSFER_SRC_BIT must have been included in the ##VkImageStencilUsageCreateInfo{@code ::stencilUsage} used to create {@code srcImage}
- If the {@code aspect} member of any element of {@code pRegions} includes #IMAGE_ASPECT_STENCIL_BIT, and {@code dstImage} was created with separate stencil usage, #IMAGE_USAGE_TRANSFER_DST_BIT must have been included in the ##VkImageStencilUsageCreateInfo{@code ::stencilUsage} used to create {@code dstImage}
- - {@code srcImage} and {@code dstImage} must have the same sample count
Valid Usage (Implicit)
@@ -9961,14 +10050,11 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- - If {@code dstImage} does not have either a depth/stencil or a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the format’s texel block size
- - If {@code dstImage} has a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the element size of the compatible format for the format and the {@code aspectMask} of the {@code imageSubresource} as defined in Compatible formats of planes of multi-planar formats
- If {@code dstImage} is of type #IMAGE_TYPE_1D, then for each element of {@code pRegions}, {@code imageOffset.y} must be 0 and {@code imageExtent.height} must be 1
- For each element of {@code pRegions}, {@code imageOffset.z} and
(imageExtent.depth + imageOffset.z)
must both be greater than or equal to 0 and less than or equal to the depth of the specified {@code imageSubresource} of {@code dstImage}
- If {@code dstImage} is of type #IMAGE_TYPE_1D or #IMAGE_TYPE_2D, then for each element of {@code pRegions}, {@code imageOffset.z} must be 0 and {@code imageExtent.depth} must be 1
- For each element of {@code pRegions}, {@code bufferRowLength} must be a multiple of the texel block extent width of the {@code VkFormat} of {@code dstImage}
- For each element of {@code pRegions}, {@code bufferImageHeight} must be a multiple of the texel block extent height of the {@code VkFormat} of {@code dstImage}
- - For each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the texel block size of the {@code VkFormat} of {@code dstImage}
- For each element of {@code pRegions}, {@code imageOffset.x} must be a multiple of the texel block extent width of the {@code VkFormat} of {@code dstImage}
- For each element of {@code pRegions}, {@code imageOffset.y} must be a multiple of the texel block extent height of the {@code VkFormat} of {@code dstImage}
- For each element of {@code pRegions}, {@code imageOffset.z} must be a multiple of the texel block extent depth of the {@code VkFormat} of {@code dstImage}
@@ -9980,6 +10066,12 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If {@code dstImage} has a {@code VkFormat} with three planes then for each element of {@code pRegions}, {@code imageSubresource.aspectMask} must be #IMAGE_ASPECT_PLANE_0_BIT, #IMAGE_ASPECT_PLANE_1_BIT, or #IMAGE_ASPECT_PLANE_2_BIT
- If {@code dstImage} is of type #IMAGE_TYPE_3D, for each element of {@code pRegions}, {@code imageSubresource.baseArrayLayer} must be 0 and {@code imageSubresource.layerCount} must be 1
- For each element of {@code pRegions}, {@code bufferRowLength} divided by the texel block extent width and then multiplied by the texel block size of {@code dstImage} must be less than or equal to
231-1
+
+
+
+ - If {@code dstImage} does not have either a depth/stencil or a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the format’s texel block size
+ - If {@code dstImage} has a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the element size of the compatible format for the format and the {@code aspectMask} of the {@code imageSubresource} as defined in Compatible formats of planes of multi-planar formats
+ - For each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the texel block size of the {@code VkFormat} of {@code dstImage}
- If {@code dstImage} has a depth/stencil format, the {@code bufferOffset} member of any element of {@code pRegions} must be a multiple of 4
@@ -10073,14 +10165,11 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- - If {@code srcImage} does not have either a depth/stencil or a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the format’s texel block size
- - If {@code srcImage} has a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the element size of the compatible format for the format and the {@code aspectMask} of the {@code imageSubresource} as defined in Compatible formats of planes of multi-planar formats
- If {@code srcImage} is of type #IMAGE_TYPE_1D, then for each element of {@code pRegions}, {@code imageOffset.y} must be 0 and {@code imageExtent.height} must be 1
- For each element of {@code pRegions}, {@code imageOffset.z} and
(imageExtent.depth + imageOffset.z)
must both be greater than or equal to 0 and less than or equal to the depth of the specified {@code imageSubresource} of {@code srcImage}
- If {@code srcImage} is of type #IMAGE_TYPE_1D or #IMAGE_TYPE_2D, then for each element of {@code pRegions}, {@code imageOffset.z} must be 0 and {@code imageExtent.depth} must be 1
- For each element of {@code pRegions}, {@code bufferRowLength} must be a multiple of the texel block extent width of the {@code VkFormat} of {@code srcImage}
- For each element of {@code pRegions}, {@code bufferImageHeight} must be a multiple of the texel block extent height of the {@code VkFormat} of {@code srcImage}
- - For each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the texel block size of the {@code VkFormat} of {@code srcImage}
- For each element of {@code pRegions}, {@code imageOffset.x} must be a multiple of the texel block extent width of the {@code VkFormat} of {@code srcImage}
- For each element of {@code pRegions}, {@code imageOffset.y} must be a multiple of the texel block extent height of the {@code VkFormat} of {@code srcImage}
- For each element of {@code pRegions}, {@code imageOffset.z} must be a multiple of the texel block extent depth of the {@code VkFormat} of {@code srcImage}
@@ -10092,6 +10181,12 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
- If {@code srcImage} has a {@code VkFormat} with three planes then for each element of {@code pRegions}, {@code imageSubresource.aspectMask} must be #IMAGE_ASPECT_PLANE_0_BIT, #IMAGE_ASPECT_PLANE_1_BIT, or #IMAGE_ASPECT_PLANE_2_BIT
- If {@code srcImage} is of type #IMAGE_TYPE_3D, for each element of {@code pRegions}, {@code imageSubresource.baseArrayLayer} must be 0 and {@code imageSubresource.layerCount} must be 1
- For each element of {@code pRegions}, {@code bufferRowLength} divided by the texel block extent width and then multiplied by the texel block size of {@code srcImage} must be less than or equal to
231-1
+
+
+
+ - If {@code srcImage} does not have either a depth/stencil or a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the format’s texel block size
+ - If {@code srcImage} has a multi-planar format, then for each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the element size of the compatible format for the format and the {@code aspectMask} of the {@code imageSubresource} as defined in Compatible formats of planes of multi-planar formats
+ - For each element of {@code pRegions}, {@code bufferOffset} must be a multiple of the texel block size of the {@code VkFormat} of {@code srcImage}
- If {@code srcImage} has a depth/stencil format, the {@code bufferOffset} member of any element of {@code pRegions} must be a multiple of 4
@@ -11030,6 +11125,19 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
After beginning a query, that query is considered active within the command buffer it was called in until that same query is ended. Queries active in a primary command buffer when secondary command buffers are executed are considered active for those secondary command buffers.
+ Furthermore, if the query is started within a video coding scope, the following command buffer states are initialized for the query type:
+
+
+ - The active_query_index is set to the value specified by {@code query}.
+ - The last activatable query index is also set to the value specified by {@code query}.
+
+
+ Each video coding operation stores a result to the query corresponding to the current active query index, followed by incrementing the active query index. If the active query index gets incremented past the last activatable query index, issuing any further video coding operations results in undefined behavior.
+
+ Note
+ In practice, this means that currently no more than a single video coding operation must be issued between a begin and end query pair.
+
+
This command defines an execution dependency between other query commands that reference the same query.
The first synchronization scope includes all commands which reference the queries in {@code queryPool} indicated by {@code query} that occur earlier in submission order.
@@ -11052,7 +11160,13 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_PIPELINE_STATISTICS and any of the {@code pipelineStatistics} indicate compute operations, the {@code VkCommandPool} that {@code commandBuffer} was allocated from must support compute operations
{@code commandBuffer} must not be a protected command buffer
If called within a render pass instance, the sum of {@code query} and the number of bits set in the current subpass’s view mask must be less than or equal to the number of queries in {@code queryPool}
- If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR the {@code VkCommandPool} that {@code commandBuffer} was allocated from must support video encode operations
+ If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_RESULT_STATUS_ONLY_KHR, then the {@code VkCommandPool} that {@code commandBuffer} was allocated from must have been created with a queue family index that supports result status queries, as indicated by ##VkQueueFamilyQueryResultStatusPropertiesKHR{@code ::queryResultStatusSupport}
+ If there is a bound video session, then there must be no active queries
+ If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_RESULT_STATUS_ONLY_KHR and there is a bound video session, then {@code queryPool} must have been created with a ##VkVideoProfileInfoKHR structure included in the {@code pNext} chain of ##VkQueryPoolCreateInfo identical to the one specified in ##VkVideoSessionCreateInfoKHR{@code ::pVideoProfile} the bound video session was created with
+ If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR, then the {@code VkCommandPool} that {@code commandBuffer} was allocated from must support video encode operations
+ If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR, then there must be a bound video session
+ If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR and there is a bound video session, then {@code queryPool} must have been created with a ##VkVideoProfileInfoKHR structure included in the {@code pNext} chain of ##VkQueryPoolCreateInfo identical to the one specified in ##VkVideoSessionCreateInfoKHR{@code ::pVideoProfile} the bound video session was created with
+ If the {@code queryType} used to create {@code queryPool} was not #QUERY_TYPE_RESULT_STATUS_ONLY_KHR or #QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR, then there must be no bound video session
{@code queryPool} must have been created with a {@code queryType} that differs from that of any queries that are active within {@code commandBuffer}
If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT the {@code VkCommandPool} that {@code commandBuffer} was allocated from must support graphics operations
If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT the {@code VkCommandPool} that {@code commandBuffer} was allocated from must support graphics operations
@@ -11393,9 +11507,8 @@ val VK10 = "VK10".nativeClass(Module.VULKAN, "VK10", prefix = "VK", binding = VK
If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_PERFORMANCE_QUERY_KHR, {@code flags} must not contain #QUERY_RESULT_WITH_AVAILABILITY_BIT, #QUERY_RESULT_PARTIAL_BIT or #QUERY_RESULT_64_BIT
If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_PERFORMANCE_QUERY_KHR, the {@code queryPool} must have been submitted once for each pass as retrieved via a call to #GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR()
#CmdCopyQueryPoolResults() must not be called if the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_PERFORMANCE_QUERY_INTEL
- If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_RESULT_STATUS_ONLY_KHR, {@code flags} must include #QUERY_RESULT_WITH_STATUS_BIT_KHR
- If {@code flags} includes #QUERY_RESULT_WITH_STATUS_BIT_KHR, it must not include #QUERY_RESULT_WITH_AVAILABILITY_BIT
- If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_PERFORMANCE_QUERY_KHR, {@code flags} must not contain #QUERY_RESULT_WITH_STATUS_BIT_KHR
+ If the {@code queryType} used to create {@code queryPool} was #QUERY_TYPE_RESULT_STATUS_ONLY_KHR, then {@code flags} must include #QUERY_RESULT_WITH_STATUS_BIT_KHR
+ If {@code flags} includes #QUERY_RESULT_WITH_STATUS_BIT_KHR, then it must not include #QUERY_RESULT_WITH_AVAILABILITY_BIT
All queries used by the command must not be active
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/VK11.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/VK11.kt
index d6be6173c9..55db179137 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/VK11.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/VK11.kt
@@ -531,7 +531,7 @@ val VK11 = "VK11".nativeClass(Module.VULKAN, "VK11", prefix = "VK", binding = VK
See Also
- ##VkSamplerYcbcrConversionCreateInfo
+ ##VkAndroidHardwareBufferFormatProperties2ANDROID, ##VkAndroidHardwareBufferFormatPropertiesANDROID, ##VkSamplerYcbcrConversionCreateInfo
""",
"SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY".."0",
@@ -556,7 +556,7 @@ val VK11 = "VK11".nativeClass(Module.VULKAN, "VK11", prefix = "VK", binding = VK
No range modification takes place if {@code ycbcrModel} is #SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY; the {@code ycbcrRange} field of ##VkSamplerYcbcrConversionCreateInfo is ignored in this case.
See Also
- ##VkSamplerYcbcrConversionCreateInfo
+ ##VkAndroidHardwareBufferFormatProperties2ANDROID, ##VkAndroidHardwareBufferFormatPropertiesANDROID, ##VkSamplerYcbcrConversionCreateInfo
""",
"SAMPLER_YCBCR_RANGE_ITU_FULL".."0",
@@ -574,7 +574,7 @@ val VK11 = "VK11".nativeClass(Module.VULKAN, "VK11", prefix = "VK", binding = VK
See Also
- ##VkSamplerYcbcrConversionCreateInfo
+ ##VkAndroidHardwareBufferFormatProperties2ANDROID, ##VkAndroidHardwareBufferFormatPropertiesANDROID, ##VkSamplerYcbcrConversionCreateInfo
""",
"CHROMA_LOCATION_COSITED_EVEN".."0",
@@ -614,6 +614,7 @@ val VK11 = "VK11".nativeClass(Module.VULKAN, "VK11", prefix = "VK", binding = VK
#EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT specifies a host pointer returned by a host memory allocation command. It does not own a reference to the underlying memory resource, and will therefore become invalid if the host memory is freed.
#EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT specifies a host pointer to host mapped foreign memory. It does not own a reference to the underlying memory resource, and will therefore become invalid if the foreign memory is unmapped or otherwise becomes no longer available.
#EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT is a file descriptor for a Linux dma_buf. It owns a reference to the underlying memory resource represented by its Vulkan memory object.
+ #EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID specifies an {@code AHardwareBuffer} object defined by the Android NDK. See Android Hardware Buffers for more details of this handle type.
#EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV is a handle to an allocation accessible by remote devices. It owns a reference to the underlying memory resource represented by its Vulkan memory object.
@@ -633,6 +634,7 @@ val VK11 = "VK11".nativeClass(Module.VULKAN, "VK11", prefix = "VK", binding = VK
#EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT | No restriction | No restriction |
#EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT | No restriction | No restriction |
#EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT | No restriction | No restriction |
+ #EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID | No restriction | No restriction |
#EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV | No restriction | No restriction |
@@ -675,9 +677,10 @@ val VK11 = "VK11".nativeClass(Module.VULKAN, "VK11", prefix = "VK", binding = VK
#EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT
#EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT
#EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT
+ #EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID for images only
- Implementations must not report #EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT for images or buffers with external handle type #EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT, or #EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT.
+ Implementations must not report #EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT for buffers with external handle type #EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID. Implementations must not report #EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT for images or buffers with external handle type #EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT, or #EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT.
""",
"EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT".enum(0x00000001),
@@ -1144,7 +1147,6 @@ val VK11 = "VK11".nativeClass(Module.VULKAN, "VK11", prefix = "VK", binding = VK
If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
A valid pipeline must be bound to the pipeline bind point used by this command
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -1542,7 +1544,12 @@ val VK11 = "VK11".nativeClass(Module.VULKAN, "VK11", prefix = "VK", binding = VK
Description
{@code vkGetPhysicalDeviceImageFormatProperties2} behaves similarly to #GetPhysicalDeviceImageFormatProperties(), with the ability to return extended information in a {@code pNext} chain of output structures.
- If the {@code pNext} chain of {@code pImageFormatInfo} includes a ##VkVideoProfileListInfoKHR structure with a {@code profileCount} member greater than 0, then {@code vkGetPhysicalDeviceImageFormatProperties2} returns format capabilities specific to image types used in conjunction with the specified video codec operations and corresponding video profiles. In this case {@code vkGetPhysicalDeviceImageFormatProperties2} returns one of the video-profile-specific error codes if any of the profiles specified via ##VkVideoProfileListInfoKHR{@code ::pProfiles} are not supported. Furthermore, if ##VkPhysicalDeviceImageFormatInfo2{@code ::usage} includes any image usage flags not supported by the specified video profiles then {@code vkGetPhysicalDeviceImageFormatProperties2} returns #ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR.
+ If the {@code pNext} chain of {@code pImageFormatInfo} includes a ##VkVideoProfileListInfoKHR structure with a {@code profileCount} member greater than 0, then this command returns format capabilities specific to image types used in conjunction with the specified video profiles. In this case, this command will return one of the video-profile-specific error codes if any of the profiles specified via ##VkVideoProfileListInfoKHR{@code ::pProfiles} are not supported. Furthermore, if ##VkPhysicalDeviceImageFormatInfo2{@code ::usage} includes any image usage flag not supported by the specified video profiles, then this command returns #ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR.
+
+ Valid Usage
+
+ - If the {@code pNext} chain of {@code pImageFormatProperties} includes a ##VkAndroidHardwareBufferUsageANDROID structure, the {@code pNext} chain of {@code pImageFormatInfo} must include a ##VkPhysicalDeviceExternalImageFormatInfo structure with {@code handleType} set to #EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
+
Valid Usage (Implicit)
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/VK12.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/VK12.kt
index 3ec3fe6f27..f27cb9cd51 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/VK12.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/VK12.kt
@@ -278,7 +278,8 @@ val VK12 = "VK12".nativeClass(Module.VULKAN, "VK12", prefix = "VK", binding = VK
"DRIVER_ID_SAMSUNG_PROPRIETARY".."21",
"DRIVER_ID_MESA_VENUS".."22",
"DRIVER_ID_MESA_DOZEN".."23",
- "DRIVER_ID_MESA_NVK".."24"
+ "DRIVER_ID_MESA_NVK".."24",
+ "DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA".."25"
)
EnumConstant(
@@ -468,7 +469,6 @@ val VK12 = "VK12".nativeClass(Module.VULKAN, "VK12", prefix = "VK", binding = VK
- If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
- A valid pipeline must be bound to the pipeline bind point used by this command
- - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
- There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -507,9 +507,27 @@ val VK12 = "VK12".nativeClass(Module.VULKAN, "VK12", prefix = "VK", binding = VK
- If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be #STENCIL_OP_KEEP
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT dynamic state enabled then #CmdSetViewport() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR dynamic state enabled then #CmdSetScissor() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then #CmdSetLineWidth() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then #CmdSetDepthBias() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then #CmdSetBlendConstants() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then #CmdSetDepthBounds() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then #CmdSetStencilCompareMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then #CmdSetStencilWriteMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then #CmdSetStencilReference() must have been called in the current command buffer prior to this drawing command
- If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to ##VkPhysicalDeviceMultiviewProperties{@code ::maxMultiviewInstanceIndex}
- If the bound graphics pipeline was created with ##VkPipelineSampleLocationsStateCreateInfoEXT{@code ::sampleLocationsEnable} set to #TRUE and the current subpass has a depth/stencil attachment, then that attachment must have been created with the #IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled then #CmdSetSampleLocationsEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CULL_MODE dynamic state enabled then #CmdSetCullMode() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_FRONT_FACE dynamic state enabled then #CmdSetFrontFace() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then #CmdSetPrimitiveTopology() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then #CmdSetDepthTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_WRITE_ENABLE dynamic state enabled then #CmdSetDepthWriteEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_COMPARE_OP dynamic state enabled then #CmdSetDepthCompareOp() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE dynamic state enabled then #CmdSetDepthBoundsTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_TEST_ENABLE dynamic state enabled then #CmdSetStencilTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_OP dynamic state enabled then #CmdSetStencilOp() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, then #CmdSetViewportWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::scissorCount} of the pipeline
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, then #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::viewportCount} of the pipeline
- If the bound graphics pipeline state was created with both the #DYNAMIC_STATE_SCISSOR_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled then both #CmdSetViewportWithCount() and #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -537,7 +555,7 @@ val VK12 = "VK12".nativeClass(Module.VULKAN, "VK12", prefix = "VK", binding = VK
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::colorAttachmentCount} greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} equal to #NULL_HANDLE must have the corresponding element of ##VkPipelineRenderingCreateInfo{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to #FORMAT_UNDEFINED
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then #CmdSetColorWriteEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the ##VkPipelineColorBlendStateCreateInfo{@code ::attachmentCount} of the currently bound graphics pipeline
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command for each discard rectangle in ##VkPipelineDiscardRectangleStateCreateInfoEXT{@code ::discardRectangleCount}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to #FORMAT_UNDEFINED
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
@@ -553,37 +571,38 @@ val VK12 = "VK12".nativeClass(Module.VULKAN, "VK12", prefix = "VK", binding = VK
- If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline must have been created with a ##VkGraphicsPipelineCreateInfo{@code ::renderPass} equal to #NULL_HANDLE
- If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, rasterization discard must not be enabled
- If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, the bound graphics pipeline must not have been created with a non-zero value in ##VkPipelineRasterizationStateStreamCreateInfoEXT{@code ::rasterizationStream}
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_EXT dynamic state enabled then #CmdSetLineStippleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV dynamic state enabled then #CmdSetRepresentativeFragmentTestEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT state enabled and the last call to #CmdSetColorBlendEnableEXT() set {@code pColorBlendEnables} for any attachment to #TRUE, then for those attachments in the subpass the corresponding image view’s format features must contain #FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to #CmdSetRasterizationSamplesEXT() must follow the rules for a zero-attachment subpass
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the {@code samples} parameter in the last call to #CmdSetSampleMaskEXT() must be greater or equal to the ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -603,7 +622,7 @@ val VK12 = "VK12".nativeClass(Module.VULKAN, "VK12", prefix = "VK", binding = VK
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to #CmdSetCoverageModulationTableEnableNV() set {@code coverageModulationTableEnable} to #TRUE, then the {@code coverageModulationTableCount} parameter in the last call to #CmdSetCoverageModulationTableNV() must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
- If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
- If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by #GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportSwizzleStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportSwizzleNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
@@ -614,6 +633,7 @@ val VK12 = "VK12".nativeClass(Module.VULKAN, "VK12", prefix = "VK", binding = VK
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_DEFAULT_EXT, then the {@code stippledRectangularLines} feature must be enabled and ##VkPhysicalDeviceLimits{@code ::strictLines} must be VK_TRUE
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to #CmdSetConservativeRasterizationModeEXT() must be #CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
- If the currently bound pipeline was created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT, then Mesh Shader Queries must not be active
+ - If dynamic state was inherited from ##VkCommandBufferInheritanceViewportScissorInfoNV, it must be set in the current command buffer prior to this drawing command
@@ -750,7 +770,6 @@ val VK12 = "VK12".nativeClass(Module.VULKAN, "VK12", prefix = "VK", binding = VK
- If the descriptors used by the {@code VkPipeline} bound to the pipeline bind point were specified via {@code vkCmdSetDescriptorBufferOffsetsEXT}, the bound {@code VkPipeline} must have been created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
- If a descriptor is dynamically used with a {@code VkPipeline} created with #PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, the descriptor memory must be resident
- A valid pipeline must be bound to the pipeline bind point used by this command
- - If the {@code VkPipeline} object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the {@link NVInheritedViewportScissor VK_NV_inherited_viewport_scissor} extension is enabled) for {@code commandBuffer}, and done so after any previously bound pipeline with the corresponding state not specified as dynamic
- There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the {@code VkPipeline} object bound to the pipeline bind point used by this command, since that pipeline was bound
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used to sample from any {@code VkImage} with a {@code VkImageView} of the type #IMAGE_VIEW_TYPE_3D, #IMAGE_VIEW_TYPE_CUBE, #IMAGE_VIEW_TYPE_1D_ARRAY, #IMAGE_VIEW_TYPE_2D_ARRAY or #IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
- If the {@code VkPipeline} object bound to the pipeline bind point used by this command accesses a {@code VkSampler} object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V {@code OpImageSample*} or {@code OpImageSparseSample*} instructions with {@code ImplicitLod}, {@code Dref} or {@code Proj} in their name, in any shader stage
@@ -789,9 +808,27 @@ val VK12 = "VK12".nativeClass(Module.VULKAN, "VK12", prefix = "VK", binding = VK
- If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled
- If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back {@code writeMask} are not zero, and stencil test is enabled, all stencil ops must be #STENCIL_OP_KEEP
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT dynamic state enabled then #CmdSetViewport() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR dynamic state enabled then #CmdSetScissor() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then #CmdSetLineWidth() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then #CmdSetDepthBias() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then #CmdSetBlendConstants() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then #CmdSetDepthBounds() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then #CmdSetStencilCompareMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then #CmdSetStencilWriteMask() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then #CmdSetStencilReference() must have been called in the current command buffer prior to this drawing command
- If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to ##VkPhysicalDeviceMultiviewProperties{@code ::maxMultiviewInstanceIndex}
- If the bound graphics pipeline was created with ##VkPipelineSampleLocationsStateCreateInfoEXT{@code ::sampleLocationsEnable} set to #TRUE and the current subpass has a depth/stencil attachment, then that attachment must have been created with the #IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT dynamic state enabled then #CmdSetSampleLocationsEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CULL_MODE dynamic state enabled then #CmdSetCullMode() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_FRONT_FACE dynamic state enabled then #CmdSetFrontFace() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then #CmdSetPrimitiveTopology() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then #CmdSetDepthTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_WRITE_ENABLE dynamic state enabled then #CmdSetDepthWriteEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_COMPARE_OP dynamic state enabled then #CmdSetDepthCompareOp() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE dynamic state enabled then #CmdSetDepthBoundsTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_TEST_ENABLE dynamic state enabled then #CmdSetStencilTestEnable() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_STENCIL_OP dynamic state enabled then #CmdSetStencilOp() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, then #CmdSetViewportWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::scissorCount} of the pipeline
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, then #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount} must match the ##VkPipelineViewportStateCreateInfo{@code ::viewportCount} of the pipeline
- If the bound graphics pipeline state was created with both the #DYNAMIC_STATE_SCISSOR_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled then both #CmdSetViewportWithCount() and #CmdSetScissorWithCount() must have been called in the current command buffer prior to this drawing command, and the {@code viewportCount} parameter of {@code vkCmdSetViewportWithCount} must match the {@code scissorCount} parameter of {@code vkCmdSetScissorWithCount}
@@ -819,7 +856,7 @@ val VK12 = "VK12".nativeClass(Module.VULKAN, "VK12", prefix = "VK", binding = VK
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::colorAttachmentCount} greater than 0, then each element of the ##VkRenderingInfo{@code ::pColorAttachments} array with a {@code imageView} equal to #NULL_HANDLE must have the corresponding element of ##VkPipelineRenderingCreateInfo{@code ::pColorAttachmentFormats} used to create the currently bound pipeline equal to #FORMAT_UNDEFINED
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then #CmdSetColorWriteEnableEXT() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then the {@code attachmentCount} parameter of {@code vkCmdSetColorWriteEnableEXT} must be greater than or equal to the ##VkPipelineColorBlendStateCreateInfo{@code ::attachmentCount} of the currently bound graphics pipeline
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then #CmdSetDiscardRectangleEXT() must have been called in the current command buffer prior to this drawing command for each discard rectangle in ##VkPipelineDiscardRectangleStateCreateInfoEXT{@code ::discardRectangleCount}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pDepthAttachment→imageView}
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pDepthAttachment→imageView} was #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::depthAttachmentFormat} used to create the currently bound graphics pipeline must be equal to #FORMAT_UNDEFINED
- If the current render pass instance was begun with #CmdBeginRendering() and ##VkRenderingInfo{@code ::pStencilAttachment→imageView} was not #NULL_HANDLE, the value of ##VkPipelineRenderingCreateInfo{@code ::stencilAttachmentFormat} used to create the currently bound graphics pipeline must be equal to the {@code VkFormat} used to create ##VkRenderingInfo{@code ::pStencilAttachment→imageView}
@@ -835,37 +872,38 @@ val VK12 = "VK12".nativeClass(Module.VULKAN, "VK12", prefix = "VK", binding = VK
- If the current render pass instance was begun with #CmdBeginRendering(), the currently bound pipeline must have been created with a ##VkGraphicsPipelineCreateInfo{@code ::renderPass} equal to #NULL_HANDLE
- If the {@code primitivesGeneratedQueryWithRasterizerDiscard} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, rasterization discard must not be enabled
- If the {@code primitivesGeneratedQueryWithNonZeroStreams} feature is not enabled and the #QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is active, the bound graphics pipeline must not have been created with a non-zero value in ##VkPipelineRasterizationStateStreamCreateInfoEXT{@code ::rasterizationStream}
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled then #CmdSetTessellationDomainOriginEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClampEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled then #CmdSetPolygonModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled then #CmdSetRasterizationSamplesEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT dynamic state enabled then #CmdSetSampleMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToCoverageEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT dynamic state enabled then #CmdSetAlphaToOneEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT dynamic state enabled then #CmdSetLogicOpEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then #CmdSetColorBlendEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then #CmdSetColorBlendEquationEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then #CmdSetColorWriteMaskEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled then #CmdSetRasterizationStreamEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetConservativeRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled then #CmdSetExtraPrimitiveOverestimationSizeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state enabled then #CmdSetDepthClipEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT dynamic state enabled then #CmdSetSampleLocationsEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then #CmdSetColorBlendAdvancedEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then #CmdSetProvokingVertexModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic state enabled then #CmdSetLineRasterizationModeEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT dynamic state enabled then #CmdSetLineStippleEnableEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_EXT dynamic state enabled then #CmdSetLineStippleEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT dynamic state enabled then #CmdSetDepthClipNegativeOneToOneEXT() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV dynamic state enabled then #CmdSetViewportWScalingEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled then #CmdSetViewportSwizzleNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV dynamic state enabled then #CmdSetCoverageToColorEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV dynamic state enabled then #CmdSetCoverageToColorLocationNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV dynamic state enabled then #CmdSetCoverageModulationModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableEnableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV dynamic state enabled then #CmdSetCoverageModulationTableNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV dynamic state enabled then #CmdSetShadingRateImageEnableNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV dynamic state enabled then #CmdSetRepresentativeFragmentTestEnableNV() must have been called in the current command buffer prior to this drawing command
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV dynamic state enabled then #CmdSetCoverageReductionModeNV() must have been called in the current command buffer prior to this drawing command
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT state enabled and the last call to #CmdSetColorBlendEnableEXT() set {@code pColorBlendEnables} for any attachment to #TRUE, then for those attachments in the subpass the corresponding image view’s format features must contain #FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the {@code rasterizationSamples} in the last call to #CmdSetRasterizationSamplesEXT() must follow the rules for a zero-attachment subpass
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_MASK_EXT state enabled and the #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state disabled, then the {@code samples} parameter in the last call to #CmdSetSampleMaskEXT() must be greater or equal to the ##VkPipelineMultisampleStateCreateInfo{@code ::rasterizationSamples} parameter used to create the bound graphics pipeline
@@ -885,7 +923,7 @@ val VK12 = "VK12".nativeClass(Module.VULKAN, "VK12", prefix = "VK", binding = VK
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if {@code sampleLocationsEnable} was #TRUE in the last call to #CmdSetSampleLocationsEnableEXT(), the fragment shader code must not statically use the extended instruction {@code InterpolateAtSample}
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to #CmdSetCoverageModulationTableEnableNV() set {@code coverageModulationTableEnable} to #TRUE, then the {@code coverageModulationTableCount} parameter in the last call to #CmdSetCoverageModulationTableNV() must equal the current {@code rasterizationSamples} divided by the number of color samples in the current subpass
- If the {@link NVFramebufferMixedSamples VK_NV_framebuffer_mixed_samples} extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current {@code rasterizationSamples} must be the same as the sample count of the depth/stencil attachment
- - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
+ - If the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to #CmdSetCoverageToColorEnableNV() set the {@code coverageToColorEnable} to #TRUE, then the current subpass must have a color attachment at the location selected by the last call to #CmdSetCoverageToColorLocationNV() {@code coverageToColorLocation}, with a {@code VkFormat} of #FORMAT_R8_UINT, #FORMAT_R8_SINT, #FORMAT_R16_UINT, #FORMAT_R16_SINT, #FORMAT_R32_UINT, or #FORMAT_R32_SINT
- If this {@link NVCoverageReductionMode VK_NV_coverage_reduction_mode} extension is enabled, the bound graphics pipeline state was created with the #DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and #DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode {@code coverageReductionMode}, then the current {@code rasterizationSamples}, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by #GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but not the #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic state enabled, then the bound graphics pipeline must have been created with ##VkPipelineViewportSwizzleStateCreateInfoNV{@code ::viewportCount} greater or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_VIEWPORT_WITH_COUNT and #DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the {@code viewportCount} parameter in the last call to #CmdSetViewportSwizzleNV() must be greater than or equal to the {@code viewportCount} parameter in the last call to #CmdSetViewportWithCount()
@@ -896,6 +934,7 @@ val VK12 = "VK12".nativeClass(Module.VULKAN, "VK12", prefix = "VK", binding = VK
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT or #DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT dynamic states enabled, and if the current {@code stippledLineEnable} state is #TRUE and the current {@code lineRasterizationMode} state is #LINE_RASTERIZATION_MODE_DEFAULT_EXT, then the {@code stippledRectangularLines} feature must be enabled and ##VkPhysicalDeviceLimits{@code ::strictLines} must be VK_TRUE
- If the bound graphics pipeline state was created with the #DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, {@code conservativePointAndLineRasterization} is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the {@code conservativeRasterizationMode} set by the last call to #CmdSetConservativeRasterizationModeEXT() must be #CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
- If the currently bound pipeline was created with the ##VkPipelineShaderStageCreateInfo{@code ::stage} member of an element of ##VkGraphicsPipelineCreateInfo{@code ::pStages} set to #SHADER_STAGE_VERTEX_BIT, #SHADER_STAGE_TESSELLATION_CONTROL_BIT, #SHADER_STAGE_TESSELLATION_EVALUATION_BIT or #SHADER_STAGE_GEOMETRY_BIT, then Mesh Shader Queries must not be active
+ - If dynamic state was inherited from ##VkCommandBufferInheritanceViewportScissorInfoNV, it must be set in the current command buffer prior to this drawing command
@@ -929,6 +968,7 @@ val VK12 = "VK12".nativeClass(Module.VULKAN, "VK12", prefix = "VK", binding = VK
- An index buffer must be bound
+ - If {@code robustBufferAccess2} is not enabled,
(indexSize × (firstIndex + indexCount) + offset)
must be less than or equal to the size of the bound index buffer, with {@code indexSize} being based on the type specified by {@code indexType}, where the index buffer, {@code indexType}, and {@code offset} are specified via {@code vkCmdBindIndexBuffer}
- {@code stride} must be a multiple of 4 and must be greater than or equal to sizeof(##VkDrawIndexedIndirectCommand)
- If {@code maxDrawCount} is greater than or equal to 1,
(stride × (maxDrawCount - 1) + offset + sizeof(##VkDrawIndexedIndirectCommand))
must be less than or equal to the size of {@code buffer}
- If count stored in {@code countBuffer} is equal to 1,
(offset + sizeof(##VkDrawIndexedIndirectCommand))
must be less than or equal to the size of {@code buffer}
diff --git a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/VK13.kt b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/VK13.kt
index c193893de6..a59396703d 100644
--- a/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/VK13.kt
+++ b/modules/lwjgl/vulkan/src/templates/kotlin/vulkan/templates/VK13.kt
@@ -386,6 +386,7 @@ val VK13 = "VK13".nativeClass(Module.VULKAN, "VK13", prefix = "VK", binding = VK
- #PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT
- #PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT
- #PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT
+ - #PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI
- #PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT specifies the fragment shader stage.
@@ -431,6 +432,7 @@ val VK13 = "VK13".nativeClass(Module.VULKAN, "VK13", prefix = "VK", binding = VK
- #PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV
- #PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT
- #PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI
+ - #PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI
#PIPELINE_STAGE_2_ALL_COMMANDS_BIT specifies all operations performed by all commands supported on the queue it is used with.
@@ -440,11 +442,12 @@ val VK13 = "VK13".nativeClass(Module.VULKAN, "VK13", prefix = "VK", binding = VK
#PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR specifies the stage of the pipeline where the fragment shading rate attachment or shading rate image is read to determine the fragment shading rate for portions of a rasterized primitive.
#PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT specifies the stage of the pipeline where the fragment density map is read to generate the fragment areas.
#PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI specifies the stage of the pipeline where the invocation mask image is read by the implementation to optimize the ray dispatch.
- #PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR specifies the stage of the pipeline where video decode operation are performed.
- #PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR specifies the stage of the pipeline where video encode operation are performed.
+ #PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR specifies the execution of video decode operations.
+ #PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR specifies the execution of video encode operations.
#PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV specifies the stage of the pipeline where optical flow operation are performed.
#PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI specifies the subpass shading shader stage.
#PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT specifies the execution of micromap commands.
+ #PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI specifies the cluster culling shader stage.
#PIPELINE_STAGE_2_TOP_OF_PIPE_BIT is equivalent to #PIPELINE_STAGE_2_ALL_COMMANDS_BIT with {@code VkAccessFlags2} set to 0 when specified in the second synchronization scope, but equivalent to #PIPELINE_STAGE_2_NONE in the first scope.
#PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT is equivalent to #PIPELINE_STAGE_2_ALL_COMMANDS_BIT with {@code VkAccessFlags2} set to 0 when specified in the first synchronization scope, but equivalent to #PIPELINE_STAGE_2_NONE in the second scope.
@@ -534,10 +537,10 @@ val VK13 = "VK13".nativeClass(Module.VULKAN, "VK13", prefix = "VK", binding = VK
#ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT specifies read access to a fragment density map attachment during dynamic fragment density map operations. Such access occurs in the #PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT pipeline stage.
#ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR specifies read access to a fragment shading rate attachment during rasterization. Such access occurs in the #PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR pipeline stage.
#ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV specifies read access to a shading rate image during rasterization. Such access occurs in the #PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV pipeline stage. It is equivalent to #ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR.
- #ACCESS_2_VIDEO_DECODE_READ_BIT_KHR specifies read access to an image or buffer resource as part of a video decode operation. Such access occurs in the #PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR pipeline stage.
- #ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR specifies write access to an image or buffer resource as part of a video decode operation. Such access occurs in the #PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR pipeline stage.
- #ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR specifies read access to an image or buffer resource as part of a video encode operation. Such access occurs in the #PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR pipeline stage.
- #ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR specifies write access to an image or buffer resource as part of a video encode operation. Such access occurs in the #PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR pipeline stage.
+ #ACCESS_2_VIDEO_DECODE_READ_BIT_KHR specifies read access to an image or buffer resource in a video decode operation. Such access occurs in the #PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR pipeline stage.
+ #ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR specifies write access to an image or buffer resource in a video decode operation. Such access occurs in the #PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR pipeline stage.
+ #ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR specifies read access to an image or buffer resource in a video encode operation. Such access occurs in the #PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR pipeline stage.
+ #ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR specifies write access to an image or buffer resource in a video encode operation. Such access occurs in the #PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR pipeline stage.
#ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT specifies read access to a descriptor buffer in any shader pipeline stage.
#ACCESS_2_OPTICAL_FLOW_READ_BIT_NV specifies read access to an image or buffer resource as part of a optical flow operation. Such access occurs in the #PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV pipeline stage.
#ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV specifies write access to an image or buffer resource as part of a optical flow operation. Such access occurs in the #PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV pipeline stage.
@@ -643,17 +646,17 @@ val VK13 = "VK13".nativeClass(Module.VULKAN, "VK13", prefix = "VK", binding = VK
#FORMAT_FEATURE_2_DISJOINT_BIT specifies that a multi-planar image can have the #IMAGE_CREATE_DISJOINT_BIT set during image creation. An implementation must not set #FORMAT_FEATURE_2_DISJOINT_BIT for single-plane formats.
#FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT specifies that an image view can be used as a fragment density map attachment.
#FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR specifies that an image view can be used as a fragment shading rate attachment. An implementation must not set this feature for formats with numeric type other than {@code *UINT}, or set it as a buffer feature.
- #FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR specifies that an image view with this format can be used as an output for video decode operations
- #FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR specifies that an image view with this format can be used as a DPB for video decode operations
- #FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR specifies that an image view with this format can be used as an input to video encode operations
+ #FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR specifies that an image view with this format can be used as a decode output picture in video decode operations.
+ #FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR specifies that an image view with this format can be used as an output reconstructed picture or an input reference picture in video decode operations.
+ #FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR specifies that an image view with this format can be used as an encode input picture in video encode operations.
- #FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR specifies that an image view with this format can be used as a DPB for video encode operations
+ #FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR specifies that an image view with this format can be used as an output reconstructed picture or an input reference picture in video encode operations.
Note
- Specific video profiles
may have additional restrictions on the format and other image creation parameters corresponding to image views used by video coding operations that
can be enumerated using the #GetPhysicalDeviceVideoFormatPropertiesKHR() command, as described in
Enumeration of Supported Video Output, Input and DPB Formats.
+ Specific
video profiles may have additional restrictions on the format and other image creation parameters corresponding to image views used by video coding operations that
can be enumerated using the #GetPhysicalDeviceVideoFormatPropertiesKHR() command.
- #FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT specifies that image views or buffer views created with this format can be used as storage images for read operations without specifying a format.
- #FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT specifies that image views or buffer views created with this format can be used as storage images for write operations without specifying a format.
+ #FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT specifies that image views or buffer views created with this format can be used as storage images or storage texel buffers respectively for read operations without specifying a format.
+ #FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT specifies that image views or buffer views created with this format can be used as storage images or storage texel buffers respectively for write operations without specifying a format.
#FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT specifies that image views created with this format can be used for depth comparison performed by {@code OpImage*Dref*} instructions.
#FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV specifies that the format is supported as a renderable Linear Color Attachment. This bit will be set for renderable color formats in the {@code linearTilingFeatures}. This must not be set in the {@code optimalTilingFeatures} or {@code bufferFeatures} members.
#FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM specifies that image views created with this format can be used as the weight image input to weight image sampling operations.