diff --git a/doc/notes/3.1.2.md b/doc/notes/3.1.2.md index 39c91653c9..7465bc19eb 100644 --- a/doc/notes/3.1.2.md +++ b/doc/notes/3.1.2.md @@ -61,6 +61,7 @@ This build includes the following changes: - Vulkan: Function addresses are now retrieved only once, using the optimal method for each function type. * This avoids warnings on pedantic validation layers. - Fixed callback invocation bugs on 32-bit architectures. +- Fixed various javadoc formatting issues (#308) ### Breaking Changes diff --git a/modules/generator/src/main/kotlin/org/lwjgl/generator/JavaDoc.kt b/modules/generator/src/main/kotlin/org/lwjgl/generator/JavaDoc.kt index fb60d63f83..7c82eb0bba 100644 --- a/modules/generator/src/main/kotlin/org/lwjgl/generator/JavaDoc.kt +++ b/modules/generator/src/main/kotlin/org/lwjgl/generator/JavaDoc.kt @@ -7,7 +7,7 @@ package org.lwjgl.generator import java.lang.Math.* private val REDUNDANT_WHITESPACE = "^[ \\t]+$".toRegex(RegexOption.MULTILINE) -private val BLOCK_NODE = "(?:div|h[1-6]|pre|table|thead|tfoot|tbody|td|tr|ul|li|ol|dl|dt|dd)" // TODO: add more here if necessary +private val BLOCK_NODE = "(?:div|h[1-6]|code|table|thead|tfoot|tbody|td|tr|ul|li|ol|dl|dt|dd)" // TODO: add more here if necessary private val FRAGMENT = "(]+)?>|^)([\\s\\S]*?)(?=]+)?>|$)".toRegex() private val CHILD_NODE = "<(?:tr|thead|tfoot|tbody|li|dt|dd)>".toRegex() private val PARAGRAPH_PATTERN = "\\n\\n(?:\\n?[ \\t]*[\\S][^\\n]*)+".toRegex(RegexOption.MULTILINE) @@ -314,12 +314,12 @@ private val CODE_BLOCK_ESCAPE_PATTERN = "^".toRegex(RegexOption.MULTILINE) // li private val CODE_BLOCK_TAB_PATTERN = "\t".toRegex() // tabs /** Useful for pre-formatted code blocks. */ -fun codeBlock(code: String) = """

+fun codeBlock(code: String) = """
 ${code
     .replace(CODE_BLOCK_TRIM_PATTERN, "") // ...trim
     .replace(CODE_BLOCK_ESCAPE_PATTERN, "\uFFFF") // ...escape
     .replace(CODE_BLOCK_TAB_PATTERN, "    ") // ...replace with 4 spaces for consistent formatting.
-}
""" +}
""" fun note(content: String) = "
Note
\n$content
" diff --git a/modules/templates/src/main/kotlin/org/lwjgl/assimp/AssimpTypes.kt b/modules/templates/src/main/kotlin/org/lwjgl/assimp/AssimpTypes.kt index 37407177e7..22749f6e17 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/assimp/AssimpTypes.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/assimp/AssimpTypes.kt @@ -467,12 +467,12 @@ val aiMaterialProperty_pp = struct(ASSIMP_PACKAGE, "AIMaterialProperty", nativeN Material property names follow a simple scheme: ${codeBlock(""" -$ -? +$<name> +?<name> A public property, there must be corresponding AI_MATKEY_XXX define 2nd: Public, but ignored by the aiProcess_RemoveRedundantMaterials post-processing step. -~ +~<name> A temporary property for internal use. """)} """ diff --git a/modules/templates/src/main/kotlin/org/lwjgl/glfw/templates/GLFW.kt b/modules/templates/src/main/kotlin/org/lwjgl/glfw/templates/GLFW.kt index a9162f58d5..d604e83a8d 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/glfw/templates/GLFW.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/glfw/templates/GLFW.kt @@ -2488,63 +2488,6 @@ val GLFW = "GLFW".nativeClass(packageName = GLFW_PACKAGE, prefix = "GLFW", bindi since = "version 2.2" ) -/*! @brief Returns the state of all hats of the specified joystick. - * - * This function returns the state of all hats of the specified joystick. - * Each element in the array is one of the following values: - * - * Name | Value - * --------------------- | -------------------------------- - * `GLFW_HAT_CENTERED` | 0 - * `GLFW_HAT_UP` | 1 - * `GLFW_HAT_RIGHT` | 2 - * `GLFW_HAT_DOWN` | 4 - * `GLFW_HAT_LEFT` | 8 - * `GLFW_HAT_RIGHT_UP` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_UP` - * `GLFW_HAT_RIGHT_DOWN` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_DOWN` - * `GLFW_HAT_LEFT_UP` | `GLFW_HAT_LEFT` \| `GLFW_HAT_UP` - * `GLFW_HAT_LEFT_DOWN` | `GLFW_HAT_LEFT` \| `GLFW_HAT_DOWN` - * - * The diagonal directions are bitwise combinations of the primary (up, right, - * down and left) directions and you can test for these individually by ANDing - * it with the corresponding direction. - * - * @code - * if (hats[2] & GLFW_HAT_RIGHT) - * { - * // State of hat 2 could be right-up, right or right-down - * } - * @endcode - * - * Querying a joystick ID with no device present is not an error, but will - * cause this function to return `NULL`. Call @ref glfwJoystickPresent to - * check device presence. - * - * @param[in] jid The [joystick](@ref joysticks) to query. - * @param[out] count Where to store the number of hat states in the returned - * array. This is set to zero if the joystick is not present or an error - * occurred. - * @return An array of hat states, or `NULL` if the joystick is not present - * or an [error](@ref error_handling) occurred. - * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref - * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. - * - * @bug @linux Joystick hats are currently unimplemented. - * - * @pointer_lifetime The returned array is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the specified joystick is - * disconnected, this function is called again for that joystick or the library - * is terminated. - * - * @thread_safety This function must only be called from the main thread. - * - * @sa @ref joystick_hat - * - * @since Added in version 3.3. - * - * @ingroup input - */ const..unsigned_char_p( "GetJoystickHats", """ diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/ExtensionTypes.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/ExtensionTypes.kt index a17526fa08..ad8f296d9f 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/ExtensionTypes.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/ExtensionTypes.kt @@ -101,7 +101,8 @@ val PFN_vkDebugReportCallbackEXT = "PFN_vkDebugReportCallbackEXT".callback(
C Specification
The prototype for the callback function implemented by the application is: -
typedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)(
+        
+￿typedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)(
 ￿    VkDebugReportFlagsEXT                       flags,
 ￿    VkDebugReportObjectTypeEXT                  objectType,
 ￿    uint64_t                                    object,
@@ -109,7 +110,7 @@ val PFN_vkDebugReportCallbackEXT = "PFN_vkDebugReportCallbackEXT".callback(
 ￿    int32_t                                     messageCode,
 ￿    const char*                                 pLayerPrefix,
 ￿    const char*                                 pMessage,
-￿    void*                                       pUserData);
+￿ void* pUserData);
Description
The callback returns a {@code VkBool32} that indicates to the calling layer if the Vulkan call should be aborted or not. Applications should always return #FALSE so that they see the same behavior with and without validation layers enabled. @@ -118,7 +119,8 @@ val PFN_vkDebugReportCallbackEXT = "PFN_vkDebugReportCallbackEXT".callback( The object types are: -
typedef enum VkDebugReportObjectTypeEXT {
+        
+￿typedef enum VkDebugReportObjectTypeEXT {
 ￿    VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,
 ￿    VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,
 ￿    VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,
@@ -153,7 +155,7 @@ val PFN_vkDebugReportCallbackEXT = "PFN_vkDebugReportCallbackEXT".callback(
 ￿    VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31,
 ￿    VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32,
 ￿    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000,
-} VkDebugReportObjectTypeEXT;
+￿} VkDebugReportObjectTypeEXT;
  • #DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT is an unknown object.
  • @@ -255,9 +257,10 @@ val VkSwapchainCreateInfoKHR = struct(VULKAN_PACKAGE, "VkSwapchainCreateInfoKHR" VkStructureType.member("sType", "the type of this structure.") nullable..const..opaque_p.member("pNext", "{@code NULL} or a pointer to an extension-specific structure.") VkSwapchainCreateFlagsKHR.member("flags", """a bitmask indicating parameters of swapchain creation. Bits which can be set include: -
    typedef enum VkSwapchainCreateFlagBitsKHR {
    +
    +￿typedef enum VkSwapchainCreateFlagBitsKHR {
     ￿    VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX = 0x00000001,
    -} VkSwapchainCreateFlagBitsKHR;
    +￿} VkSwapchainCreateFlagBitsKHR;
    == Description @@ -606,13 +609,14 @@ val VkDebugReportCallbackCreateInfoEXT = struct(VULKAN_PACKAGE, "VkDebugReportCa VkStructureType.member("sType", "the type of this structure.") nullable..const..opaque_p.member("pNext", "{@code NULL} or a pointer to an extension-specific structure.") VkDebugReportFlagsEXT.member("flags", """indicate which event(s) will cause this callback to be called. Flags are interpreted as bitmasks and multiple may be set. Bits which can be set include: -
    typedef enum VkDebugReportFlagBitsEXT {
    +
    +￿typedef enum VkDebugReportFlagBitsEXT {
     ￿    VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001,
     ￿    VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002,
     ￿    VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004,
     ￿    VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008,
     ￿    VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010,
    -} VkDebugReportFlagBitsEXT;
    +￿} VkDebugReportFlagBitsEXT;
    • #DEBUG_REPORT_ERROR_BIT_EXT indicates an error that may cause undefined results, including an application crash.
    • @@ -1239,9 +1243,10 @@ val VkMemoryAllocateFlagsInfoKHX = struct(VULKAN_PACKAGE, "VkMemoryAllocateFlags VkStructureType.member("sType", "the type of this structure.") nullable..const..opaque_p.member("pNext", "{@code NULL} or a pointer to an extension-specific structure.") VkMemoryAllocateFlagsKHX.member("flags", """a bitmask of flags controlling the allocation. The bits specified in {@code flags} are: -
      typedef enum VkMemoryAllocateFlagBitsKHX {
      +
      +￿typedef enum VkMemoryAllocateFlagBitsKHX {
       ￿    VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX = 0x00000001,
      -} VkMemoryAllocateFlagBitsKHX;
      +￿} VkMemoryAllocateFlagBitsKHX;
      • if {@code flags} contains #MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX, memory will be allocated for the devices in {@code deviceMask}.
      • @@ -1504,12 +1509,13 @@ val VkDeviceGroupPresentCapabilitiesKHX = struct(VULKAN_PACKAGE, "VkDeviceGroupP nullable..const..opaque_p.member("pNext", "{@code NULL} or a pointer to an extension-specific structure.") uint32_t.array("presentMask", "an array of masks, where the mask at element i is non-zero if physical device i has a presentation engine, and where bit j is set in element i if physical device i can present swapchain images from physical device j. If element i is non-zero, then bit i must be set.", size = "VK_MAX_DEVICE_GROUP_SIZE_KHX") VkDeviceGroupPresentModeFlagsKHX.member("modes", """a bitmask indicating which device group presentation modes are supported. The bits returned in {@code modes} are: -
        typedef enum VkDeviceGroupPresentModeFlagBitsKHX {
        +
        +￿typedef enum VkDeviceGroupPresentModeFlagBitsKHX {
         ￿    VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX = 0x00000001,
         ￿    VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX = 0x00000002,
         ￿    VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX = 0x00000004,
         ￿    VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX = 0x00000008,
        -} VkDeviceGroupPresentModeFlagBitsKHX;
        +￿} VkDeviceGroupPresentModeFlagBitsKHX;
        • if {@code modes} contains #DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX, any physical device with a presentation engine can present its own swapchain images.
        • @@ -1701,9 +1707,10 @@ val VkValidationFlagsEXT = struct(VULKAN_PACKAGE, "VkValidationFlagsEXT") { nullable..const..opaque_p.member("pNext", "{@code NULL} or a pointer to an extension-specific structure.") AutoSize("pDisabledValidationChecks")..uint32_t.member("disabledValidationCheckCount", "the number of checks to disable.") VkValidationCheckEXT.p.member("pDisabledValidationChecks", """a pointer to an array of values specifying the validation checks to be disabled. Checks which may be specified include: -
          typedef enum VkValidationCheckEXT {
          +
          +￿typedef enum VkValidationCheckEXT {
           ￿    VK_VALIDATION_CHECK_ALL_EXT = 0,
          -} VkValidationCheckEXT;
          +￿} VkValidationCheckEXT;
          • #VALIDATION_CHECK_ALL_EXT disables all validation checks.
          • @@ -1791,7 +1798,8 @@ val VkPhysicalDeviceExternalImageFormatInfoKHX = struct(VULKAN_PACKAGE, "VkPhysi VkStructureType.member("sType", "the type of this structure.") nullable..const..opaque_p.member("pNext", "{@code NULL} or a pointer to an extension-specific structure.") VkExternalMemoryHandleTypeFlagBitsKHX.member("handleType", """a bit indicating a memory handle type that will be used with the memory associated with the image. Bits which can be set include: -
            typedef enum VkExternalMemoryHandleTypeFlagBitsKHX {
            +
            +￿typedef enum VkExternalMemoryHandleTypeFlagBitsKHX {
             ￿    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHX = 0x00000001,
             ￿    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX = 0x00000002,
             ￿    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX = 0x00000004,
            @@ -1799,7 +1807,7 @@ val VkPhysicalDeviceExternalImageFormatInfoKHX = struct(VULKAN_PACKAGE, "VkPhysi
             ￿    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHX = 0x00000010,
             ￿    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHX = 0x00000020,
             ￿    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHX = 0x00000040,
            -} VkExternalMemoryHandleTypeFlagBitsKHX;
            +￿} VkExternalMemoryHandleTypeFlagBitsKHX;
            • #EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHX is a POSIX file descriptor handle that has only limited valid usage outside of Vulkan and other compatible APIs. It must be compatible with the POSIX system calls fname:dup, fname:dup2, fname:close, and the non-standard system call fname:dup3. Additionally, it must be transportable over a socket using an {@code SCM_RIGHTS} control message. It owns a reference to the underlying memory resource represented by its Vulkan memory object.
            • @@ -2133,13 +2141,14 @@ val VkPhysicalDeviceExternalSemaphoreInfoKHX = struct(VULKAN_PACKAGE, "VkPhysica VkStructureType.member("sType", "the type of this structure") nullable..const..opaque_p.member("pNext", "NULL or a pointer to an extension-specific structure.") VkExternalSemaphoreHandleTypeFlagBitsKHX.member("handleType", """a bit indicating an external semaphore handle type for which capabilities will be returned. Bits which can be set include: -
              typedef enum VkExternalSemaphoreHandleTypeFlagBitsKHX {
              +
              +￿typedef enum VkExternalSemaphoreHandleTypeFlagBitsKHX {
               ￿    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHX = 0x00000001,
               ￿    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX = 0x00000002,
               ￿    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX = 0x00000004,
               ￿    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHX = 0x00000008,
               ￿    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHX = 0x00000010,
              -} VkExternalSemaphoreHandleTypeFlagBitsKHX;
              +￿} VkExternalSemaphoreHandleTypeFlagBitsKHX;
              • #EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHX is a POSIX file descriptor handle that has only limited valid usage outside of Vulkan and other compatible APIs. It must be compatible with the POSIX system calls fname:dup, fname:dup2, fname:close, and the non-standard system call fname:dup3. Additionally, it must be transportable over a socket using an {@code SCM_RIGHTS} control message. It owns a reference to the underlying synchronization primitive represented by its Vulkan semaphore object.
              • @@ -2622,12 +2631,13 @@ val VkIndirectCommandsLayoutCreateInfoNVX = struct(VULKAN_PACKAGE, "VkIndirectCo
                Description
                Bits which can be set in {@code flags} are: -
                typedef enum VkIndirectCommandsLayoutUsageFlagBitsNVX {
                +        
                +￿typedef enum VkIndirectCommandsLayoutUsageFlagBitsNVX {
                 ￿    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = 0x00000001,
                 ￿    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = 0x00000002,
                 ￿    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = 0x00000004,
                 ￿    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = 0x00000008,
                -} VkIndirectCommandsLayoutUsageFlagBitsNVX;
                +￿} VkIndirectCommandsLayoutUsageFlagBitsNVX;
                • #INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX indicates that the processing of sequences can happen at an implementation-dependent order, which is not guaranteed to be coherent across multiple invocations.
                • @@ -2638,8 +2648,9 @@ val VkIndirectCommandsLayoutCreateInfoNVX = struct(VULKAN_PACKAGE, "VkIndirectCo The following code illustrates some of the key flags: -
                  void cmdProcessAllSequences(cmd, objectTable, indirectCommandsLayout, pIndirectCommandsTokens, sequencesCount, indexbuffer, indexbufferoffset)
                  -{
                  +        
                  +￿void cmdProcessAllSequences(cmd, objectTable, indirectCommandsLayout, pIndirectCommandsTokens, sequencesCount, indexbuffer, indexbufferoffset)
                  +￿{
                   ￿  for (s = 0; s < sequencesCount; s++)
                   ￿  {
                   ￿    sequence = s;
                  @@ -2653,7 +2664,7 @@ val VkIndirectCommandsLayoutCreateInfoNVX = struct(VULKAN_PACKAGE, "VkIndirectCo
                   ￿
                   ￿    cmdProcessSequence( cmd, objectTable, indirectCommandsLayout, pIndirectCommandsTokens, sequence );
                   ￿  }
                  -}
                  +￿}
                  Valid Usage
                    @@ -2783,13 +2794,14 @@ val VkObjectTableCreateInfoNVX = struct(VULKAN_PACKAGE, "VkObjectTableCreateInfo
                    Description
                    Types which can be set in {@code pObjectEntryTypes} are: -
                    typedef enum VkObjectEntryTypeNVX {
                    +        
                    +￿typedef enum VkObjectEntryTypeNVX {
                     ￿    VK_OBJECT_ENTRY_DESCRIPTOR_SET_NVX = 0,
                     ￿    VK_OBJECT_ENTRY_PIPELINE_NVX = 1,
                     ￿    VK_OBJECT_ENTRY_INDEX_BUFFER_NVX = 2,
                     ￿    VK_OBJECT_ENTRY_VERTEX_BUFFER_NVX = 3,
                     ￿    VK_OBJECT_ENTRY_PUSH_CONSTANT_NVX = 4,
                    -} VkObjectEntryTypeNVX;
                    +￿} VkObjectEntryTypeNVX;
                    • #OBJECT_ENTRY_DESCRIPTOR_SET_NVX indicates a {@code VkDescriptorSet} resource entry that is registered via ##VkObjectTableDescriptorSetEntryNVX.
                    • @@ -2801,10 +2813,11 @@ val VkObjectTableCreateInfoNVX = struct(VULKAN_PACKAGE, "VkObjectTableCreateInfo Bits which can be set in {@code pObjectEntryUsageFlags} are: -
                      typedef enum VkObjectEntryUsageFlagBitsNVX {
                      +        
                      +￿typedef enum VkObjectEntryUsageFlagBitsNVX {
                       ￿    VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = 0x00000001,
                       ￿    VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = 0x00000002,
                      -} VkObjectEntryUsageFlagBitsNVX;
                      +￿} VkObjectEntryUsageFlagBitsNVX;
                      • #OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX indicates that the resource is bound to #PIPELINE_BIND_POINT_GRAPHICS
                      • @@ -3096,11 +3109,12 @@ val VkDisplayPowerInfoEXT = struct(VULKAN_PACKAGE, "VkDisplayPowerInfoEXT") { VkStructureType.member("sType", "the type of this structure.") nullable..const..opaque_p.member("pNext", "{@code NULL} or a pointer to an extension-specific structure.") VkDisplayPowerStateEXT.member("powerState", """the new power state of the display. Possible values are: -
                        typedef enum VkDisplayPowerStateEXT {
                        +
                        +￿typedef enum VkDisplayPowerStateEXT {
                         ￿    VK_DISPLAY_POWER_STATE_OFF_EXT = 0,
                         ￿    VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1,
                         ￿    VK_DISPLAY_POWER_STATE_ON_EXT = 2,
                        -} VkDisplayPowerStateEXT;
                        +￿} VkDisplayPowerStateEXT;
                        • #DISPLAY_POWER_STATE_OFF_EXT means the display is powered down.
                        • @@ -3149,9 +3163,10 @@ val VkDisplayEventInfoEXT = struct(VULKAN_PACKAGE, "VkDisplayEventInfoEXT") { VkStructureType.member("sType", "the type of this structure.") nullable..const..opaque_p.member("pNext", "{@code NULL} or a pointer to an extension-specific structure.") VkDisplayEventTypeEXT.member("displayEvent", """specifies when the fence will be signaled. Possible values are: -
                          typedef enum VkDisplayEventTypeEXT {
                          +
                          +￿typedef enum VkDisplayEventTypeEXT {
                           ￿    VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0,
                          -} VkDisplayEventTypeEXT;
                          +￿} VkDisplayEventTypeEXT;
                          • #DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT occurs when the first pixel of the next display refresh cycle leaves the display engine for the display.
                          • diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/VKTypes.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/VKTypes.kt index b2a9c7deb0..37556eab82 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/VKTypes.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/VKTypes.kt @@ -178,11 +178,12 @@ val PFN_vkAllocationFunction = "PFN_vkAllocationFunction".callback(
                            C Specification
                            The type of {@code pfnAllocation} is: -
                            typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)(
                            +        
                            +￿typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)(
                             ￿    void*                                       pUserData,
                             ￿    size_t                                      size,
                             ￿    size_t                                      alignment,
                            -￿    VkSystemAllocationScope                     allocationScope);
                            +￿ VkSystemAllocationScope allocationScope);
                            Description
                            If {@code pfnAllocation} is unable to allocate the requested memory, it must return {@code NULL}. If the allocation was successful, it must return a valid pointer to memory allocation containing at least {@code size} bytes, and with the pointer value being a multiple of {@code alignment}. @@ -220,12 +221,13 @@ val PFN_vkReallocationFunction = "PFN_vkReallocationFunction".callback(
                            C Specification
                            The type of {@code pfnReallocation} is: -
                            typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)(
                            +        
                            +￿typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)(
                             ￿    void*                                       pUserData,
                             ￿    void*                                       pOriginal,
                             ￿    size_t                                      size,
                             ￿    size_t                                      alignment,
                            -￿    VkSystemAllocationScope                     allocationScope);
                            +￿ 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. @@ -260,9 +262,10 @@ val PFN_vkFreeFunction = "PFN_vkFreeFunction".callback(
                            C Specification
                            The type of {@code pfnFree} is: -
                            typedef void (VKAPI_PTR *PFN_vkFreeFunction)(
                            +        
                            +￿typedef void (VKAPI_PTR *PFN_vkFreeFunction)(
                             ￿    void*                                       pUserData,
                            -￿    void*                                       pMemory);
                            +￿ void* pMemory);
                            Description
                            {@code pMemory} may be {@code NULL}, which the callback must handle safely. If {@code pMemory} is non-{@code NULL}, it must be a pointer previously allocated by {@code pfnAllocation} or {@code pfnReallocation}. The application should free this memory. @@ -289,11 +292,12 @@ val PFN_vkInternalAllocationNotification = "PFN_vkInternalAllocationNotification
                            C Specification
                            The type of {@code pfnInternalAllocation} is: -
                            typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)(
                            +        
                            +￿typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)(
                             ￿    void*                                       pUserData,
                             ￿    size_t                                      size,
                             ￿    VkInternalAllocationType                    allocationType,
                            -￿    VkSystemAllocationScope                     allocationScope);
                            +￿ VkSystemAllocationScope allocationScope);
                            Description
                            This is a purely informational callback. @@ -320,11 +324,12 @@ val PFN_vkInternalFreeNotification = "PFN_vkInternalFreeNotification".callback(
                            C Specification
                            The type of {@code pfnInternalFree} is: -
                            typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)(
                            +        
                            +￿typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)(
                             ￿    void*                                       pUserData,
                             ￿    size_t                                      size,
                             ￿    VkInternalAllocationType                    allocationType,
                            -￿    VkSystemAllocationScope                     allocationScope);
                            +￿ VkSystemAllocationScope allocationScope);
                            @@ -671,7 +676,8 @@ val VkFormatProperties = struct(VULKAN_PACKAGE, "VkFormatProperties", mutable =
                            Description
                            Supported features are described as a set of {@code VkFormatFeatureFlagBits}: -
                            typedef enum VkFormatFeatureFlagBits {
                            +        
                            +￿typedef enum VkFormatFeatureFlagBits {
                             ￿    VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,
                             ￿    VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002,
                             ￿    VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004,
                            @@ -688,7 +694,7 @@ val VkFormatProperties = struct(VULKAN_PACKAGE, "VkFormatProperties", mutable =
                             ￿    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
                             ￿    VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 0x00004000,
                             ￿    VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 0x00008000,
                            -} VkFormatFeatureFlagBits;
                            +￿} VkFormatFeatureFlagBits;
                            The {@code linearTilingFeatures} and {@code optimalTilingFeatures} members of the ##VkFormatProperties structure describe what features are supported by #IMAGE_TILING_LINEAR and #IMAGE_TILING_OPTIMAL images, respectively. @@ -805,7 +811,8 @@ val VkPhysicalDeviceLimits = struct(VULKAN_PACKAGE, "VkPhysicalDeviceLimits", mu
                            Description
                            1
                            -
                            typedef enum VkSampleCountFlagBits {
                            +            
                            +￿typedef enum VkSampleCountFlagBits {
                             ￿    VK_SAMPLE_COUNT_1_BIT = 0x00000001,
                             ￿    VK_SAMPLE_COUNT_2_BIT = 0x00000002,
                             ￿    VK_SAMPLE_COUNT_4_BIT = 0x00000004,
                            @@ -813,7 +820,7 @@ val VkPhysicalDeviceLimits = struct(VULKAN_PACKAGE, "VkPhysicalDeviceLimits", mu
                             ￿    VK_SAMPLE_COUNT_16_BIT = 0x00000010,
                             ￿    VK_SAMPLE_COUNT_32_BIT = 0x00000020,
                             ￿    VK_SAMPLE_COUNT_64_BIT = 0x00000040,
                            -} VkSampleCountFlagBits;
                            +￿} VkSampleCountFlagBits;
                            The sample count limits defined above represent the minimum supported sample counts for each image type. Individual images may support additional sample counts, which are queried using #GetPhysicalDeviceImageFormatProperties() as described in Supported Sample Counts.
                            @@ -987,12 +994,13 @@ val VkQueueFamilyProperties = struct(VULKAN_PACKAGE, "VkQueueFamilyProperties",
                            Description
                            The bits specified in {@code queueFlags} are: -
                            typedef enum VkQueueFlagBits {
                            +        
                            +￿typedef enum VkQueueFlagBits {
                             ￿    VK_QUEUE_GRAPHICS_BIT = 0x00000001,
                             ￿    VK_QUEUE_COMPUTE_BIT = 0x00000002,
                             ￿    VK_QUEUE_TRANSFER_BIT = 0x00000004,
                             ￿    VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
                            -} VkQueueFlagBits;
                            +￿} VkQueueFlagBits;
                            • if #QUEUE_GRAPHICS_BIT is set, then the queues in this queue family support graphics operations.
                            • @@ -1052,13 +1060,14 @@ val VkMemoryType = struct(VULKAN_PACKAGE, "VkMemoryType", mutable = false) { """ VkMemoryPropertyFlags.member("propertyFlags", """a bitmask of properties for this memory type. The bits specified in {@code propertyFlags} are: -
                              typedef enum VkMemoryPropertyFlagBits {
                              +
                              +￿typedef enum VkMemoryPropertyFlagBits {
                               ￿    VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
                               ￿    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
                               ￿    VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
                               ￿    VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
                               ￿    VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
                              -} VkMemoryPropertyFlagBits;
                              +￿} VkMemoryPropertyFlagBits;
                              • if {@code propertyFlags} has the #MEMORY_PROPERTY_DEVICE_LOCAL_BIT bit set, memory allocated with this type is the most efficient for device access. This property will only be set for memory types belonging to heaps with the #MEMORY_HEAP_DEVICE_LOCAL_BIT set.
                              • @@ -1078,10 +1087,11 @@ val VkMemoryHeap = struct(VULKAN_PACKAGE, "VkMemoryHeap", mutable = false) { VkDeviceSize.member("size", "the total memory size in bytes in the heap.") VkMemoryHeapFlags.member("flags", """a bitmask of attribute flags for the heap. The bits specified in {@code flags} are: -
                                typedef enum VkMemoryHeapFlagBits {
                                +
                                +￿typedef enum VkMemoryHeapFlagBits {
                                 ￿    VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
                                 ￿    VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX = 0x00000002,
                                -} VkMemoryHeapFlagBits;
                                +￿} VkMemoryHeapFlagBits;
                                • if {@code flags} contains #MEMORY_HEAP_DEVICE_LOCAL_BIT, it means the heap corresponds to device local memory. Device local memory may have different performance characteristics than host local memory, and may support different memory property flags.
                                • @@ -1127,9 +1137,10 @@ val VkPhysicalDeviceMemoryProperties = struct(VULKAN_PACKAGE, "VkPhysicalDeviceM Memory types are ordered in the list such that X is assigned a lesser {@code memoryTypeIndex} than Y if (X {leq} Y) {land} {lnot} (Y {leq} X) according to the preorder. Note that the list of all allowed memory property flag combinations above satisfies this preorder, but other orders would as well. The goal of this ordering is to enable applications to use a simple search loop in selecting the proper memory type, along the lines of: -
                                  // Find a memory type in "memoryTypeBits" that includes all of "properties"
                                  -int32_t FindProperties(uint32_t memoryTypeBits, VkMemoryPropertyFlags properties)
                                  -{
                                  +        
                                  +￿// Find a memory type in "memoryTypeBits" that includes all of "properties"
                                  +￿int32_t FindProperties(uint32_t memoryTypeBits, VkMemoryPropertyFlags properties)
                                  +￿{
                                   ￿    for (int32_t i = 0; i < memoryTypeCount; ++i)
                                   ￿    {
                                   ￿        if ((memoryTypeBits & (1 << i)) &&
                                  @@ -1137,15 +1148,15 @@ int32_t FindProperties(uint32_t memoryTypeBits, VkMemoryPropertyFlags properties
                                   ￿            return i;
                                   ￿    }
                                   ￿    return -1;
                                  -}
                                  +￿}
                                   ￿
                                  -// Try to find an optimal memory type, or if it does not exist
                                  -// find any compatible memory type
                                  -VkMemoryRequirements memoryRequirements;
                                  -vkGetImageMemoryRequirements(device, image, &memoryRequirements);
                                  -int32_t memoryType = FindProperties(memoryRequirements.memoryTypeBits, optimalProperties);
                                  -if (memoryType == -1)
                                  -￿    memoryType = FindProperties(memoryRequirements.memoryTypeBits, requiredProperties);
                                  +￿// Try to find an optimal memory type, or if it does not exist +￿// find any compatible memory type +￿VkMemoryRequirements memoryRequirements; +￿vkGetImageMemoryRequirements(device, image, &memoryRequirements); +￿int32_t memoryType = FindProperties(memoryRequirements.memoryTypeBits, optimalProperties); +￿if (memoryType == -1) +￿ memoryType = FindProperties(memoryRequirements.memoryTypeBits, requiredProperties);
                                  The loop will find the first supported memory type that has all bits requested in {@code properties} set. If there is no exact match, it will find a closest match (i.e. a memory type with the fewest additional bits set), which has some additional bits set but which are not detrimental to the behaviors requested by {@code properties}. The application can first search for the optimal properties, e.g. a memory type that is device-local or supports coherent cached accesses, as appropriate for the intended usage, and if such a memory type is not present can fallback to searching for a less optimal but guaranteed set of properties such as "0" or "host-visible and coherent". @@ -1400,11 +1411,12 @@ val VkSparseImageFormatProperties = struct(VULKAN_PACKAGE, "VkSparseImageFormatP VkImageAspectFlags.member("aspectMask", "a bitmask of {@code VkImageAspectFlagBits} specifying which aspects of the image the properties apply to.") VkExtent3D.member("imageGranularity", "the width, height, and depth of the sparse image block in texels or compressed texel blocks.") VkSparseImageFormatFlags.member("flags", """a bitmask specifying additional information about the sparse resource. Bits which can be set include: -
                                  typedef enum VkSparseImageFormatFlagBits {
                                  +
                                  +￿typedef enum VkSparseImageFormatFlagBits {
                                   ￿    VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001,
                                   ￿    VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002,
                                   ￿    VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004,
                                  -} VkSparseImageFormatFlagBits;
                                  +￿} VkSparseImageFormatFlagBits;
                                  • If #SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT is set, the image uses a single mip tail region for all array layers.
                                  • @@ -1481,9 +1493,10 @@ val VkSparseMemoryBind = struct(VULKAN_PACKAGE, "VkSparseMemoryBind") { VkDeviceMemory.member("memory", "the {@code VkDeviceMemory} object that the range of the resource is bound to. If {@code memory} is #NULL_HANDLE, the range is unbound.") VkDeviceSize.member("memoryOffset", "the offset into the {@code VkDeviceMemory} object to bind the resource range to. If {@code memory} is #NULL_HANDLE, this value is ignored.") VkSparseMemoryBindFlags.member("flags", """a bitmask specifying usage of the binding operation. Bits which can be set include: -
                                    typedef enum VkSparseMemoryBindFlagBits {
                                    +
                                    +￿typedef enum VkSparseMemoryBindFlagBits {
                                     ￿    VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
                                    -} VkSparseMemoryBindFlagBits;
                                    +￿} VkSparseMemoryBindFlagBits;
                                    • #SPARSE_MEMORY_BIND_METADATA_BIT indicates that the memory being bound is only for the metadata aspect.
                                    • @@ -1686,9 +1699,10 @@ val VkFenceCreateInfo = struct(VULKAN_PACKAGE, "VkFenceCreateInfo") { VkStructureType.member("sType", "the type of this structure.") nullable..const..opaque_p.member("pNext", "{@code NULL} or a pointer to an extension-specific structure.") VkFenceCreateFlags.member("flags", """defines the initial state and behavior of the fence. Bits which can be set include: -
                                      typedef enum VkFenceCreateFlagBits {
                                      +
                                      +￿typedef enum VkFenceCreateFlagBits {
                                       ￿    VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
                                      -} VkFenceCreateFlagBits;
                                      +￿} VkFenceCreateFlagBits;
                                      If {@code flags} contains #FENCE_CREATE_SIGNALED_BIT then the fence object is created in the signaled state; otherwise it is created in the unsignaled state.""") } @@ -1762,11 +1776,12 @@ val VkQueryPoolCreateInfo = struct(VULKAN_PACKAGE, "VkQueryPoolCreateInfo") { nullable..const..opaque_p.member("pNext", "{@code NULL} or a pointer to an extension-specific structure.") VkQueryPoolCreateFlags.member("flags", "reserved for future use.") VkQueryType.member("queryType", """the type of queries managed by the pool, and must be one of the values -
                                      typedef enum VkQueryType {
                                      +
                                      +￿typedef enum VkQueryType {
                                       ￿    VK_QUERY_TYPE_OCCLUSION = 0,
                                       ￿    VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
                                       ￿    VK_QUERY_TYPE_TIMESTAMP = 2,
                                      -} VkQueryType;
                                      """) +￿} VkQueryType;
                                      """) uint32_t.member("queryCount", "the number of queries managed by the pool.") VkQueryPipelineStatisticFlags.member("pipelineStatistics", "a bitmask indicating which counters will be returned in queries on the new pool, as described below in the “Pipeline Statistics Queries” section. {@code pipelineStatistics} is ignored if {@code queryType} is not #QUERY_TYPE_PIPELINE_STATISTICS.") } @@ -1779,7 +1794,8 @@ val VkBufferCreateInfo = struct(VULKAN_PACKAGE, "VkBufferCreateInfo") {
                                      Description
                                      Bits which can be set in {@code usage} are: -
                                      typedef enum VkBufferUsageFlagBits {
                                      +        
                                      +￿typedef enum VkBufferUsageFlagBits {
                                       ￿    VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001,
                                       ￿    VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002,
                                       ￿    VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,
                                      @@ -1789,7 +1805,7 @@ val VkBufferCreateInfo = struct(VULKAN_PACKAGE, "VkBufferCreateInfo") {
                                       ￿    VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
                                       ￿    VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
                                       ￿    VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
                                      -} VkBufferUsageFlagBits;
                                      +￿} VkBufferUsageFlagBits;
                                      • #BUFFER_USAGE_TRANSFER_SRC_BIT indicates that the buffer can be used as the source of a transfer command (see the definition of #PIPELINE_STAGE_TRANSFER_BIT).
                                      • @@ -1807,11 +1823,12 @@ val VkBufferCreateInfo = struct(VULKAN_PACKAGE, "VkBufferCreateInfo") { Bits which can be set in {@code flags} are: -
                                        typedef enum VkBufferCreateFlagBits {
                                        +        
                                        +￿typedef enum VkBufferCreateFlagBits {
                                         ￿    VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001,
                                         ￿    VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
                                         ￿    VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
                                        -} VkBufferCreateFlagBits;
                                        +￿} VkBufferCreateFlagBits;
                                        These bits have the following meanings: @@ -2032,13 +2049,15 @@ val VkSubresourceLayout = struct(VULKAN_PACKAGE, "VkSubresourceLayout", mutable
                                        Description
                                        For images created with linear tiling, {@code rowPitch}, {@code arrayPitch} and {@code depthPitch} describe the layout of the image subresource in linear memory. For uncompressed formats, {@code rowPitch} is the number of bytes between texels with the same x coordinate in adjacent rows (y coordinates differ by one). {@code arrayPitch} is the number of bytes between texels with the same x and y coordinate in adjacent array layers of the image (array layer values differ by one). {@code depthPitch} is the number of bytes between texels with the same x and y coordinate in adjacent slices of a 3D image (z coordinates differ by one). Expressed as an addressing formula, the starting byte of a texel in the image subresource has address: -
                                        // (x,y,z,layer) are in texel coordinates
                                        -address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*elementSize + offset
                                        +
                                        +￿// (x,y,z,layer) are in texel coordinates
                                        +￿address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*elementSize + offset
                                        For compressed formats, the {@code rowPitch} is the number of bytes between compressed texel blocks in adjacent rows. {@code arrayPitch} is the number of bytes between compressed texel blocks in adjacent array layers. {@code depthPitch} is the number of bytes between compressed texel blocks in adjacent slices of a 3D image. -
                                        // (x,y,z,layer) are in compressed texel block coordinates
                                        -address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*compressedTexelBlockByteSize + offset;
                                        +
                                        +￿// (x,y,z,layer) are in compressed texel block coordinates
                                        +￿address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*compressedTexelBlockByteSize + offset;
                                        {@code arrayPitch} is undefined for images that were not created as arrays. {@code depthPitch} is defined only for 3D images. @@ -2063,7 +2082,8 @@ val VkComponentMapping = struct(VULKAN_PACKAGE, "VkComponentMapping") {
                                        Description
                                        Each of {@code r}, {@code g}, {@code b}, and {@code a} is one of the values: -
                                        typedef enum VkComponentSwizzle {
                                        +        
                                        +￿typedef enum VkComponentSwizzle {
                                         ￿    VK_COMPONENT_SWIZZLE_IDENTITY = 0,
                                         ￿    VK_COMPONENT_SWIZZLE_ZERO = 1,
                                         ￿    VK_COMPONENT_SWIZZLE_ONE = 2,
                                        @@ -2071,7 +2091,7 @@ val VkComponentMapping = struct(VULKAN_PACKAGE, "VkComponentMapping") {
                                         ￿    VK_COMPONENT_SWIZZLE_G = 4,
                                         ￿    VK_COMPONENT_SWIZZLE_B = 5,
                                         ￿    VK_COMPONENT_SWIZZLE_A = 6,
                                        -} VkComponentSwizzle;
                                        +￿} VkComponentSwizzle;
                                        • #COMPONENT_SWIZZLE_IDENTITY: the component is set to the identity swizzle.
                                        • @@ -2126,12 +2146,13 @@ val VkImageSubresourceRange = struct(VULKAN_PACKAGE, "VkImageSubresourceRange") {@code aspectMask} is a bitmask indicating the format being used. Bits which may be set include: -
                                          typedef enum VkImageAspectFlagBits {
                                          +        
                                          +￿typedef enum VkImageAspectFlagBits {
                                           ￿    VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
                                           ￿    VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
                                           ￿    VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
                                           ￿    VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
                                          -} VkImageAspectFlagBits;
                                          +￿} VkImageAspectFlagBits;
                                          The mask must be only #IMAGE_ASPECT_COLOR_BIT, #IMAGE_ASPECT_DEPTH_BIT or #IMAGE_ASPECT_STENCIL_BIT if {@code format} is a color, depth-only or stencil-only format, respectively. If using a depth/stencil format with both depth and stencil components, {@code aspectMask} must include at least one of #IMAGE_ASPECT_DEPTH_BIT and #IMAGE_ASPECT_STENCIL_BIT, and can include both. @@ -2261,7 +2282,7 @@ val VkShaderModuleCreateInfo = struct(VULKAN_PACKAGE, "VkShaderModuleCreateInfo"
                                        • {@code sType} must be #STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
                                        • {@code pNext} must be {@code NULL}
                                        • {@code flags} must be 0
                                        • -
                                        • {@code pCode} must be a pointer to an array of
                                          codeSize / 4
                                          {@code uint32_t} values
                                        • +
                                        • {@code pCode} must be a pointer to an array of
                                           ￿codeSize / 4
                                          {@code uint32_t} values
                                        See Also
                                        @@ -2401,7 +2422,8 @@ val VkPipelineShaderStageCreateInfo = struct(VULKAN_PACKAGE, "VkPipelineShaderSt nullable..const..opaque_p.member("pNext", "{@code NULL} or a pointer to an extension-specific structure.") VkPipelineShaderStageCreateFlags.member("flags", "reserved for future use.") VkShaderStageFlagBits.member("stage", """names a single pipeline stage. Bits which can be set include: -
                                        typedef enum VkShaderStageFlagBits {
                                        +
                                        +￿typedef enum VkShaderStageFlagBits {
                                         ￿    VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
                                         ￿    VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
                                         ￿    VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
                                        @@ -2410,7 +2432,7 @@ val VkPipelineShaderStageCreateInfo = struct(VULKAN_PACKAGE, "VkPipelineShaderSt
                                         ￿    VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
                                         ￿    VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
                                         ￿    VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
                                        -} VkShaderStageFlagBits;
                                        """) +￿} VkShaderStageFlagBits;
                                        """) VkShaderModule.member("module", "a {@code VkShaderModule} object that contains the shader for this stage.") const..charUTF8_p.member("pName", "a pointer to a null-terminated UTF-8 string specifying the entry point name of the shader for this stage.") nullable..const..VkSpecializationInfo.p.member("pSpecializationInfo", "a pointer to ##VkSpecializationInfo, as described in Specialization Constants, and can be {@code NULL}.") @@ -2439,10 +2461,11 @@ val VkVertexInputBindingDescription = struct(VULKAN_PACKAGE, "VkVertexInputBindi uint32_t.member("binding", "the binding number that this structure describes.") uint32_t.member("stride", "the distance in bytes between two consecutive elements within the buffer.") VkVertexInputRate.member("inputRate", """specifies whether vertex attribute addressing is a function of the vertex index or of the instance index. Possible values include: -
                                        typedef enum VkVertexInputRate {
                                        +
                                        +￿typedef enum VkVertexInputRate {
                                         ￿    VK_VERTEX_INPUT_RATE_VERTEX = 0,
                                         ￿    VK_VERTEX_INPUT_RATE_INSTANCE = 1,
                                        -} VkVertexInputRate;
                                        +￿} VkVertexInputRate;
                                        • #VERTEX_INPUT_RATE_VERTEX indicates that vertex attribute addressing is a function of the vertex index.
                                        • @@ -2581,7 +2604,8 @@ val VkViewport = struct(VULKAN_PACKAGE, "VkViewport") { Structure specifying a viewport.
                                          Description
                                          - The framebuffer depth coordinate zf may be represented using either a fixed-point or floating-point representation. However, a floating-point representation must be used if the depth/stencil attachment has a floating-point depth component. If an m-bit fixed-point representation is used, we assume that it represents each value
                                          k / (2m - 1)
                                          , where k {elem} { 0, 1, ..., 2m-1 }, as k (e.g. 1.0 is represented in binary as a string of all ones). + The framebuffer depth coordinate zf may be represented using either a fixed-point or floating-point representation. However, a floating-point representation must be used if the depth/stencil attachment has a floating-point depth component. If an m-bit fixed-point representation is used, we assume that it represents each value
                                          +￿k / (2m - 1)
                                          , where k {elem} { 0, 1, ..., 2m-1 }, as k (e.g. 1.0 is represented in binary as a string of all ones). The viewport parameters shown in the above equations are found from these values as @@ -2756,7 +2780,7 @@ val VkPipelineMultisampleStateCreateInfo = struct(VULKAN_PACKAGE, "VkPipelineMul
                                        • {@code pNext} must be {@code NULL}
                                        • {@code flags} must be 0
                                        • {@code rasterizationSamples} must be a valid {@code VkSampleCountFlagBits} value
                                        • -
                                        • If {@code pSampleMask} is not {@code NULL}, {@code pSampleMask} must be a pointer to an array of
                                          ceil(rasterizationSamples / 32)
                                          {@code VkSampleMask} values
                                        • +
                                        • If {@code pSampleMask} is not {@code NULL}, {@code pSampleMask} must be a pointer to an array of
                                           ￿ceil(rasterizationSamples / 32)
                                          {@code VkSampleMask} values
                                        See Also
                                        @@ -2950,13 +2974,14 @@ val VkGraphicsPipelineCreateInfo = struct(VULKAN_PACKAGE, "VkGraphicsPipelineCre Bits which can be set in {@code flags} are: -
                                        typedef enum VkPipelineCreateFlagBits {
                                        +        
                                        +￿typedef enum VkPipelineCreateFlagBits {
                                         ￿    VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
                                         ￿    VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
                                         ￿    VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
                                         ￿    VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX = 0x00000008,
                                         ￿    VK_PIPELINE_CREATE_DISPATCH_BASE_KHX = 0x00000010,
                                        -} VkPipelineCreateFlagBits;
                                        +￿} VkPipelineCreateFlagBits;
                                        • #PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT specifies that the created pipeline will not be optimized. Using this flag may reduce the time taken to create the pipeline.
                                        • @@ -3191,13 +3216,14 @@ val VkSamplerCreateInfo = struct(VULKAN_PACKAGE, "VkSamplerCreateInfo") { {@code addressModeU}, {@code addressModeV}, and {@code addressModeW} must each have one of the following values: -
                                          typedef enum VkSamplerAddressMode {
                                          +        
                                          +￿typedef enum VkSamplerAddressMode {
                                           ￿    VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
                                           ￿    VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
                                           ￿    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
                                           ￿    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
                                           ￿    VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
                                          -} VkSamplerAddressMode;
                                          +￿} VkSamplerAddressMode;
                                          These values control the behavior of sampling with coordinates outside the range [0,1] for the respective u, v, or w coordinate as defined in the Wrapping Operation section. @@ -3251,17 +3277,19 @@ val VkSamplerCreateInfo = struct(VULKAN_PACKAGE, "VkSamplerCreateInfo") { nullable..const..opaque_p.member("pNext", "{@code NULL} or a pointer to an extension-specific structure.") VkSamplerCreateFlags.member("flags", "reserved for future use.") VkFilter.member("magFilter", """the magnification filter to apply to lookups, and is of type: -
                                          typedef enum VkFilter {
                                          +
                                          +￿typedef enum VkFilter {
                                           ￿    VK_FILTER_NEAREST = 0,
                                           ￿    VK_FILTER_LINEAR = 1,
                                           ￿    VK_FILTER_CUBIC_IMG = 1000015000,
                                          -} VkFilter;
                                          """) +￿} VkFilter;
                                          """) VkFilter.member("minFilter", "the minification filter to apply to lookups, and is of type {@code VkFilter}.") VkSamplerMipmapMode.member("mipmapMode", """the mipmap filter to apply to lookups as described in the Texel Filtering section, and is of type: -
                                          typedef enum VkSamplerMipmapMode {
                                          +
                                          +￿typedef enum VkSamplerMipmapMode {
                                           ￿    VK_SAMPLER_MIPMAP_MODE_NEAREST = 0,
                                           ￿    VK_SAMPLER_MIPMAP_MODE_LINEAR = 1,
                                          -} VkSamplerMipmapMode;
                                          """) +￿} VkSamplerMipmapMode;
                                          """) VkSamplerAddressMode.member("addressModeU", "the addressing mode for outside [0..1] range for U coordinate. See {@code VkSamplerAddressMode}.") VkSamplerAddressMode.member("addressModeV", "the addressing mode for outside [0..1] range for V coordinate. See {@code VkSamplerAddressMode}.") VkSamplerAddressMode.member("addressModeW", "the addressing mode for outside [0..1] range for W coordinate. See {@code VkSamplerAddressMode}.") @@ -3276,14 +3304,15 @@ val VkSamplerCreateInfo = struct(VULKAN_PACKAGE, "VkSamplerCreateInfo") { float.member("minLod", "{@code minLod} and {@code maxLod} are the values used to clamp the computed level-of-detail value, as described in the Level-of-Detail Operation section. {@code maxLod} must be greater than or equal to {@code minLod}.") float.member("maxLod", "see {@code minLod}") VkBorderColor.member("borderColor", """the predefined border color to use, as described in the Texel Replacement section, and is of type: -
                                          typedef enum VkBorderColor {
                                          +
                                          +￿typedef enum VkBorderColor {
                                           ￿    VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
                                           ￿    VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,
                                           ￿    VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,
                                           ￿    VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3,
                                           ￿    VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4,
                                           ￿    VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5,
                                          -} VkBorderColor;
                                          """) +￿} VkBorderColor;
                                          """) VkBool32.member("unnormalizedCoordinates", """controls whether to use unnormalized or normalized texel coordinates to address texels of the image. When set to #TRUE, the range of the image coordinates used to lookup the texel is in the range of zero to the image dimensions for x, y and z. When set to #FALSE the range of image coordinates is zero to one. When {@code unnormalizedCoordinates} is #TRUE, samplers have the following requirements:
                                          • {@code minFilter} and {@code magFilter} must be equal.
                                          • @@ -3369,9 +3398,10 @@ val VkDescriptorSetLayoutCreateInfo = struct(VULKAN_PACKAGE, "VkDescriptorSetLay VkStructureType.member("sType", "the type of this structure.") nullable..const..opaque_p.member("pNext", "{@code NULL} or a pointer to an extension-specific structure.") VkDescriptorSetLayoutCreateFlags.member("flags", """provides options for descriptor set layout creation, and is of type {@code VkDescriptorSetLayoutCreateFlags}. Bits which can be set include: -
                                            typedef enum VkDescriptorSetLayoutCreateFlagBits {
                                            +
                                            +￿typedef enum VkDescriptorSetLayoutCreateFlagBits {
                                             ￿    VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
                                            -} VkDescriptorSetLayoutCreateFlagBits;
                                            +￿} VkDescriptorSetLayoutCreateFlagBits;
                                            If {@code flags} contains #DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR, then descriptor sets must not be allocated using this layout, and descriptors are instead pushed via #CmdPushDescriptorSetKHR().""") AutoSize("pBindings", optional = true)..uint32_t.member("bindingCount", "the number of elements in {@code pBindings}.") @@ -3436,9 +3466,10 @@ val VkDescriptorPoolCreateInfo = struct(VULKAN_PACKAGE, "VkDescriptorPoolCreateI VkStructureType.member("sType", "the type of this structure.") nullable..const..opaque_p.member("pNext", "{@code NULL} or a pointer to an extension-specific structure.") VkDescriptorPoolCreateFlags.member("flags", """specifies certain supported operations on the pool. Bits which can be set include: -
                                            typedef enum VkDescriptorPoolCreateFlagBits {
                                            +
                                            +￿typedef enum VkDescriptorPoolCreateFlagBits {
                                             ￿    VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
                                            -} VkDescriptorPoolCreateFlagBits;
                                            +￿} VkDescriptorPoolCreateFlagBits;
                                            If {@code flags} includes #DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, then descriptor sets can return their individual allocations to the pool, i.e. all of #AllocateDescriptorSets(), #FreeDescriptorSets(), and #ResetDescriptorPool() are allowed. Otherwise, descriptor sets allocated from the pool must not be individually freed back to the pool, i.e. only #AllocateDescriptorSets() and #ResetDescriptorPool() are allowed.""") uint32_t.member("maxSets", "the maximum number of descriptor sets that can be allocated from the pool.") @@ -3735,17 +3766,19 @@ val VkAttachmentDescription = struct(VULKAN_PACKAGE, "VkAttachmentDescription") """ VkAttachmentDescriptionFlags.member("flags", """a bitmask describing additional properties of the attachment. Bits which can be set include: -
                                            typedef enum VkAttachmentDescriptionFlagBits {
                                            +
                                            +￿typedef enum VkAttachmentDescriptionFlagBits {
                                             ￿    VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,
                                            -} VkAttachmentDescriptionFlagBits;
                                            """) +￿} VkAttachmentDescriptionFlagBits;
                                            """) VkFormat.member("format", "a {@code VkFormat} value specifying the format of the image that will be used for the attachment.") VkSampleCountFlagBits.member("samples", "the number of samples of the image as defined in {@code VkSampleCountFlagBits}.") VkAttachmentLoadOp.member("loadOp", """specifies how the contents of color and depth components of the attachment are treated at the beginning of the subpass where it is first used: -
                                            typedef enum VkAttachmentLoadOp {
                                            +
                                            +￿typedef enum VkAttachmentLoadOp {
                                             ￿    VK_ATTACHMENT_LOAD_OP_LOAD = 0,
                                             ￿    VK_ATTACHMENT_LOAD_OP_CLEAR = 1,
                                             ￿    VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
                                            -} VkAttachmentLoadOp;
                                            +￿} VkAttachmentLoadOp;
                                            • #ATTACHMENT_LOAD_OP_LOAD means the previous contents of the image within the render area will be preserved. For attachments with a depth/stencil format, this uses the access type #ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT. For attachments with a color format, this uses the access type #ACCESS_COLOR_ATTACHMENT_READ_BIT.
                                            • @@ -3753,10 +3786,11 @@ val VkAttachmentDescription = struct(VULKAN_PACKAGE, "VkAttachmentDescription")
                                            • #ATTACHMENT_LOAD_OP_DONT_CARE means the previous contents within the area need not be preserved; the contents of the attachment will be undefined inside the render area. For attachments with a depth/stencil format, this uses the access type #ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT. For attachments with a color format, this uses the access type #ACCESS_COLOR_ATTACHMENT_WRITE_BIT.
                                            """) VkAttachmentStoreOp.member("storeOp", """specifies how the contents of color and depth components of the attachment are treated at the end of the subpass where it is last used: -
                                            typedef enum VkAttachmentStoreOp {
                                            +
                                            +￿typedef enum VkAttachmentStoreOp {
                                             ￿    VK_ATTACHMENT_STORE_OP_STORE = 0,
                                             ￿    VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,
                                            -} VkAttachmentStoreOp;
                                            +￿} VkAttachmentStoreOp;
                                            • #ATTACHMENT_STORE_OP_STORE means the contents generated during the render pass and within the render area are written to memory. For attachments with a depth/stencil format, this uses the access type #ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT. For attachments with a color format, this uses the access type #ACCESS_COLOR_ATTACHMENT_WRITE_BIT.
                                            • @@ -3840,10 +3874,11 @@ val VkSubpassDescription = struct(VULKAN_PACKAGE, "VkSubpassDescription") { """ VkSubpassDescriptionFlags.member("flags", """a bitmask indicating usage of the subpass. Bits which can be set include: -
                                              typedef enum VkSubpassDescriptionFlagBits {
                                              +
                                              +￿typedef enum VkSubpassDescriptionFlagBits {
                                               ￿    VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001,
                                               ￿    VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002,
                                              -} VkSubpassDescriptionFlagBits;
                                              +￿} VkSubpassDescriptionFlagBits;
                                              • #SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX indicates that shaders compiled for this subpass write the attributes for all views in a single invocation of each vertex processing stage. All pipelines compiled against a subpass that includes this bit must write per-view attributes to the *PerViewNV[] shader outputs, in addition to the non-per-view (e.g. {@code Position}) outputs.
                                              • @@ -3987,10 +4022,11 @@ val VkCommandPoolCreateInfo = struct(VULKAN_PACKAGE, "VkCommandPoolCreateInfo") VkStructureType.member("sType", "the type of this structure.") nullable..const..opaque_p.member("pNext", "{@code NULL} or a pointer to an extension-specific structure.") VkCommandPoolCreateFlags.member("flags", """a bitmask indicating usage behavior for the pool and command buffers allocated from it. Bits which can be set include: -
                                                typedef enum VkCommandPoolCreateFlagBits {
                                                +
                                                +￿typedef enum VkCommandPoolCreateFlagBits {
                                                 ￿    VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001,
                                                 ￿    VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,
                                                -} VkCommandPoolCreateFlagBits;
                                                +￿} VkCommandPoolCreateFlagBits;
                                                • #COMMAND_POOL_CREATE_TRANSIENT_BIT indicates that command buffers allocated from the pool will be short-lived, meaning that they will be reset or freed in a relatively short timeframe. This flag may be used by the implementation to control memory allocation behavior within the pool.
                                                • @@ -4025,10 +4061,11 @@ val VkCommandBufferAllocateInfo = struct(VULKAN_PACKAGE, "VkCommandBufferAllocat nullable..const..opaque_p.member("pNext", "{@code NULL} or a pointer to an extension-specific structure.") VkCommandPool.member("commandPool", "the command pool from which the command buffers are allocated.") VkCommandBufferLevel.member("level", """determines whether the command buffers are primary or secondary command buffers. Possible values include: -
                                                  typedef enum VkCommandBufferLevel {
                                                  +
                                                  +￿typedef enum VkCommandBufferLevel {
                                                   ￿    VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,
                                                   ￿    VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,
                                                  -} VkCommandBufferLevel;
                                                  """) +￿} VkCommandBufferLevel;
                                                  """) uint32_t.member("commandBufferCount", "the number of command buffers to allocate from the pool.") } @@ -4094,11 +4131,12 @@ val VkCommandBufferBeginInfo = struct(VULKAN_PACKAGE, "VkCommandBufferBeginInfo" VkStructureType.member("sType", "the type of this structure.") nullable..const..opaque_p.member("pNext", "{@code NULL} or a pointer to an extension-specific structure.") VkCommandBufferUsageFlags.member("flags", """a bitmask indicating usage behavior for the command buffer. Bits which can be set include: -
                                                  typedef enum VkCommandBufferUsageFlagBits {
                                                  +
                                                  +￿typedef enum VkCommandBufferUsageFlagBits {
                                                   ￿    VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
                                                   ￿    VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
                                                   ￿    VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
                                                  -} VkCommandBufferUsageFlagBits;
                                                  +￿} VkCommandBufferUsageFlagBits;
                                                  • #COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT indicates that each recording of the command buffer will only be submitted once, and the command buffer will be reset and recorded again between each submission.
                                                  • diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/AMD_draw_indirect_count.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/AMD_draw_indirect_count.kt index 57d5ad0b40..95654719c2 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/AMD_draw_indirect_count.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/AMD_draw_indirect_count.kt @@ -73,14 +73,15 @@ val AMD_draw_indirect_count = "AMDDrawIndirectCount".nativeClassVK("AMD_draw_ind
                                                    C Specification
                                                    To record a non-indexed draw call with a draw call count sourced from a buffer, call: -
                                                    void vkCmdDrawIndirectCountAMD(
                                                    +        
                                                    +￿void vkCmdDrawIndirectCountAMD(
                                                     ￿    VkCommandBuffer                             commandBuffer,
                                                     ￿    VkBuffer                                    buffer,
                                                     ￿    VkDeviceSize                                offset,
                                                     ￿    VkBuffer                                    countBuffer,
                                                     ￿    VkDeviceSize                                countBufferOffset,
                                                     ￿    uint32_t                                    maxDrawCount,
                                                    -￿    uint32_t                                    stride);
                                                    +￿ uint32_t stride);
                                                    Description
                                                    #CmdDrawIndirectCountAMD() behaves similar to #CmdDrawIndirect() except that the draw count is read by the device from a buffer during execution. The command will read an unsigned 32-bit integer from {@code countBuffer} located at {@code countBufferOffset} and use this as the draw count. @@ -154,14 +155,15 @@ val AMD_draw_indirect_count = "AMDDrawIndirectCount".nativeClassVK("AMD_draw_ind
                                                    C Specification
                                                    To record an indexed draw call with a draw call count sourced from a buffer, call: -
                                                    void vkCmdDrawIndexedIndirectCountAMD(
                                                    +        
                                                    +￿void vkCmdDrawIndexedIndirectCountAMD(
                                                     ￿    VkCommandBuffer                             commandBuffer,
                                                     ￿    VkBuffer                                    buffer,
                                                     ￿    VkDeviceSize                                offset,
                                                     ￿    VkBuffer                                    countBuffer,
                                                     ￿    VkDeviceSize                                countBufferOffset,
                                                     ￿    uint32_t                                    maxDrawCount,
                                                    -￿    uint32_t                                    stride);
                                                    +￿ uint32_t stride);
                                                    Description
                                                    #CmdDrawIndexedIndirectCountAMD() behaves similar to #CmdDrawIndirectCountAMD() except that the draw count is read by the device from a buffer during execution. The command will read an unsigned 32-bit integer from {@code countBuffer} located at {@code countBufferOffset} and use this as the draw count. diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_acquire_xlib_display.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_acquire_xlib_display.kt index 0bf6c3ad0f..d56421d967 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_acquire_xlib_display.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_acquire_xlib_display.kt @@ -78,10 +78,11 @@ val EXT_acquire_xlib_display = "EXTAcquireXlibDisplay".nativeClassVK("EXT_acquir
                                                    C Specification
                                                    To acquire permission to directly access a display in Vulkan from an X11 server, call: -
                                                    VkResult vkAcquireXlibDisplayEXT(
                                                    +        
                                                    +￿VkResult vkAcquireXlibDisplayEXT(
                                                     ￿    VkPhysicalDevice                            physicalDevice,
                                                     ￿    Display*                                    dpy,
                                                    -￿    VkDisplayKHR                                display);
                                                    +￿ VkDisplayKHR display);
                                                    Description
                                                    All permissions necessary to control the display are granted to the Vulkan instance associated with {@code physicalDevice} until the display is released or the X11 connection specified by {@code dpy} is terminated. Permission to access the display may be temporarily revoked during periods when the X11 server from which control was acquired itself looses access to {@code display}. During such periods, operations which require access to the display must fail with an approriate error code. If the X11 server associated with {@code dpy} does not own {@code display}, or if permission to access it has already been acquired by another entity, the call must return the error code VK_ERROR_INITIALIZATION_FAILED. @@ -119,11 +120,12 @@ val EXT_acquire_xlib_display = "EXTAcquireXlibDisplay".nativeClassVK("EXT_acquir
                                                    C Specification
                                                    When acquiring displays from an X11 server, an application may also wish to enumerate and identify them using a native handle rather than a {@code VkDisplayKHR} handle. To determine the {@code VkDisplayKHR} handle corresponding to an X11 RandR Output, call: -
                                                    VkResult vkGetRandROutputDisplayEXT(
                                                    +        
                                                    +￿VkResult vkGetRandROutputDisplayEXT(
                                                     ￿    VkPhysicalDevice                            physicalDevice,
                                                     ￿    Display*                                    dpy,
                                                     ￿    RROutput                                    rrOutput,
                                                    -￿    VkDisplayKHR*                               pDisplay);
                                                    +￿ VkDisplayKHR* pDisplay);
                                                    Description
                                                    If there is no VkDisplayKHR corresponding to {@code rrOutput} on {@code physicalDevice}, #NULL_HANDLE must be returned in {@code pDisplay}. diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_debug_marker.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_debug_marker.kt index d399bef6cf..e57b8bf892 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_debug_marker.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_debug_marker.kt @@ -18,7 +18,8 @@ val EXT_debug_marker = "EXTDebugMarker".nativeClassVK("EXT_debug_marker", type = Associate a name with an image, for easier debugging in external tools or with validation layers that can print a friendly name when referring to objects in error messages. -
                                                    ￿    extern VkDevice device;
                                                    +        
                                                    +￿    extern VkDevice device;
                                                     ￿    extern VkImage image;
                                                     ￿
                                                     ￿    // Must call extension functions through a function pointer:
                                                    @@ -38,13 +39,14 @@ val EXT_debug_marker = "EXTDebugMarker".nativeClassVK("EXT_debug_marker", type =
                                                     ￿
                                                     ￿    // A subsequent error might print:
                                                     ￿    //   Image 'Brick Diffuse Texture' (0xc0dec0dedeadbeef) is used in a
                                                    -￿    //   command buffer with no memory bound to it.
                                                    +￿ // command buffer with no memory bound to it.
                                                    Example 2 Annotating regions of a workload with naming information so that offline analysis tools can display a more usable visualisation of the commands submitted. -
                                                    ￿    extern VkDevice device;
                                                    +        
                                                    +￿    extern VkDevice device;
                                                     ￿    extern VkCommandBuffer commandBuffer;
                                                     ￿
                                                     ￿    // Must call extension functions through a function pointer:
                                                    @@ -100,7 +102,7 @@ val EXT_debug_marker = "EXTDebugMarker".nativeClassVK("EXT_debug_marker", type =
                                                     ￿        vkCmdDrawIndexed(commandBuffer, 500, 1, 2000, 0, 0);
                                                     ￿    }
                                                     ￿    // End the house annotation started above
                                                    -￿    pfnCmdDebugMarkerEndEXT(commandBuffer);
                                                    +￿ pfnCmdDebugMarkerEndEXT(commandBuffer);
                                                    Name String
                                                    @@ -170,9 +172,10 @@ val EXT_debug_marker = "EXTDebugMarker".nativeClassVK("EXT_debug_marker", type =
                                                    C Specification
                                                    In addition to setting a name for an object, debugging and validation layers may have uses for additional binary data on a per-object basis that has no other place in the Vulkan API. For example, a {@code VkShaderModule} could have additional debugging data attached to it to aid in offline shader tracing. To attach data to an object, call: -
                                                    VkResult vkDebugMarkerSetObjectTagEXT(
                                                    +        
                                                    +￿VkResult vkDebugMarkerSetObjectTagEXT(
                                                     ￿    VkDevice                                    device,
                                                    -￿    VkDebugMarkerObjectTagInfoEXT*              pTagInfo);
                                                    +￿ VkDebugMarkerObjectTagInfoEXT* pTagInfo);
                                                    Valid Usage
                                                      @@ -221,9 +224,10 @@ val EXT_debug_marker = "EXTDebugMarker".nativeClassVK("EXT_debug_marker", type =
                                                      C Specification
                                                      An object can be given a user-friendly name by calling: -
                                                      VkResult vkDebugMarkerSetObjectNameEXT(
                                                      +        
                                                      +￿VkResult vkDebugMarkerSetObjectNameEXT(
                                                       ￿    VkDevice                                    device,
                                                      -￿    VkDebugMarkerObjectNameInfoEXT*             pNameInfo);
                                                      +￿ VkDebugMarkerObjectNameInfoEXT* pNameInfo);
                                                      Valid Usage
                                                        @@ -271,9 +275,10 @@ val EXT_debug_marker = "EXTDebugMarker".nativeClassVK("EXT_debug_marker", type =
                                                        C Specification
                                                        A marker region can be opened by calling: -
                                                        void vkCmdDebugMarkerBeginEXT(
                                                        +        
                                                        +￿void vkCmdDebugMarkerBeginEXT(
                                                         ￿    VkCommandBuffer                             commandBuffer,
                                                        -￿    VkDebugMarkerMarkerInfoEXT*                 pMarkerInfo);
                                                        +￿ VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
                                                        Valid Usage (Implicit)
                                                          @@ -310,8 +315,9 @@ val EXT_debug_marker = "EXTDebugMarker".nativeClassVK("EXT_debug_marker", type =
                                                          C Specification
                                                          A marker region can be closed by calling: -
                                                          void vkCmdDebugMarkerEndEXT(
                                                          -￿    VkCommandBuffer                             commandBuffer);
                                                          +
                                                          +￿void vkCmdDebugMarkerEndEXT(
                                                          +￿    VkCommandBuffer                             commandBuffer);
                                                          Description
                                                          An application may open a marker region in one command buffer and close it in another, or otherwise split marker regions across multiple command buffers or multiple queue submissions. When viewed from the linear series of submissions to a single queue, the calls to #CmdDebugMarkerBeginEXT() and #CmdDebugMarkerEndEXT() must be matched and balanced. @@ -352,9 +358,10 @@ val EXT_debug_marker = "EXTDebugMarker".nativeClassVK("EXT_debug_marker", type =
                                                          C Specification
                                                          A single marker label can be inserted into a command buffer by calling: -
                                                          void vkCmdDebugMarkerInsertEXT(
                                                          +        
                                                          +￿void vkCmdDebugMarkerInsertEXT(
                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                          -￿    VkDebugMarkerMarkerInfoEXT*                 pMarkerInfo);
                                                          +￿ VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
                                                          Valid Usage (Implicit)
                                                            diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_debug_report.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_debug_report.kt index 52b112ced4..fdcd91cc50 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_debug_report.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_debug_report.kt @@ -20,7 +20,8 @@ val EXT_debug_report = "EXTDebugReport".nativeClassVK("EXT_debug_report", type = Example uses: Create three callback objects. One will log errors and warnings to the debug console using Windows {@code OutputDebugString}. The second will cause the debugger to break at that callback when an error happens and the third will log warnings to stdout. -
                                                            ￿    VkResult res;
                                                            +        
                                                            +￿    VkResult res;
                                                             ￿    VkDebugReportCallbackEXT cb1, cb2, cb3;
                                                             ￿
                                                             ￿    VkDebugReportCallbackCreateInfoEXT callback1 = {
                                                            @@ -58,7 +59,7 @@ val EXT_debug_report = "EXTDebugReport".nativeClassVK("EXT_debug_report", type =
                                                             ￿    // remove callbacks when cleaning up 
                                                             ￿    vkDestroyDebugReportCallbackEXT(instance, cb1);
                                                             ￿    vkDestroyDebugReportCallbackEXT(instance, cb2);
                                                            -￿    vkDestroyDebugReportCallbackEXT(instance, cb3);
                                                            +￿ vkDestroyDebugReportCallbackEXT(instance, cb3);
                                                            Note
                                                            In the initial release of the {@code VK_EXT_debug_report} extension, the token #STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT was used. Starting in version 2 of the extension branch, #STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT is used instead for consistency with Vulkan naming rules. The older enum is still available for backwards compatibility. @@ -239,11 +240,12 @@ val EXT_debug_report = "EXTDebugReport".nativeClassVK("EXT_debug_report", type = To register a debug report callback, an application uses #CreateDebugReportCallbackEXT(). -
                                                            VkResult vkCreateDebugReportCallbackEXT(
                                                            +        
                                                            +￿VkResult vkCreateDebugReportCallbackEXT(
                                                             ￿    VkInstance                                  instance,
                                                             ￿    const VkDebugReportCallbackCreateInfoEXT*   pCreateInfo,
                                                             ￿    const VkAllocationCallbacks*                pAllocator,
                                                            -￿    VkDebugReportCallbackEXT*                   pCallback);
                                                            +￿ VkDebugReportCallbackEXT* pCallback);
                                                            Valid Usage (Implicit)
                                                              @@ -284,10 +286,11 @@ val EXT_debug_report = "EXTDebugReport".nativeClassVK("EXT_debug_report", type =
                                                              C Specification
                                                              To destroy a {@code VkDebugReportCallbackEXT} object, call: -
                                                              void vkDestroyDebugReportCallbackEXT(
                                                              +        
                                                              +￿void vkDestroyDebugReportCallbackEXT(
                                                               ￿    VkInstance                                  instance,
                                                               ￿    VkDebugReportCallbackEXT                    callback,
                                                              -￿    const VkAllocationCallbacks*                pAllocator);
                                                              +￿ const VkAllocationCallbacks* pAllocator);
                                                              Valid Usage
                                                                @@ -325,7 +328,8 @@ val EXT_debug_report = "EXTDebugReport".nativeClassVK("EXT_debug_report", type =
                                                                C Specification
                                                                To inject its own messages into the debug stream, call: -
                                                                void vkDebugReportMessageEXT(
                                                                +        
                                                                +￿void vkDebugReportMessageEXT(
                                                                 ￿    VkInstance                                  instance,
                                                                 ￿    VkDebugReportFlagsEXT                       flags,
                                                                 ￿    VkDebugReportObjectTypeEXT                  objectType,
                                                                @@ -333,7 +337,7 @@ val EXT_debug_report = "EXTDebugReport".nativeClassVK("EXT_debug_report", type =
                                                                 ￿    size_t                                      location,
                                                                 ￿    int32_t                                     messageCode,
                                                                 ￿    const char*                                 pLayerPrefix,
                                                                -￿    const char*                                 pMessage);
                                                                +￿ const char* pMessage);
                                                                Description
                                                                The call will propagate through the layers and cause a callback to the application. The parameters are passed on to the callback in addition to the {@code pUserData} value that was defined at the time the callback was registered. diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_direct_mode_display.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_direct_mode_display.kt index ea98afcad1..fcdf2531a5 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_direct_mode_display.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_direct_mode_display.kt @@ -74,9 +74,10 @@ val EXT_direct_mode_display = "EXTDirectModeDisplay".nativeClassVK("EXT_direct_m
                                                                C Specification
                                                                To release a previously acquired display, call: -
                                                                VkResult vkReleaseDisplayEXT(
                                                                +        
                                                                +￿VkResult vkReleaseDisplayEXT(
                                                                 ￿    VkPhysicalDevice                            physicalDevice,
                                                                -￿    VkDisplayKHR                                display);
                                                                +￿ VkDisplayKHR display);
                                                                Valid Usage (Implicit)
                                                                  diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_discard_rectangles.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_discard_rectangles.kt index 7b0c26c325..7cabdf4579 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_discard_rectangles.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_discard_rectangles.kt @@ -109,11 +109,12 @@ val EXT_discard_rectangles = "EXTDiscardRectangles".nativeClassVK("EXT_discard_r
                                                                  C Specification
                                                                  If the bound pipeline state object was not created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled, discard rectangles are specified using the {@code pDiscardRectangles} member of ##VkPipelineDiscardRectangleStateCreateInfoEXT linked to the pipeline state object. If the pipeline state object was created with the #DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled, the discard rectangles are dynamically set and changed with the command: -
                                                                  void vkCmdSetDiscardRectangleEXT(
                                                                  +        
                                                                  +￿void vkCmdSetDiscardRectangleEXT(
                                                                   ￿    VkCommandBuffer                             commandBuffer,
                                                                   ￿    uint32_t                                    firstDiscardRectangle,
                                                                   ￿    uint32_t                                    discardRectangleCount,
                                                                  -￿    const VkRect2D*                             pDiscardRectangles);
                                                                  +￿ const VkRect2D* pDiscardRectangles);
                                                                  Description
                                                                  The discard rectangle taken from element i of {@code pDiscardRectangles} replace the current state for the discard rectangle index firstDiscardRectangle {plus} i, for i in [0, discardRectangleCount). diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_display_control.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_display_control.kt index a0d6469752..9a27772396 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_display_control.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_display_control.kt @@ -147,10 +147,11 @@ val EXT_display_control = "EXTDisplayControl".nativeClassVK("EXT_display_control
                                                                  C Specification
                                                                  To set the power state of a display, call: -
                                                                  VkResult vkDisplayPowerControlEXT(
                                                                  +        
                                                                  +￿VkResult vkDisplayPowerControlEXT(
                                                                   ￿    VkDevice                                    device,
                                                                   ￿    VkDisplayKHR                                display,
                                                                  -￿    const VkDisplayPowerInfoEXT*                pDisplayPowerInfo);
                                                                  +￿ const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
                                                                  Valid Usage (Implicit)
                                                                    @@ -184,11 +185,12 @@ val EXT_display_control = "EXTDisplayControl".nativeClassVK("EXT_display_control
                                                                    C Specification
                                                                    To create a fence that will be signaled when an event occurs on a device, call: -
                                                                    VkResult vkRegisterDeviceEventEXT(
                                                                    +        
                                                                    +￿VkResult vkRegisterDeviceEventEXT(
                                                                     ￿    VkDevice                                    device,
                                                                     ￿    const VkDeviceEventInfoEXT*                 pDeviceEventInfo,
                                                                     ￿    const VkAllocationCallbacks*                pAllocator,
                                                                    -￿    VkFence*                                    pFence);
                                                                    +￿ VkFence* pFence);
                                                                    Valid Usage (Implicit)
                                                                      @@ -224,12 +226,13 @@ val EXT_display_control = "EXTDisplayControl".nativeClassVK("EXT_display_control
                                                                      C Specification
                                                                      To create a fence that will be signaled when an event occurs on a VkDisplayKHR object, call: -
                                                                      VkResult vkRegisterDisplayEventEXT(
                                                                      +        
                                                                      +￿VkResult vkRegisterDisplayEventEXT(
                                                                       ￿    VkDevice                                    device,
                                                                       ￿    VkDisplayKHR                                display,
                                                                       ￿    const VkDisplayEventInfoEXT*                pDisplayEventInfo,
                                                                       ￿    const VkAllocationCallbacks*                pAllocator,
                                                                      -￿    VkFence*                                    pFence);
                                                                      +￿ VkFence* pFence);
                                                                      Valid Usage (Implicit)
                                                                        @@ -267,11 +270,12 @@ val EXT_display_control = "EXTDisplayControl".nativeClassVK("EXT_display_control
                                                                        C Specification
                                                                        The requested counters become active when the first presentation command for the associated swapchain is processed by the presentation engine. To query the value of an active counter, use: -
                                                                        VkResult vkGetSwapchainCounterEXT(
                                                                        +        
                                                                        +￿VkResult vkGetSwapchainCounterEXT(
                                                                         ￿    VkDevice                                    device,
                                                                         ￿    VkSwapchainKHR                              swapchain,
                                                                         ￿    VkSurfaceCounterFlagBitsEXT                 counter,
                                                                        -￿    uint64_t*                                   pCounterValue);
                                                                        +￿ uint64_t* pCounterValue);
                                                                        Description
                                                                        If a counter is not available because the swapchain is out of date, the implementation may return VK_ERROR_OUT_OF_DATE_KHR. diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_display_surface_counter.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_display_surface_counter.kt index 1e248a9443..6ca814e39b 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_display_surface_counter.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_display_surface_counter.kt @@ -96,10 +96,11 @@ val EXT_display_surface_counter = "EXTDisplaySurfaceCounter".nativeClassVK("EXT_
                                                                        C Specification
                                                                        To query the basic capabilities of a surface, needed in order to create a swapchain, call: -
                                                                        VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT(
                                                                        +        
                                                                        +￿VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT(
                                                                         ￿    VkPhysicalDevice                            physicalDevice,
                                                                         ￿    VkSurfaceKHR                                surface,
                                                                        -￿    VkSurfaceCapabilities2EXT*                  pSurfaceCapabilities);
                                                                        +￿ VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
                                                                        Description
                                                                        #GetPhysicalDeviceSurfaceCapabilities2EXT() behaves similarly to #GetPhysicalDeviceSurfaceCapabilitiesKHR(), with the ability to return extended information by adding extension structures to its {@code pNext} chain. diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_hdr_metadata.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_hdr_metadata.kt index 5a4dbd71a6..fbd227e70c 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_hdr_metadata.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_hdr_metadata.kt @@ -76,11 +76,12 @@ val EXT_hdr_metadata = "EXTHdrMetadata".nativeClassVK("EXT_hdr_metadata", type = function to set Hdr metadata.
                                                                        C Specification
                                                                        -
                                                                        void vkSetHdrMetadataEXT(
                                                                        +        
                                                                        +￿void vkSetHdrMetadataEXT(
                                                                         ￿    VkDevice                                    device,
                                                                         ￿    uint32_t                                    swapchainCount,
                                                                         ￿    const VkSwapchainKHR*                       pSwapchains,
                                                                        -￿    const VkHdrMetadataEXT*                     pMetadata);
                                                                        +￿ const VkHdrMetadataEXT* pMetadata);
                                                                        Valid Usage (Implicit)
                                                                          diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_shader_subgroup_vote.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_shader_subgroup_vote.kt index 3f6f1a9011..bb3b4f9f3d 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_shader_subgroup_vote.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/EXT_shader_subgroup_vote.kt @@ -39,21 +39,23 @@ val EXT_shader_subgroup_vote = "EXTShaderSubgroupVote".nativeClassVK("EXT_shader Compute shaders operate on an explicitly specified group of threads (a local workgroup), but many implementations will also group non-compute shader invocations and execute them concurrently. When executing code like -
                                                                          if (condition) {
                                                                          +        
                                                                          +￿if (condition) {
                                                                           ￿  result = do_fast_path();
                                                                          -} else {
                                                                          +￿} else {
                                                                           ￿  result = do_general_path();
                                                                          -}
                                                                          +￿}
                                                                          where {@code condition} diverges between invocations, an implementation might first execute {@code do_fast_path}() for the invocations where {@code condition} is true and leave the other invocations dormant. Once {@code do_fast_path}() returns, it might call {@code do_general_path}() for invocations where {@code condition} is false and leave the other invocations dormant. In this case, the shader executes both the fast and the general path and might be better off just using the general path for all invocations. This extension provides the ability to avoid divergent execution by evaluating a condition across an entire subgroup using code like: -
                                                                          if (allInvocationsARB(condition)) {
                                                                          +        
                                                                          +￿if (allInvocationsARB(condition)) {
                                                                           ￿  result = do_fast_path();
                                                                          -} else {
                                                                          +￿} else {
                                                                           ￿  result = do_general_path();
                                                                          -}
                                                                          +￿}
                                                                          The built-in function {@code allInvocationsARB}() will return the same value for all invocations in the group, so the group will either execute {@code do_fast_path}() or {@code do_general_path}(), but never both. For example, shader code might want to evaluate a complex function iteratively by starting with an approximation of the result and then refining the approximation. Some input values may require a small number of iterations to generate an accurate result ({@code do_fast_path}) while others require a larger number ({@code do_general_path}). In another example, shader code might want to evaluate a complex function ({@code do_general_path}) that can be greatly simplified when assuming a specific value for one of its inputs ({@code do_fast_path}). diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/GOOGLE_display_timing.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/GOOGLE_display_timing.kt index b5ad893866..3f0eff570b 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/GOOGLE_display_timing.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/GOOGLE_display_timing.kt @@ -86,10 +86,11 @@ val GOOGLE_display_timing = "GOOGLEDisplayTiming".nativeClassVK("GOOGLE_display_
                                                                          C Specification
                                                                          To query the duration of a refresh cycle (RC) for the presentation engine's display, call: -
                                                                          VkResult vkGetRefreshCycleDurationGOOGLE(
                                                                          +        
                                                                          +￿VkResult vkGetRefreshCycleDurationGOOGLE(
                                                                           ￿    VkDevice                                    device,
                                                                           ￿    VkSwapchainKHR                              swapchain,
                                                                          -￿    VkRefreshCycleDurationGOOGLE*               pDisplayTimingProperties);
                                                                          +￿ VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
                                                                          Valid Usage (Implicit)
                                                                            @@ -136,11 +137,12 @@ val GOOGLE_display_timing = "GOOGLEDisplayTiming".nativeClassVK("GOOGLE_display_ To asynchronously query the presentation engine, for newly-available timing information about one or more previous presents to a given swapchain, call: -
                                                                            VkResult vkGetPastPresentationTimingGOOGLE(
                                                                            +        
                                                                            +￿VkResult vkGetPastPresentationTimingGOOGLE(
                                                                             ￿    VkDevice                                    device,
                                                                             ￿    VkSwapchainKHR                              swapchain,
                                                                             ￿    uint32_t*                                   pPresentationTimingCount,
                                                                            -￿    VkPastPresentationTimingGOOGLE*             pPresentationTimings);
                                                                            +￿ VkPastPresentationTimingGOOGLE* pPresentationTimings);
                                                                            Description
                                                                            If {@code pPresentationTimings} is {@code NULL}, then the number of newly-available timing records for the given {@code swapchain} is returned in {@code pPresentationTimingCount}. Otherwise, {@code pPresentationTimingCount} must point to a variable set by the user to the number of elements in the {@code pPresentationTimings} array, and on return the variable is overwritten with the number of structures actually written to {@code pPresentationTimings}. If the value of {@code pPresentationTimingCount} is less than the number of newly-available timing records, at most {@code pPresentationTimingCount} structures will be written. If {@code pPresentationTimingCount} is smaller than the number of newly-available timing records for the given {@code swapchain}, #INCOMPLETE will be returned instead of #SUCCESS to indicate that not all the available values were returned. diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/IMG_filter_cubic.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/IMG_filter_cubic.kt index 2a766d2201..6f4af7a0c0 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/IMG_filter_cubic.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/IMG_filter_cubic.kt @@ -16,7 +16,8 @@ val IMG_filter_cubic = "IMGFilterCubic".nativeClassVK("IMG_filter_cubic", type =
                                                                            Example
                                                                            Creating a sampler with the new filter for both magnification and minification -
                                                                            ￿    VkSamplerCreateInfo createInfo =
                                                                            +        
                                                                            +￿    VkSamplerCreateInfo createInfo =
                                                                             ￿    {
                                                                             ￿        VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO // sType
                                                                             ￿        // Other members set to application-desired values
                                                                            @@ -29,7 +30,7 @@ val IMG_filter_cubic = "IMGFilterCubic".nativeClassVK("IMG_filter_cubic", type =
                                                                             ￿    VkResult result = vkCreateSampler(
                                                                             ￿        device,
                                                                             ￿        &createInfo,
                                                                            -￿        &sampler);
                                                                            +￿ &sampler);
                                                                            Name String
                                                                            diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_descriptor_update_template.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_descriptor_update_template.kt index 92bc972a2c..d4c4e0da62 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_descriptor_update_template.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_descriptor_update_template.kt @@ -14,7 +14,8 @@ val KHR_descriptor_update_template = "KHRDescriptorUpdateTemplate".nativeClassVK Applications may wish to update a fixed set of descriptors in a large number of descriptors sets very frequently, i.e. during initializaton phase or if it's required to rebuild descriptor sets for each frame. For those cases it's also not unlikely that all information required to update a single descriptor set is stored in a single struct. This extension provides a way to update a fixed set of descriptors in a single {@code VkDescriptorSet} with a pointer to a user defined data structure which describes the new descriptors.
                                                                            Examples
                                                                            -
                                                                            ￿    // TODO: Write some sample code here.
                                                                            +
                                                                            +￿    // TODO: Write some sample code here.
                                                                            Name String
                                                                            @@ -117,11 +118,12 @@ val KHR_descriptor_update_template = "KHRDescriptorUpdateTemplate".nativeClassVK To create a descriptor update template, call: -
                                                                            VkResult vkCreateDescriptorUpdateTemplateKHR(
                                                                            +        
                                                                            +￿VkResult vkCreateDescriptorUpdateTemplateKHR(
                                                                             ￿    VkDevice                                    device,
                                                                             ￿    const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo,
                                                                             ￿    const VkAllocationCallbacks*                pAllocator,
                                                                            -￿    VkDescriptorUpdateTemplateKHR*              pDescriptorUpdateTemplate);
                                                                            +￿ VkDescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate);
                                                                            Valid Usage (Implicit)
                                                                              @@ -163,10 +165,11 @@ val KHR_descriptor_update_template = "KHRDescriptorUpdateTemplate".nativeClassVK
                                                                              C Specification
                                                                              To destroy a descriptor update template, call: -
                                                                              void vkDestroyDescriptorUpdateTemplateKHR(
                                                                              +        
                                                                              +￿void vkDestroyDescriptorUpdateTemplateKHR(
                                                                               ￿    VkDevice                                    device,
                                                                               ￿    VkDescriptorUpdateTemplateKHR               descriptorUpdateTemplate,
                                                                              -￿    const VkAllocationCallbacks*                pAllocator);
                                                                              +￿ const VkAllocationCallbacks* pAllocator);
                                                                              Valid Usage
                                                                                @@ -204,11 +207,12 @@ val KHR_descriptor_update_template = "KHRDescriptorUpdateTemplate".nativeClassVK
                                                                                C Specification
                                                                                Once a {@code VkDescriptorUpdateTemplateKHR} has been created, descriptor sets can be updated by calling: -
                                                                                void vkUpdateDescriptorSetWithTemplateKHR(
                                                                                +        
                                                                                +￿void vkUpdateDescriptorSetWithTemplateKHR(
                                                                                 ￿    VkDevice                                    device,
                                                                                 ￿    VkDescriptorSet                             descriptorSet,
                                                                                 ￿    VkDescriptorUpdateTemplateKHR               descriptorUpdateTemplate,
                                                                                -￿    const void*                                 pData);
                                                                                +￿ const void* pData);
                                                                                Valid Usage (Implicit)
                                                                                  @@ -224,21 +228,22 @@ val KHR_descriptor_update_template = "KHRDescriptorUpdateTemplate".nativeClassVK
                                                                                • Host access to {@code descriptorSet} must be externally synchronized
                                                                                -
                                                                                struct AppBufferView {
                                                                                +        
                                                                                +￿struct AppBufferView {
                                                                                 ￿    VkBufferView bufferView;
                                                                                 ￿    uint32_t     applicationRelatedInformation;
                                                                                -};
                                                                                +￿};
                                                                                 ￿
                                                                                -struct AppDataStructure
                                                                                -{
                                                                                +￿struct AppDataStructure
                                                                                +￿{
                                                                                 ￿    VkDescriptorImageInfo  imageInfo;          // a single image info
                                                                                 ￿    VkDescriptorBufferInfo bufferInfoArray[3]; // 3 buffer infos in an array
                                                                                 ￿    AppBufferView          bufferView[2];      // An application defined structure containing a bufferView
                                                                                 ￿    // ... some more application related data
                                                                                -};
                                                                                +￿};
                                                                                 ￿
                                                                                -const VkDescriptorUpdateTemplateEntryKHR descriptorUpdateTemplateEntries[] =
                                                                                -{
                                                                                +￿const VkDescriptorUpdateTemplateEntryKHR descriptorUpdateTemplateEntries[] =
                                                                                +￿{
                                                                                 ￿    // binding to a single image descriptor
                                                                                 ￿    {
                                                                                 ￿        0,                                           // binding
                                                                                @@ -268,11 +273,11 @@ const VkDescriptorUpdateTemplateEntryKHR descriptorUpdateTemplateEntries[] =
                                                                                 ￿        offsetof(AppDataStructure, bufferView),      // offset
                                                                                 ￿        sizeof(AppBufferView)                        // stride, bufferViews do not have to be compact
                                                                                 ￿    },
                                                                                -};
                                                                                +￿};
                                                                                 ￿
                                                                                -// create an descriptor update template for descriptor set updates
                                                                                -const VkDescriptorUpdateTemplateCreateInfoKHR createInfo =
                                                                                -{
                                                                                +￿// create an descriptor update template for descriptor set updates
                                                                                +￿const VkDescriptorUpdateTemplateCreateInfoKHR createInfo =
                                                                                +￿{
                                                                                 ￿    VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR,  // sType
                                                                                 ￿    NULL,                                                          // pNext
                                                                                 ￿    0,                                                             // flags
                                                                                @@ -283,21 +288,21 @@ const VkDescriptorUpdateTemplateCreateInfoKHR createInfo =
                                                                                 ￿    0,                                                             // pipelineBindPoint, ignored by given templateType
                                                                                 ￿    0,                                                             // pipelineLayout, ignored by given templateType
                                                                                 ￿    0,                                                             // set, ignored by given templateType
                                                                                -};
                                                                                +￿};
                                                                                 ￿
                                                                                -VkDescriptorUpdateTemplateKHR myDescriptorUpdateTemplate;
                                                                                -myResult = vkCreatePipelineLayout(
                                                                                +￿VkDescriptorUpdateTemplateKHR myDescriptorUpdateTemplate;
                                                                                +￿myResult = vkCreatePipelineLayout(
                                                                                 ￿    myDevice,
                                                                                 ￿    &createInfo,
                                                                                 ￿    NULL,
                                                                                 ￿    &myDescriptorUpdateTemplate);
                                                                                -}
                                                                                +￿}
                                                                                 ￿
                                                                                 ￿
                                                                                -AppDataStructure appData;
                                                                                +￿AppDataStructure appData;
                                                                                 ￿
                                                                                -// fill appData here or cache it in your engine
                                                                                -vkUpdateDescriptorSetWithTemplateKHR(myDevice, myDescriptorSet, myDescriptorUpdateTemplate, &appData);
                                                                                +￿// fill appData here or cache it in your engine +￿vkUpdateDescriptorSetWithTemplateKHR(myDevice, myDescriptorSet, myDescriptorUpdateTemplate, &appData);
                                                                                """, VkDevice.IN("device", "the logical device that updates the descriptor sets."), @@ -314,12 +319,13 @@ vkUpdateDescriptorSetWithTemplateKHR(myDevice, myDescriptorSet, myDescriptorUpda
                                                                                C Specification
                                                                                It is also possible to use a descriptor update template to specify the push descriptors to update. To do so, call: -
                                                                                void vkCmdPushDescriptorSetWithTemplateKHR(
                                                                                +        
                                                                                +￿void vkCmdPushDescriptorSetWithTemplateKHR(
                                                                                 ￿    VkCommandBuffer                             commandBuffer,
                                                                                 ￿    VkDescriptorUpdateTemplateKHR               descriptorUpdateTemplate,
                                                                                 ￿    VkPipelineLayout                            layout,
                                                                                 ￿    uint32_t                                    set,
                                                                                -￿    const void*                                 pData);
                                                                                +￿ const void* pData);
                                                                                Valid Usage
                                                                                  @@ -349,19 +355,20 @@ vkUpdateDescriptorSetWithTemplateKHR(myDevice, myDescriptorSet, myDescriptorUpda Primary SecondaryBothGraphics compute -
                                                                                  struct AppBufferView {
                                                                                  +        
                                                                                  +￿struct AppBufferView {
                                                                                   ￿    VkBufferView bufferView;
                                                                                   ￿    uint32_t     applicationRelatedInformation;
                                                                                  -};
                                                                                  +￿};
                                                                                   ￿
                                                                                  -struct AppDataStructure
                                                                                  -{
                                                                                  +￿struct AppDataStructure
                                                                                  +￿{
                                                                                   ￿    VkDescriptorImageInfo  imageInfo;          // a single image info
                                                                                   ￿    // ... some more application related data
                                                                                  -};
                                                                                  +￿};
                                                                                   ￿
                                                                                  -const VkDescriptorUpdateTemplateEntryKHR descriptorUpdateTemplateEntries[] =
                                                                                  -{
                                                                                  +￿const VkDescriptorUpdateTemplateEntryKHR descriptorUpdateTemplateEntries[] =
                                                                                  +￿{
                                                                                   ￿    // binding to a single image descriptor
                                                                                   ￿    {
                                                                                   ￿        0,                                           // binding
                                                                                  @@ -372,11 +379,11 @@ const VkDescriptorUpdateTemplateEntryKHR descriptorUpdateTemplateEntries[] =
                                                                                   ￿        0                                            // stride is not required if descriptorCount is 1.
                                                                                   ￿    }
                                                                                   ￿
                                                                                  -};
                                                                                  +￿};
                                                                                   ￿
                                                                                  -// create an descriptor update template for descriptor set updates
                                                                                  -const VkDescriptorUpdateTemplateCreateInfoKHR createInfo =
                                                                                  -{
                                                                                  +￿// create an descriptor update template for descriptor set updates
                                                                                  +￿const VkDescriptorUpdateTemplateCreateInfoKHR createInfo =
                                                                                  +￿{
                                                                                   ￿    VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR,  // sType
                                                                                   ￿    NULL,                                                          // pNext
                                                                                   ￿    0,                                                             // flags
                                                                                  @@ -387,19 +394,19 @@ const VkDescriptorUpdateTemplateCreateInfoKHR createInfo =
                                                                                   ￿    VK_PIPELINE_BIND_POINT_GRAPHICS,                               // pipelineBindPoint
                                                                                   ￿    myPipelineLayout,                                              // pipelineLayout
                                                                                   ￿    0,                                                             // set
                                                                                  -};
                                                                                  +￿};
                                                                                   ￿
                                                                                  -VkDescriptorUpdateTemplateKHR myDescriptorUpdateTemplate;
                                                                                  -myResult = vkCreatePipelineLayout(
                                                                                  +￿VkDescriptorUpdateTemplateKHR myDescriptorUpdateTemplate;
                                                                                  +￿myResult = vkCreatePipelineLayout(
                                                                                   ￿    myDevice,
                                                                                   ￿    &createInfo,
                                                                                   ￿    NULL,
                                                                                   ￿    &myDescriptorUpdateTemplate);
                                                                                  -}
                                                                                  +￿}
                                                                                   ￿
                                                                                  -AppDataStructure appData;
                                                                                  -// fill appData here or cache it in your engine
                                                                                  -vkCmdPushDescriptorSetWithTemplateKHR(myCmdBuffer, myDescriptorUpdateTemplate, myPipelineLayout, 0,&appData);
                                                                                  +￿AppDataStructure appData; +￿// fill appData here or cache it in your engine +￿vkCmdPushDescriptorSetWithTemplateKHR(myCmdBuffer, myDescriptorUpdateTemplate, myPipelineLayout, 0,&appData);
                                                                                  """, VkCommandBuffer.IN("commandBuffer", "the command buffer that the descriptors will be recorded in."), diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_display.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_display.kt index c63bf72f78..fd2a52a0fe 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_display.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_display.kt @@ -120,10 +120,11 @@ val KHR_display = "KHRDisplay".nativeClassVK("KHR_display", type = "instance", p
                                                                                  C Specification
                                                                                  Various functions are provided for enumerating the available display devices present on a Vulkan physical device. To query information about the available displays, call: -
                                                                                  VkResult vkGetPhysicalDeviceDisplayPropertiesKHR(
                                                                                  +        
                                                                                  +￿VkResult vkGetPhysicalDeviceDisplayPropertiesKHR(
                                                                                   ￿    VkPhysicalDevice                            physicalDevice,
                                                                                   ￿    uint32_t*                                   pPropertyCount,
                                                                                  -￿    VkDisplayPropertiesKHR*                     pProperties);
                                                                                  +￿ VkDisplayPropertiesKHR* pProperties);
                                                                                  Description
                                                                                  If {@code pProperties} is {@code NULL}, then the number of display devices available for {@code physicalDevice} is returned in {@code pPropertyCount}. Otherwise, {@code pPropertyCount} must point to a variable set by the user to the number of elements in the {@code pProperties} array, and on return the variable is overwritten with the number of structures actually written to {@code pProperties}. If the value of {@code pPropertyCount} is less than the number of display devices for {@code physicalDevice}, at most {@code pPropertyCount} structures will be written. If {@code pPropertyCount} is smaller than the number of display devices available for {@code physicalDevice}, #INCOMPLETE will be returned instead of #SUCCESS to indicate that not all the available values were returned. @@ -167,10 +168,11 @@ val KHR_display = "KHRDisplay".nativeClassVK("KHR_display", type = "instance", p
                                                                                  C Specification
                                                                                  Images are presented to individual planes on a display. Devices must support at least one plane on each display. Planes can be stacked and blended to composite multiple images on one display. Devices may support only a fixed stacking order and fixed mapping between planes and displays, or they may allow arbitrary application specified stacking orders and mappings between planes and displays. To query the properties of device display planes, call: -
                                                                                  VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
                                                                                  +        
                                                                                  +￿VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
                                                                                   ￿    VkPhysicalDevice                            physicalDevice,
                                                                                   ￿    uint32_t*                                   pPropertyCount,
                                                                                  -￿    VkDisplayPlanePropertiesKHR*                pProperties);
                                                                                  +￿ VkDisplayPlanePropertiesKHR* pProperties);
                                                                                  Description
                                                                                  If {@code pProperties} is {@code NULL}, then the number of display planes available for {@code physicalDevice} is returned in {@code pPropertyCount}. Otherwise, {@code pPropertyCount} must point to a variable set by the user to the number of elements in the {@code pProperties} array, and on return the variable is overwritten with the number of structures actually written to {@code pProperties}. If the value of {@code pPropertyCount} is less than the number of display planes for {@code physicalDevice}, at most {@code pPropertyCount} structures will be written. @@ -214,11 +216,12 @@ val KHR_display = "KHRDisplay".nativeClassVK("KHR_display", type = "instance", p
                                                                                  C Specification
                                                                                  To determine which displays a plane is usable with, call -
                                                                                  VkResult vkGetDisplayPlaneSupportedDisplaysKHR(
                                                                                  +        
                                                                                  +￿VkResult vkGetDisplayPlaneSupportedDisplaysKHR(
                                                                                   ￿    VkPhysicalDevice                            physicalDevice,
                                                                                   ￿    uint32_t                                    planeIndex,
                                                                                   ￿    uint32_t*                                   pDisplayCount,
                                                                                  -￿    VkDisplayKHR*                               pDisplays);
                                                                                  +￿ VkDisplayKHR* pDisplays);
                                                                                  Description
                                                                                  If {@code pDisplays} is {@code NULL}, then the number of displays usable with the specified {@code planeIndex} for {@code physicalDevice} is returned in {@code pDisplayCount}. Otherwise, {@code pDisplayCount} must point to a variable set by the user to the number of elements in the {@code pDisplays} array, and on return the variable is overwritten with the number of handles actually written to {@code pDisplays}. If the value of {@code pDisplayCount} is less than the number of display planes for {@code physicalDevice}, at most {@code pDisplayCount} handles will be written. If {@code pDisplayCount} is smaller than the number of displays usable with the specified {@code planeIndex} for {@code physicalDevice}, #INCOMPLETE will be returned instead of #SUCCESS to indicate that not all the available values were returned. @@ -265,11 +268,12 @@ val KHR_display = "KHRDisplay".nativeClassVK("KHR_display", type = "instance", p
                                                                                  C Specification
                                                                                  Each display has one or more supported modes associated with it by default. These built-in modes are queried by calling: -
                                                                                  VkResult vkGetDisplayModePropertiesKHR(
                                                                                  +        
                                                                                  +￿VkResult vkGetDisplayModePropertiesKHR(
                                                                                   ￿    VkPhysicalDevice                            physicalDevice,
                                                                                   ￿    VkDisplayKHR                                display,
                                                                                   ￿    uint32_t*                                   pPropertyCount,
                                                                                  -￿    VkDisplayModePropertiesKHR*                 pProperties);
                                                                                  +￿ VkDisplayModePropertiesKHR* pProperties);
                                                                                  Description
                                                                                  If {@code pProperties} is {@code NULL}, then the number of display modes available on the specified {@code display} for {@code physicalDevice} is returned in {@code pPropertyCount}. Otherwise, {@code pPropertyCount} must point to a variable set by the user to the number of elements in the {@code pProperties} array, and on return the variable is overwritten with the number of structures actually written to {@code pProperties}. If the value of {@code pPropertyCount} is less than the number of display modes for {@code physicalDevice}, at most {@code pPropertyCount} structures will be written. If {@code pPropertyCount} is smaller than the number of display modes available on the specified {@code display} for {@code physicalDevice}, #INCOMPLETE will be returned instead of #SUCCESS to indicate that not all the available values were returned. @@ -315,12 +319,13 @@ val KHR_display = "KHRDisplay".nativeClassVK("KHR_display", type = "instance", p
                                                                                  C Specification
                                                                                  Additional modes may also be created by calling: -
                                                                                  VkResult vkCreateDisplayModeKHR(
                                                                                  +        
                                                                                  +￿VkResult vkCreateDisplayModeKHR(
                                                                                   ￿    VkPhysicalDevice                            physicalDevice,
                                                                                   ￿    VkDisplayKHR                                display,
                                                                                   ￿    const VkDisplayModeCreateInfoKHR*           pCreateInfo,
                                                                                   ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                  -￿    VkDisplayModeKHR*                           pMode);
                                                                                  +￿ VkDisplayModeKHR* pMode);
                                                                                  Valid Usage (Implicit)
                                                                                    @@ -370,11 +375,12 @@ val KHR_display = "KHRDisplay".nativeClassVK("KHR_display", type = "instance", p
                                                                                    C Specification
                                                                                    Applications that wish to present directly to a display must select which layer, or "plane" of the display they wish to target, and a mode to use with the display. Each display supports at least one plane. The capabilities of a given mode and plane combination are determined by calling: -
                                                                                    VkResult vkGetDisplayPlaneCapabilitiesKHR(
                                                                                    +        
                                                                                    +￿VkResult vkGetDisplayPlaneCapabilitiesKHR(
                                                                                     ￿    VkPhysicalDevice                            physicalDevice,
                                                                                     ￿    VkDisplayModeKHR                            mode,
                                                                                     ￿    uint32_t                                    planeIndex,
                                                                                    -￿    VkDisplayPlaneCapabilitiesKHR*              pCapabilities);
                                                                                    +￿ VkDisplayPlaneCapabilitiesKHR* pCapabilities);
                                                                                    Valid Usage (Implicit)
                                                                                      @@ -420,11 +426,12 @@ val KHR_display = "KHRDisplay".nativeClassVK("KHR_display", type = "instance", p
                                                                                      C Specification
                                                                                      A complete display configuration includes a mode, one or more display planes and any parameters describing their behavior, and parameters describing some aspects of the images associated with those planes. Display surfaces describe the configuration of a single plane within a complete display configuration. To create a {@code VkSurfaceKHR} structure for a display surface, call: -
                                                                                      VkResult vkCreateDisplayPlaneSurfaceKHR(
                                                                                      +        
                                                                                      +￿VkResult vkCreateDisplayPlaneSurfaceKHR(
                                                                                       ￿    VkInstance                                  instance,
                                                                                       ￿    const VkDisplaySurfaceCreateInfoKHR*        pCreateInfo,
                                                                                       ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                      -￿    VkSurfaceKHR*                               pSurface);
                                                                                      +￿ VkSurfaceKHR* pSurface);
                                                                                      Valid Usage (Implicit)
                                                                                        diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_display_swapchain.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_display_swapchain.kt index 033d855a58..92e9ff219d 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_display_swapchain.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_display_swapchain.kt @@ -93,12 +93,13 @@ val KHR_display_swapchain = "KHRDisplaySwapchain".nativeClassVK("KHR_display_swa
                                                                                        C Specification
                                                                                        When the {@code VK_KHR_display_swapchain} extension is enabled, multiple swapchains that share presentable images are created by calling: -
                                                                                        VkResult vkCreateSharedSwapchainsKHR(
                                                                                        +        
                                                                                        +￿VkResult vkCreateSharedSwapchainsKHR(
                                                                                         ￿    VkDevice                                    device,
                                                                                         ￿    uint32_t                                    swapchainCount,
                                                                                         ￿    const VkSwapchainCreateInfoKHR*             pCreateInfos,
                                                                                         ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                        -￿    VkSwapchainKHR*                             pSwapchains);
                                                                                        +￿ VkSwapchainKHR* pSwapchains);
                                                                                        Description
                                                                                        #CreateSharedSwapchainsKHR() is similar to #CreateSwapchainKHR(), except that it takes an array of ##VkSwapchainCreateInfoKHR structures, and returns an array of swapchain objects. diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_get_physical_device_properties2.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_get_physical_device_properties2.kt index ee8a4cf40d..bc489ea081 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_get_physical_device_properties2.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_get_physical_device_properties2.kt @@ -16,7 +16,8 @@ val KHR_get_physical_device_properties2 = "KHRGetPhysicalDeviceProperties2".nati This extension also allows applications to use the physical-device components of device extensions before #CreateDevice() is called.
                                                                                        Examples
                                                                                        -
                                                                                        ￿    // Get features with a hypothetical future extension.
                                                                                        +        
                                                                                        +￿    // Get features with a hypothetical future extension.
                                                                                         ￿    VkHypotheticalExtensionFeaturesKHR hypotheticalFeatures =
                                                                                         ￿    {
                                                                                         ￿        VK_STRUCTURE_TYPE_HYPOTHETICAL_FEATURES_KHR,                            // sType
                                                                                        @@ -59,7 +60,7 @@ val KHR_get_physical_device_properties2 = "KHRGetPhysicalDeviceProperties2".nati
                                                                                         ￿    }
                                                                                         ￿
                                                                                         ￿    VkDevice device;
                                                                                        -￿    vkCreateDevice(physicalDevice, &deviceCreateInfo, NULL, &device);
                                                                                        +￿ vkCreateDevice(physicalDevice, &deviceCreateInfo, NULL, &device);
                                                                                        Name String
                                                                                        @@ -135,9 +136,10 @@ val KHR_get_physical_device_properties2 = "KHRGetPhysicalDeviceProperties2".nati
                                                                                        C Specification
                                                                                        To query supported features defined by the core or extensions, call: -
                                                                                        void vkGetPhysicalDeviceFeatures2KHR(
                                                                                        +        
                                                                                        +￿void vkGetPhysicalDeviceFeatures2KHR(
                                                                                         ￿    VkPhysicalDevice                            physicalDevice,
                                                                                        -￿    VkPhysicalDeviceFeatures2KHR*               pFeatures);
                                                                                        +￿ VkPhysicalDeviceFeatures2KHR* pFeatures);
                                                                                        Description
                                                                                        Each structure in {@code pFeatures} and its {@code pNext} chain contain members corresponding to fine-grained features. #GetPhysicalDeviceFeatures2KHR() writes each member to a boolean value indicating whether that feature is supported. @@ -164,9 +166,10 @@ val KHR_get_physical_device_properties2 = "KHRGetPhysicalDeviceProperties2".nati
                                                                                        C Specification
                                                                                        To query general properties of physical devices once enumerated, call: -
                                                                                        void vkGetPhysicalDeviceProperties2KHR(
                                                                                        +        
                                                                                        +￿void vkGetPhysicalDeviceProperties2KHR(
                                                                                         ￿    VkPhysicalDevice                            physicalDevice,
                                                                                        -￿    VkPhysicalDeviceProperties2KHR*             pProperties);
                                                                                        +￿ VkPhysicalDeviceProperties2KHR* pProperties);
                                                                                        Description
                                                                                        Each structure in {@code pProperties} and its {@code pNext} chain contain members corresponding to properties or implementation-dependent limits. #GetPhysicalDeviceProperties2KHR() writes each member to a value indicating the value of that property or limit. @@ -193,10 +196,11 @@ val KHR_get_physical_device_properties2 = "KHRGetPhysicalDeviceProperties2".nati
                                                                                        C Specification
                                                                                        To query supported format features which are properties of the physical device, call: -
                                                                                        void vkGetPhysicalDeviceFormatProperties2KHR(
                                                                                        +        
                                                                                        +￿void vkGetPhysicalDeviceFormatProperties2KHR(
                                                                                         ￿    VkPhysicalDevice                            physicalDevice,
                                                                                         ￿    VkFormat                                    format,
                                                                                        -￿    VkFormatProperties2KHR*                     pFormatProperties);
                                                                                        +￿ VkFormatProperties2KHR* pFormatProperties);
                                                                                        Description
                                                                                        #GetPhysicalDeviceFormatProperties2KHR() behaves similarly to #GetPhysicalDeviceFormatProperties(), with the ability to return extended information in a {@code pNext} chain of output structures. @@ -225,10 +229,11 @@ val KHR_get_physical_device_properties2 = "KHRGetPhysicalDeviceProperties2".nati
                                                                                        C Specification
                                                                                        To query additional capabilities specific to image types, call: -
                                                                                        VkResult vkGetPhysicalDeviceImageFormatProperties2KHR(
                                                                                        +        
                                                                                        +￿VkResult vkGetPhysicalDeviceImageFormatProperties2KHR(
                                                                                         ￿    VkPhysicalDevice                            physicalDevice,
                                                                                         ￿    const VkPhysicalDeviceImageFormatInfo2KHR*  pImageFormatInfo,
                                                                                        -￿    VkImageFormatProperties2KHR*                pImageFormatProperties);
                                                                                        +￿ VkImageFormatProperties2KHR* pImageFormatProperties);
                                                                                        Description
                                                                                        #GetPhysicalDeviceImageFormatProperties2KHR() behaves similarly to #GetPhysicalDeviceImageFormatProperties(), with the ability to return extended information in a {@code pNext} chain of output structures. @@ -274,10 +279,11 @@ val KHR_get_physical_device_properties2 = "KHRGetPhysicalDeviceProperties2".nati
                                                                                        C Specification
                                                                                        To query properties of queues available on a physical device, call: -
                                                                                        void vkGetPhysicalDeviceQueueFamilyProperties2KHR(
                                                                                        +        
                                                                                        +￿void vkGetPhysicalDeviceQueueFamilyProperties2KHR(
                                                                                         ￿    VkPhysicalDevice                            physicalDevice,
                                                                                         ￿    uint32_t*                                   pQueueFamilyPropertyCount,
                                                                                        -￿    VkQueueFamilyProperties2KHR*                pQueueFamilyProperties);
                                                                                        +￿ VkQueueFamilyProperties2KHR* pQueueFamilyProperties);
                                                                                        Description
                                                                                        #GetPhysicalDeviceQueueFamilyProperties2KHR() behaves similarly to #GetPhysicalDeviceQueueFamilyProperties(), with the ability to return extended information in a {@code pNext} chain of output structures. @@ -306,9 +312,10 @@ val KHR_get_physical_device_properties2 = "KHRGetPhysicalDeviceProperties2".nati
                                                                                        C Specification
                                                                                        To query memory properties, call: -
                                                                                        void vkGetPhysicalDeviceMemoryProperties2KHR(
                                                                                        +        
                                                                                        +￿void vkGetPhysicalDeviceMemoryProperties2KHR(
                                                                                         ￿    VkPhysicalDevice                            physicalDevice,
                                                                                        -￿    VkPhysicalDeviceMemoryProperties2KHR*       pMemoryProperties);
                                                                                        +￿ VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties);
                                                                                        Description
                                                                                        #GetPhysicalDeviceMemoryProperties2KHR() behaves similarly to #GetPhysicalDeviceMemoryProperties(), with the ability to return extended information in a {@code pNext} chain of output structures. @@ -335,11 +342,12 @@ val KHR_get_physical_device_properties2 = "KHRGetPhysicalDeviceProperties2".nati
                                                                                        C Specification
                                                                                        #GetPhysicalDeviceSparseImageFormatProperties2KHR() returns an array of ##VkSparseImageFormatProperties2KHR. Each element will describe properties for one set of image aspects that are bound simultaneously in the image. This is usually one element for each aspect in the image, but for interleaved depth/stencil images there is only one element describing the combined aspects. -
                                                                                        void vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
                                                                                        +        
                                                                                        +￿void vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
                                                                                         ￿    VkPhysicalDevice                            physicalDevice,
                                                                                         ￿    const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo,
                                                                                         ￿    uint32_t*                                   pPropertyCount,
                                                                                        -￿    VkSparseImageFormatProperties2KHR*          pProperties);
                                                                                        +￿ VkSparseImageFormatProperties2KHR* pProperties);
                                                                                        Description
                                                                                        #GetPhysicalDeviceSparseImageFormatProperties2KHR() behaves identically to #GetPhysicalDeviceSparseImageFormatProperties(), with the ability to return extended information by adding extension structures to its {@code pNext} chain. diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_get_surface_capabilities2.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_get_surface_capabilities2.kt index 5f4a8b7756..3f4bc78fda 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_get_surface_capabilities2.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_get_surface_capabilities2.kt @@ -80,10 +80,11 @@ val KHR_get_surface_capabilities2 = "KHRGetSurfaceCapabilities2".nativeClassVK("
                                                                                        C Specification
                                                                                        To query the basic capabilities of a surface defined by the core or extensions, call: -
                                                                                        VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR(
                                                                                        +        
                                                                                        +￿VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR(
                                                                                         ￿    VkPhysicalDevice                            physicalDevice,
                                                                                         ￿    const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
                                                                                        -￿    VkSurfaceCapabilities2KHR*                  pSurfaceCapabilities);
                                                                                        +￿ VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
                                                                                        Description
                                                                                        #GetPhysicalDeviceSurfaceCapabilities2KHR() behaves similarly to #GetPhysicalDeviceSurfaceCapabilitiesKHR(), with the ability to specify extended inputs via chained input structures, and to return extended information via chained output structures. @@ -122,11 +123,12 @@ val KHR_get_surface_capabilities2 = "KHRGetSurfaceCapabilities2".nativeClassVK("
                                                                                        C Specification
                                                                                        To query the supported swapchain format tuples for a surface, call: -
                                                                                        VkResult vkGetPhysicalDeviceSurfaceFormats2KHR(
                                                                                        +        
                                                                                        +￿VkResult vkGetPhysicalDeviceSurfaceFormats2KHR(
                                                                                         ￿    VkPhysicalDevice                            physicalDevice,
                                                                                         ￿    const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
                                                                                         ￿    uint32_t*                                   pSurfaceFormatCount,
                                                                                        -￿    VkSurfaceFormat2KHR*                        pSurfaceFormats);
                                                                                        +￿ VkSurfaceFormat2KHR* pSurfaceFormats);
                                                                                        Description
                                                                                        If {@code pSurfaceFormats} is {@code NULL}, then the number of format tuples supported for the given {@code surface} is returned in {@code pSurfaceFormatCount}. The number of format tuples supported will be greater than or equal to 1. Otherwise, {@code pSurfaceFormatCount} must point to a variable set by the user to the number of elements in the {@code pSurfaceFormats} array, and on return the variable is overwritten with the number of structures actually written to {@code pSurfaceFormats}. If the value of {@code pSurfaceFormatCount} is less than the number of format tuples supported, at most {@code pSurfaceFormatCount} structures will be written. If {@code pSurfaceFormatCount} is smaller than the number of format tuples supported for the surface parameters described in {@code pSurfaceInfo}, #INCOMPLETE will be returned instead of #SUCCESS to indicate that not all the available values were returned. diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_maintenance1.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_maintenance1.kt index 9c48f94999..0580ea9051 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_maintenance1.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_maintenance1.kt @@ -114,10 +114,11 @@ val KHR_maintenance1 = "KHRMaintenance1".nativeClassVK("KHR_maintenance1", type
                                                                                        C Specification
                                                                                        To trim a command pool, call: -
                                                                                        void vkTrimCommandPoolKHR(
                                                                                        +        
                                                                                        +￿void vkTrimCommandPoolKHR(
                                                                                         ￿    VkDevice                                    device,
                                                                                         ￿    VkCommandPool                               commandPool,
                                                                                        -￿    VkCommandPoolTrimFlagsKHR                   flags);
                                                                                        +￿ VkCommandPoolTrimFlagsKHR flags);
                                                                                        Description
                                                                                        Trimming a command pool recycles unused memory from the command pool back to the system. Command buffers allocated from the pool are not affected by the command. diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_push_descriptor.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_push_descriptor.kt index c9c91d400b..f34d19a099 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_push_descriptor.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_push_descriptor.kt @@ -91,13 +91,14 @@ val KHR_push_descriptor = "KHRPushDescriptor".nativeClassVK("KHR_push_descriptor To push descriptor updates into a command buffer, call: -
                                                                                        void vkCmdPushDescriptorSetKHR(
                                                                                        +        
                                                                                        +￿void vkCmdPushDescriptorSetKHR(
                                                                                         ￿    VkCommandBuffer                             commandBuffer,
                                                                                         ￿    VkPipelineBindPoint                         pipelineBindPoint,
                                                                                         ￿    VkPipelineLayout                            layout,
                                                                                         ￿    uint32_t                                    set,
                                                                                         ￿    uint32_t                                    descriptorWriteCount,
                                                                                        -￿    const VkWriteDescriptorSet*                 pDescriptorWrites);
                                                                                        +￿ const VkWriteDescriptorSet* pDescriptorWrites);
                                                                                        Description
                                                                                        Push descriptors are a small bank of descriptors whose storage is internally managed by the command buffer rather than being written into a descriptor set and later bound to a command buffer. Push descriptors allow for incremental updates of descriptors without managing the lifetime of descriptor sets. diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_sampler_mirror_clamp_to_edge.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_sampler_mirror_clamp_to_edge.kt index 8bc15e9987..c4e4ec0ef1 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_sampler_mirror_clamp_to_edge.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_sampler_mirror_clamp_to_edge.kt @@ -18,7 +18,8 @@ val KHR_sampler_mirror_clamp_to_edge = "KHRSamplerMirrorClampToEdge".nativeClass
                                                                                        Example
                                                                                        Creating a sampler with the new address mode in each dimension -
                                                                                        ￿    VkSamplerCreateInfo createInfo =
                                                                                        +        
                                                                                        +￿    VkSamplerCreateInfo createInfo =
                                                                                         ￿    {
                                                                                         ￿        VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO // sType
                                                                                         ￿        // Other members set to application-desired values
                                                                                        @@ -32,7 +33,7 @@ val KHR_sampler_mirror_clamp_to_edge = "KHRSamplerMirrorClampToEdge".nativeClass
                                                                                         ￿    VkResult result = vkCreateSampler(
                                                                                         ￿        device,
                                                                                         ￿        &createInfo,
                                                                                        -￿        &sampler);
                                                                                        +￿ &sampler);
                                                                                        Name String
                                                                                        diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_shared_presentable_image.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_shared_presentable_image.kt index b77c156c75..0156fe18c8 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_shared_presentable_image.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_shared_presentable_image.kt @@ -104,9 +104,10 @@ val KHR_shared_presentable_image = "KHRSharedPresentableImage".nativeClassVK("KH
                                                                                        C Specification
                                                                                        In order to query a swapchain's status when rendering to a shared presentable image, call: -
                                                                                        VkResult vkGetSwapchainStatusKHR(
                                                                                        +        
                                                                                        +￿VkResult vkGetSwapchainStatusKHR(
                                                                                         ￿    VkDevice                                    device,
                                                                                        -￿    VkSwapchainKHR                              swapchain);
                                                                                        +￿ VkSwapchainKHR swapchain);
                                                                                        Valid Usage (Implicit)
                                                                                          diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_surface.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_surface.kt index 0b75f6fd78..3f9eae3c77 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_surface.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_surface.kt @@ -198,56 +198,78 @@ val KHR_surface = "KHRSurface".nativeClassVK("KHR_surface", type = "instance", p E - corresponding electrical signal (value stored in memory)
                                                                                          sRGB OETF
                                                                                          -
                                                                                          E =  1.055 × L1/2.4 - 0.055 for 0.0031308 ≤ L ≤ 1
                                                                                          -￿    12.92  × L for 0 ≤ L < 0.0031308
                                                                                          +
                                                                                          +￿E =  1.055 × L1/2.4 - 0.055 for 0.0031308 ≤ L ≤ 1
                                                                                          +￿    12.92  × L for 0 ≤ L < 0.0031308
                                                                                          Display-P3 EOTF
                                                                                          -
                                                                                          E = (a × L + b)2.4 for 0.039 ≤ L ≤ 1
                                                                                          -￿    b × L for 0 ≤ L < 0.039
                                                                                          +
                                                                                          +￿E = (a × L + b)2.4 for 0.039 ≤ L ≤ 1
                                                                                          +￿    b × L for 0 ≤ L < 0.039
                                                                                          -
                                                                                          a = 0.948
                                                                                          +
                                                                                          b = 0.052
                                                                                          +
                                                                                          c = 0.077
                                                                                          + +
                                                                                          +￿a = 0.948
                                                                                          +
                                                                                          +￿b = 0.052
                                                                                          +
                                                                                          +￿c = 0.077
                                                                                          +
                                                                                          Display-P3 OETF
                                                                                          -
                                                                                          E =  1.055 × L1/2.4 - 0.055 for 0.0030186 ≤ L ≤ 1
                                                                                          -￿    12.92  × L for 0 ≤ L < 0.0030186
                                                                                          +
                                                                                          +￿E =  1.055 × L1/2.4 - 0.055 for 0.0030186 ≤ L ≤ 1
                                                                                          +￿    12.92  × L for 0 ≤ L < 0.0030186
                                                                                          Note
                                                                                          For most uses, the sRGB OETF is equivalent.
                                                                                          Extended sRGB OETF
                                                                                          -
                                                                                          ￿     1.055 ×  L1/2.4 - 0.055 for 0.0031308 ≤ L ≤ 7.5913
                                                                                          -E = 12.92  ×  L for 0 ≤ L < 0.0031308
                                                                                          -￿    -f(-L) for L < 0
                                                                                          +
                                                                                          +￿     1.055 ×  L1/2.4 - 0.055 for 0.0031308 ≤ L ≤ 7.5913
                                                                                          +￿E = 12.92  ×  L for 0 ≤ L < 0.0031308
                                                                                          +￿    -f(-L) for L < 0
                                                                                          L - luminance of image is within [-0.6038, 7.5913]. E can be negative and/or > 1. That is how extended sRGB specifies colors outside the standard sRGB gamut. This means extended sRGB needs a floating point pixel format to cover the intended color range.
                                                                                          SMPTE 170M OETF
                                                                                          -
                                                                                          E = α × L^0.45 - (1 - α) for β ≤ L ≤ 1
                                                                                          -￿    4.5 × L for 0 ≤ L < β
                                                                                          +
                                                                                          +￿E = α × L^0.45 - (1 - α) for β ≤ L ≤ 1
                                                                                          +￿    4.5 × L for 0 ≤ L < β
                                                                                          -
                                                                                          α = 1.099 and β = 0.018 for 10-bits and less per sample system (the values given in Rec.709)
                                                                                          +
                                                                                          α = 1.0993 and β = 0.0181 for 12-bits per sample system
                                                                                          +
                                                                                          +￿α = 1.099 and β = 0.018 for 10-bits and less per sample system (the values given in Rec.709)
                                                                                          +
                                                                                          +￿α = 1.0993 and β = 0.0181 for 12-bits per sample system
                                                                                          SMPTE ST2084 OETF (Inverse-EOTF)
                                                                                          -
                                                                                          E = ((c_1 + c_2 × L^m_1) / (1 + c_3 × L^m_1))^m_2
                                                                                          +
                                                                                          +￿E = ((c_1 + c_2 × L^m_1) / (1 + c_3 × L^m_1))^m_2
                                                                                          where: -
                                                                                          m1 = 2610 / 4096 × 1/4 = 0.1593017578125
                                                                                          +
                                                                                          m2 = 2523 / 4096 × 128 = 78.84375
                                                                                          +
                                                                                          c1 = 3424 / 4096 = 0.8359375 = c3 - c2 + 1
                                                                                          +
                                                                                          c2 = 2413 / 4096 × 32 = 18.8515625
                                                                                          +
                                                                                          c3 = 2392 / 4096 × 32 = 18.6875
                                                                                          + +
                                                                                          +￿m1 = 2610 / 4096 × 1/4 = 0.1593017578125
                                                                                          +
                                                                                          +￿m2 = 2523 / 4096 × 128 = 78.84375
                                                                                          +
                                                                                          +￿c1 = 3424 / 4096 = 0.8359375 = c3 - c2 + 1
                                                                                          +
                                                                                          +￿c2 = 2413 / 4096 × 32 = 18.8515625
                                                                                          +
                                                                                          +￿c3 = 2392 / 4096 × 32 = 18.6875
                                                                                          +
                                                                                          Hybrid Log Gamma (HLG)
                                                                                          -
                                                                                          E = r × sqrt(L) for 0 ≤ L ≤ 1
                                                                                          -￿    a × ln(L - b) + c for 1 < L
                                                                                          +
                                                                                          +￿E = r × sqrt(L) for 0 ≤ L ≤ 1
                                                                                          +￿    a × ln(L - b) + c for 1 < L
                                                                                          -
                                                                                          L - is the signal normalized by the reference white level
                                                                                          +
                                                                                          r - is the reference white level and has a signal value of 0.5
                                                                                          +
                                                                                          a = 0.17883277 and b = 0.28466892, and c = 0.55991073
                                                                                          +
                                                                                          +￿L - is the signal normalized by the reference white level
                                                                                          +
                                                                                          +￿r - is the reference white level and has a signal value of 0.5
                                                                                          +
                                                                                          +￿a = 0.17883277 and b = 0.28466892, and c = 0.55991073
                                                                                          AdobeRGB OETF
                                                                                          -
                                                                                          E = L^1 / 2.19921875
                                                                                          +
                                                                                          +￿E = L^1 / 2.19921875
                                                                                          Gamma 2.6 OETF
                                                                                          -
                                                                                          E = L^1 / 2.6
                                                                                          +
                                                                                          +￿E = L^1 / 2.6
                                                                                          An implementation supporting this extension indicates support for these color spaces via ##VkSurfaceFormatKHR structures returned from #GetPhysicalDeviceSurfaceFormatsKHR(). @@ -323,10 +345,11 @@ E = 12.92 × L for 0 ≤ L < 0.0031308
                                                                                          C Specification
                                                                                          To destroy a {@code VkSurfaceKHR} object, call: -
                                                                                          void vkDestroySurfaceKHR(
                                                                                          +        
                                                                                          +￿void vkDestroySurfaceKHR(
                                                                                           ￿    VkInstance                                  instance,
                                                                                           ￿    VkSurfaceKHR                                surface,
                                                                                          -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                          +￿ const VkAllocationCallbacks* pAllocator);
                                                                                          Description
                                                                                          Destroying a {@code VkSurfaceKHR} merely severs the connection between Vulkan and the native surface, and does not imply destroying the native surface, closing a window, or similar behavior. @@ -368,11 +391,12 @@ E = 12.92 × L for 0 ≤ L < 0.0031308
                                                                                          C Specification
                                                                                          To determine whether a queue family of a physical device supports presentation to a given surface, call: -
                                                                                          VkResult vkGetPhysicalDeviceSurfaceSupportKHR(
                                                                                          +        
                                                                                          +￿VkResult vkGetPhysicalDeviceSurfaceSupportKHR(
                                                                                           ￿    VkPhysicalDevice                            physicalDevice,
                                                                                           ￿    uint32_t                                    queueFamilyIndex,
                                                                                           ￿    VkSurfaceKHR                                surface,
                                                                                          -￿    VkBool32*                                   pSupported);
                                                                                          +￿ VkBool32* pSupported);
                                                                                          Valid Usage
                                                                                            @@ -416,10 +440,11 @@ E = 12.92 × L for 0 ≤ L < 0.0031308
                                                                                            C Specification
                                                                                            To query the basic capabilities of a surface, needed in order to create a swapchain, call: -
                                                                                            VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
                                                                                            +        
                                                                                            +￿VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
                                                                                             ￿    VkPhysicalDevice                            physicalDevice,
                                                                                             ￿    VkSurfaceKHR                                surface,
                                                                                            -￿    VkSurfaceCapabilitiesKHR*                   pSurfaceCapabilities);
                                                                                            +￿ VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
                                                                                            Valid Usage (Implicit)
                                                                                              @@ -460,11 +485,12 @@ E = 12.92 × L for 0 ≤ L < 0.0031308
                                                                                              C Specification
                                                                                              To query the supported swapchain format-color space pairs for a surface, call: -
                                                                                              VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(
                                                                                              +        
                                                                                              +￿VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(
                                                                                               ￿    VkPhysicalDevice                            physicalDevice,
                                                                                               ￿    VkSurfaceKHR                                surface,
                                                                                               ￿    uint32_t*                                   pSurfaceFormatCount,
                                                                                              -￿    VkSurfaceFormatKHR*                         pSurfaceFormats);
                                                                                              +￿ VkSurfaceFormatKHR* pSurfaceFormats);
                                                                                              Description
                                                                                              If {@code pSurfaceFormats} is {@code NULL}, then the number of format pairs supported for the given {@code surface} is returned in {@code pSurfaceFormatCount}. The number of format pairs supported will be greater than or equal to 1. Otherwise, {@code pSurfaceFormatCount} must point to a variable set by the user to the number of elements in the {@code pSurfaceFormats} array, and on return the variable is overwritten with the number of structures actually written to {@code pSurfaceFormats}. If the value of {@code pSurfaceFormatCount} is less than the number of format pairs supported, at most {@code pSurfaceFormatCount} structures will be written. If {@code pSurfaceFormatCount} is smaller than the number of format pairs supported for the given {@code surface}, #INCOMPLETE will be returned instead of #SUCCESS to indicate that not all the available values were returned. @@ -511,11 +537,12 @@ E = 12.92 × L for 0 ≤ L < 0.0031308
                                                                                              C Specification
                                                                                              To query the supported presentation modes for a surface, call: -
                                                                                              VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(
                                                                                              +        
                                                                                              +￿VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(
                                                                                               ￿    VkPhysicalDevice                            physicalDevice,
                                                                                               ￿    VkSurfaceKHR                                surface,
                                                                                               ￿    uint32_t*                                   pPresentModeCount,
                                                                                              -￿    VkPresentModeKHR*                           pPresentModes);
                                                                                              +￿ VkPresentModeKHR* pPresentModes);
                                                                                              Description
                                                                                              If {@code pPresentModes} is {@code NULL}, then the number of presentation modes supported for the given {@code surface} is returned in {@code pPresentModeCount}. Otherwise, {@code pPresentModeCount} must point to a variable set by the user to the number of elements in the {@code pPresentModes} array, and on return the variable is overwritten with the number of values actually written to {@code pPresentModes}. If the value of {@code pPresentModeCount} is less than the number of presentation modes supported, at most {@code pPresentModeCount} values will be written. If {@code pPresentModeCount} is smaller than the number of presentation modes supported for the given {@code surface}, #INCOMPLETE will be returned instead of #SUCCESS to indicate that not all the available values were returned. diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_swapchain.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_swapchain.kt index d67e011946..7cd456f7fc 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_swapchain.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_swapchain.kt @@ -116,11 +116,12 @@ val KHR_swapchain = "KHRSwapchain".nativeClassVK("KHR_swapchain", type = "device
                                                                                              C Specification
                                                                                              To create a swapchain, call: -
                                                                                              VkResult vkCreateSwapchainKHR(
                                                                                              +        
                                                                                              +￿VkResult vkCreateSwapchainKHR(
                                                                                               ￿    VkDevice                                    device,
                                                                                               ￿    const VkSwapchainCreateInfoKHR*             pCreateInfo,
                                                                                               ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                              -￿    VkSwapchainKHR*                             pSwapchain);
                                                                                              +￿ VkSwapchainKHR* pSwapchain);
                                                                                              Valid Usage (Implicit)
                                                                                                @@ -171,10 +172,11 @@ val KHR_swapchain = "KHRSwapchain".nativeClassVK("KHR_swapchain", type = "device
                                                                                                C Specification
                                                                                                To destroy a swapchain object call: -
                                                                                                void vkDestroySwapchainKHR(
                                                                                                +        
                                                                                                +￿void vkDestroySwapchainKHR(
                                                                                                 ￿    VkDevice                                    device,
                                                                                                 ￿    VkSwapchainKHR                              swapchain,
                                                                                                -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                Description
                                                                                                {@code swapchain} and all associated {@code VkImage} handles are destroyed, and must not be acquired or used any more by the application. The memory of each {@code VkImage} will only be freed after that image is no longer used by the platform. For example, if one image of the swapchain is being displayed in a window, the memory for that image may not be freed until the window is destroyed, or another swapchain is created for the window. Destroying the swapchain does not invalidate the parent {@code VkSurfaceKHR}, and a new swapchain can be created with it. @@ -217,11 +219,12 @@ val KHR_swapchain = "KHRSwapchain".nativeClassVK("KHR_swapchain", type = "device
                                                                                                C Specification
                                                                                                To obtain the array of presentable images associated with a swapchain, call: -
                                                                                                VkResult vkGetSwapchainImagesKHR(
                                                                                                +        
                                                                                                +￿VkResult vkGetSwapchainImagesKHR(
                                                                                                 ￿    VkDevice                                    device,
                                                                                                 ￿    VkSwapchainKHR                              swapchain,
                                                                                                 ￿    uint32_t*                                   pSwapchainImageCount,
                                                                                                -￿    VkImage*                                    pSwapchainImages);
                                                                                                +￿ VkImage* pSwapchainImages);
                                                                                                Description
                                                                                                If {@code pSwapchainImages} is {@code NULL}, then the number of presentable images for {@code swapchain} is returned in {@code pSwapchainImageCount}. Otherwise, {@code pSwapchainImageCount} must point to a variable set by the user to the number of elements in the {@code pSwapchainImages} array, and on return the variable is overwritten with the number of structures actually written to {@code pSwapchainImages}. If the value of {@code pSwapchainImageCount} is less than the number of presentable images for {@code swapchain}, at most {@code pSwapchainImageCount} structures will be written. If {@code pSwapchainImageCount} is smaller than the number of presentable images for {@code swapchain}, #INCOMPLETE will be returned instead of #SUCCESS to indicate that not all the available values were returned. @@ -264,13 +267,14 @@ val KHR_swapchain = "KHRSwapchain".nativeClassVK("KHR_swapchain", type = "device
                                                                                                C Specification
                                                                                                To acquire an available presentable image to use, and retrieve the index of that image, call: -
                                                                                                VkResult vkAcquireNextImageKHR(
                                                                                                +        
                                                                                                +￿VkResult vkAcquireNextImageKHR(
                                                                                                 ￿    VkDevice                                    device,
                                                                                                 ￿    VkSwapchainKHR                              swapchain,
                                                                                                 ￿    uint64_t                                    timeout,
                                                                                                 ￿    VkSemaphore                                 semaphore,
                                                                                                 ￿    VkFence                                     fence,
                                                                                                -￿    uint32_t*                                   pImageIndex);
                                                                                                +￿ uint32_t* pImageIndex);
                                                                                                Valid Usage
                                                                                                  @@ -334,9 +338,10 @@ val KHR_swapchain = "KHRSwapchain".nativeClassVK("KHR_swapchain", type = "device
                                                                                                  C Specification
                                                                                                  After queueing all rendering commands and transitioning the image to the correct layout, to queue an image for presentation, call: -
                                                                                                  VkResult vkQueuePresentKHR(
                                                                                                  +        
                                                                                                  +￿VkResult vkQueuePresentKHR(
                                                                                                   ￿    VkQueue                                     queue,
                                                                                                  -￿    const VkPresentInfoKHR*                     pPresentInfo);
                                                                                                  +￿ const VkPresentInfoKHR* pPresentInfo);
                                                                                                  Valid Usage
                                                                                                    diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_win32_surface.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_win32_surface.kt index 87ddb9cf47..fabf8f4e31 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_win32_surface.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_win32_surface.kt @@ -93,11 +93,12 @@ val KHR_win32_surface = "KHRWin32Surface".nativeClassVK("KHR_win32_surface", typ
                                                                                                    C Specification
                                                                                                    To create a {@code VkSurfaceKHR} object for a Win32 window, call: -
                                                                                                    VkResult vkCreateWin32SurfaceKHR(
                                                                                                    +        
                                                                                                    +￿VkResult vkCreateWin32SurfaceKHR(
                                                                                                     ￿    VkInstance                                  instance,
                                                                                                     ￿    const VkWin32SurfaceCreateInfoKHR*          pCreateInfo,
                                                                                                     ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                    -￿    VkSurfaceKHR*                               pSurface);
                                                                                                    +￿ VkSurfaceKHR* pSurface);
                                                                                                    Valid Usage (Implicit)
                                                                                                      @@ -139,9 +140,10 @@ val KHR_win32_surface = "KHRWin32Surface".nativeClassVK("KHR_win32_surface", typ
                                                                                                      C Specification
                                                                                                      To determine whether a queue family of a physical device supports presentation to the Microsoft Windows desktop, call: -
                                                                                                      VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR(
                                                                                                      +        
                                                                                                      +￿VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR(
                                                                                                       ￿    VkPhysicalDevice                            physicalDevice,
                                                                                                      -￿    uint32_t                                    queueFamilyIndex);
                                                                                                      +￿ uint32_t queueFamilyIndex);
                                                                                                      Description
                                                                                                      This platform-specific function can be called prior to creating a surface. diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_xlib_surface.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_xlib_surface.kt index 8f39598ec6..c9e7a95a4f 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_xlib_surface.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHR_xlib_surface.kt @@ -93,11 +93,12 @@ val KHR_xlib_surface = "KHRXlibSurface".nativeClassVK("KHR_xlib_surface", type =
                                                                                                      C Specification
                                                                                                      To create a {@code VkSurfaceKHR} object for an X11 window, using the Xlib client-side library, call: -
                                                                                                      VkResult vkCreateXlibSurfaceKHR(
                                                                                                      +        
                                                                                                      +￿VkResult vkCreateXlibSurfaceKHR(
                                                                                                       ￿    VkInstance                                  instance,
                                                                                                       ￿    const VkXlibSurfaceCreateInfoKHR*           pCreateInfo,
                                                                                                       ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                      -￿    VkSurfaceKHR*                               pSurface);
                                                                                                      +￿ VkSurfaceKHR* pSurface);
                                                                                                      Valid Usage (Implicit)
                                                                                                        @@ -139,11 +140,12 @@ val KHR_xlib_surface = "KHRXlibSurface".nativeClassVK("KHR_xlib_surface", type =
                                                                                                        C Specification
                                                                                                        To determine whether a queue family of a physical device supports presentation to an X11 server, using the Xlib client-side library, call: -
                                                                                                        VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR(
                                                                                                        +        
                                                                                                        +￿VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR(
                                                                                                         ￿    VkPhysicalDevice                            physicalDevice,
                                                                                                         ￿    uint32_t                                    queueFamilyIndex,
                                                                                                         ￿    Display*                                    dpy,
                                                                                                        -￿    VisualID                                    visualID);
                                                                                                        +￿ VisualID visualID);
                                                                                                        Description
                                                                                                        This platform-specific function can be called prior to creating a surface. diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_device_group.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_device_group.kt index b29db945c7..6c68313622 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_device_group.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_device_group.kt @@ -187,12 +187,13 @@ val KHX_device_group = "KHXDeviceGroup".nativeClassVK("KHX_device_group", type = To determine how peer memory can be accessed, call: -
                                                                                                        void vkGetDeviceGroupPeerMemoryFeaturesKHX(
                                                                                                        +        
                                                                                                        +￿void vkGetDeviceGroupPeerMemoryFeaturesKHX(
                                                                                                         ￿    VkDevice                                    device,
                                                                                                         ￿    uint32_t                                    heapIndex,
                                                                                                         ￿    uint32_t                                    localDeviceIndex,
                                                                                                         ￿    uint32_t                                    remoteDeviceIndex,
                                                                                                        -￿    VkPeerMemoryFeatureFlagsKHX*                pPeerMemoryFeatures);
                                                                                                        +￿ VkPeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures);
                                                                                                        Description
                                                                                                        #PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX must be supported for all heaps. @@ -220,12 +221,13 @@ val KHX_device_group = "KHXDeviceGroup".nativeClassVK("KHX_device_group", type = uint32_t.IN("localDeviceIndex", "the device index of the physical device that performs the memory access."), uint32_t.IN("remoteDeviceIndex", "the device index of the physical device that the memory is allocated for."), Check(1)..VkPeerMemoryFeatureFlagsKHX.p.OUT("pPeerMemoryFeatures", """a pointer to a bitmask indicating which types of memory accesses are supported for the combination of heap, local, and remote devices. The bits returned in {@code pPeerMemoryFeatures} are: -
                                                                                                        typedef enum VkPeerMemoryFeatureFlagBitsKHX {
                                                                                                        +
                                                                                                        +￿typedef enum VkPeerMemoryFeatureFlagBitsKHX {
                                                                                                         ￿    VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX = 0x00000001,
                                                                                                         ￿    VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX = 0x00000002,
                                                                                                         ￿    VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX = 0x00000004,
                                                                                                         ￿    VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX = 0x00000008,
                                                                                                        -} VkPeerMemoryFeatureFlagBitsKHX;
                                                                                                        +￿} VkPeerMemoryFeatureFlagBitsKHX;
                                                                                                        • if {@code pPeerMemoryFeatures} contains #PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX, the memory can be accessed as the source of a ftext:vkCmdCopy* command.
                                                                                                        • @@ -243,10 +245,11 @@ val KHX_device_group = "KHXDeviceGroup".nativeClassVK("KHX_device_group", type =
                                                                                                          C Specification
                                                                                                          To attach memory to buffer objects for one or more buffers at a time, call: -
                                                                                                          VkResult vkBindBufferMemory2KHX(
                                                                                                          +        
                                                                                                          +￿VkResult vkBindBufferMemory2KHX(
                                                                                                           ￿    VkDevice                                    device,
                                                                                                           ￿    uint32_t                                    bindInfoCount,
                                                                                                          -￿    const VkBindBufferMemoryInfoKHX*            pBindInfos);
                                                                                                          +￿ const VkBindBufferMemoryInfoKHX* pBindInfos);
                                                                                                          Description
                                                                                                          On some implementations, it may be more efficient to batch memory bindings into a single command. @@ -289,10 +292,11 @@ val KHX_device_group = "KHXDeviceGroup".nativeClassVK("KHX_device_group", type =
                                                                                                          C Specification
                                                                                                          To attach memory to image objects for one or more images at a time, call: -
                                                                                                          VkResult vkBindImageMemory2KHX(
                                                                                                          +        
                                                                                                          +￿VkResult vkBindImageMemory2KHX(
                                                                                                           ￿    VkDevice                                    device,
                                                                                                           ￿    uint32_t                                    bindInfoCount,
                                                                                                          -￿    const VkBindImageMemoryInfoKHX*             pBindInfos);
                                                                                                          +￿ const VkBindImageMemoryInfoKHX* pBindInfos);
                                                                                                          Description
                                                                                                          On some implementations, it may be more efficient to batch memory bindings into a single command. @@ -335,9 +339,10 @@ val KHX_device_group = "KHXDeviceGroup".nativeClassVK("KHX_device_group", type =
                                                                                                          C Specification
                                                                                                          To update the current device mask of a command buffer, call: -
                                                                                                          void vkCmdSetDeviceMaskKHX(
                                                                                                          +        
                                                                                                          +￿void vkCmdSetDeviceMaskKHX(
                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                          -￿    uint32_t                                    deviceMask);
                                                                                                          +￿ uint32_t deviceMask);
                                                                                                          Description
                                                                                                          {@code deviceMask} is used to filter out subsequent commands from executing on all physical devices whose bit indices are not set in the mask. @@ -384,9 +389,10 @@ val KHX_device_group = "KHXDeviceGroup".nativeClassVK("KHX_device_group", type = To query these capabilities, call: -
                                                                                                          VkResult vkGetDeviceGroupPresentCapabilitiesKHX(
                                                                                                          +        
                                                                                                          +￿VkResult vkGetDeviceGroupPresentCapabilitiesKHX(
                                                                                                           ￿    VkDevice                                    device,
                                                                                                          -￿    VkDeviceGroupPresentCapabilitiesKHX*        pDeviceGroupPresentCapabilities);
                                                                                                          +￿ VkDeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities);
                                                                                                          Valid Usage (Implicit)
                                                                                                            @@ -426,10 +432,11 @@ val KHX_device_group = "KHXDeviceGroup".nativeClassVK("KHX_device_group", type = To query the supported device group present modes for a particular surface, call: -
                                                                                                            VkResult vkGetDeviceGroupSurfacePresentModesKHX(
                                                                                                            +        
                                                                                                            +￿VkResult vkGetDeviceGroupSurfacePresentModesKHX(
                                                                                                             ￿    VkDevice                                    device,
                                                                                                             ￿    VkSurfaceKHR                                surface,
                                                                                                            -￿    VkDeviceGroupPresentModeFlagsKHX*           pModes);
                                                                                                            +￿ VkDeviceGroupPresentModeFlagsKHX* pModes);
                                                                                                            Description
                                                                                                            The modes returned by this command are not invariant, and may change in response to the surface being moved, resized, or occluded. These modes must be a subset of the modes returned by #GetDeviceGroupPresentCapabilitiesKHX(). @@ -476,10 +483,11 @@ val KHX_device_group = "KHXDeviceGroup".nativeClassVK("KHX_device_group", type =
                                                                                                            C Specification
                                                                                                            To acquire an available presentable image to use, and retrieve the index of that image, call: -
                                                                                                            VkResult vkAcquireNextImage2KHX(
                                                                                                            +        
                                                                                                            +￿VkResult vkAcquireNextImage2KHX(
                                                                                                             ￿    VkDevice                                    device,
                                                                                                             ￿    const VkAcquireNextImageInfoKHX*            pAcquireInfo,
                                                                                                            -￿    uint32_t*                                   pImageIndex);
                                                                                                            +￿ uint32_t* pImageIndex);
                                                                                                            Valid Usage (Implicit)
                                                                                                              @@ -525,14 +533,15 @@ val KHX_device_group = "KHXDeviceGroup".nativeClassVK("KHX_device_group", type =
                                                                                                              C Specification
                                                                                                              To record a dispatch using non-zero base values for the components of {@code WorkgroupId}, call: -
                                                                                                              void vkCmdDispatchBaseKHX(
                                                                                                              +        
                                                                                                              +￿void vkCmdDispatchBaseKHX(
                                                                                                               ￿    VkCommandBuffer                             commandBuffer,
                                                                                                               ￿    uint32_t                                    baseGroupX,
                                                                                                               ￿    uint32_t                                    baseGroupY,
                                                                                                               ￿    uint32_t                                    baseGroupZ,
                                                                                                               ￿    uint32_t                                    groupCountX,
                                                                                                               ￿    uint32_t                                    groupCountY,
                                                                                                              -￿    uint32_t                                    groupCountZ);
                                                                                                              +￿ uint32_t groupCountZ);
                                                                                                              Description
                                                                                                              When the command is executed, a global workgroup consisting of groupCountX {times} groupCountY {times} groupCountZ local workgroups is assembled, with {@code WorkgroupId} values ranging from [baseGroup, baseGroup {plus} groupCount) in each component. #CmdDispatch() is equivalent to vkCmdDispatchBaseKHX(0,0,0,groupCountX,groupCountY,groupCountZ). @@ -589,11 +598,12 @@ val KHX_device_group = "KHXDeviceGroup".nativeClassVK("KHX_device_group", type = To query a set of rectangles used in presentation on the physical device, call: -
                                                                                                              VkResult vkGetPhysicalDevicePresentRectanglesKHX(
                                                                                                              +        
                                                                                                              +￿VkResult vkGetPhysicalDevicePresentRectanglesKHX(
                                                                                                               ￿    VkPhysicalDevice                            physicalDevice,
                                                                                                               ￿    VkSurfaceKHR                                surface,
                                                                                                               ￿    uint32_t*                                   pRectCount,
                                                                                                              -￿    VkRect2D*                                   pRects);
                                                                                                              +￿ VkRect2D* pRects);
                                                                                                              Description
                                                                                                              If {@code pRects} is {@code NULL}, then the number of rectangles used when presenting the given {@code surface} is returned in {@code pRectCount}. Otherwise, {@code pRectCount} must point to a variable set by the user to the number of elements in the {@code pRects} array, and on return the variable is overwritten with the number of structures actually written to {@code pRects}. If the value of {@code pRectCount} is less than the number of rectangles, at most {@code pRectCount} structures will be written. If {@code pRectCount} is smaller than the number of rectangles used for the given {@code surface}, #INCOMPLETE will be returned instead of #SUCCESS to indicate that not all the available values were returned. diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_device_group_creation.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_device_group_creation.kt index 96ea34e27d..e34c076cc0 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_device_group_creation.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_device_group_creation.kt @@ -14,7 +14,8 @@ val KHX_device_group_creation = "KHXDeviceGroupCreation".nativeClassVK("KHX_devi This extension provides instance-level commands to enumerate groups of physical devices, and to create a logical device from a subset of one of those groups. Such a logical device can then be used with new features in the VK_KHX_device_group extension.
                                                                                                              Examples
                                                                                                              -
                                                                                                              ￿    VkDeviceCreateInfo devCreateInfo = { VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO };
                                                                                                              +        
                                                                                                              +￿    VkDeviceCreateInfo devCreateInfo = { VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO };
                                                                                                               ￿    // (not shown) fill out devCreateInfo as usual.
                                                                                                               ￿    uint32_t deviceGroupCount = 0;
                                                                                                               ￿    VkPhysicalDeviceGroupPropertiesKHX *props = NULL;
                                                                                                              @@ -40,7 +41,7 @@ val KHX_device_group_creation = "KHXDeviceGroupCreation".nativeClassVK("KHX_devi
                                                                                                               ￿    }
                                                                                                               ￿
                                                                                                               ￿    vkCreateDevice(props[0].physicalDevices[0], &devCreateInfo, NULL, &g_vkDevice);
                                                                                                              -￿    free(props);
                                                                                                              +￿ free(props);
                                                                                                              Name String
                                                                                                              @@ -120,10 +121,11 @@ val KHX_device_group_creation = "KHXDeviceGroupCreation".nativeClassVK("KHX_devi
                                                                                                              C Specification
                                                                                                              To retrieve a list of the device groups present in the system, call: -
                                                                                                              VkResult vkEnumeratePhysicalDeviceGroupsKHX(
                                                                                                              +        
                                                                                                              +￿VkResult vkEnumeratePhysicalDeviceGroupsKHX(
                                                                                                               ￿    VkInstance                                  instance,
                                                                                                               ￿    uint32_t*                                   pPhysicalDeviceGroupCount,
                                                                                                              -￿    VkPhysicalDeviceGroupPropertiesKHX*         pPhysicalDeviceGroupProperties);
                                                                                                              +￿ VkPhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties);
                                                                                                              Description
                                                                                                              If {@code pPhysicalDeviceGroupProperties} is {@code NULL}, then the number of device groups available is returned in {@code pPhysicalDeviceGroupCount}. Otherwise, {@code pPhysicalDeviceGroupCount} must point to a variable set by the user to the number of elements in the {@code pPhysicalDeviceGroupProperties} array, and on return the variable is overwritten with the number of structures actually written to {@code pPhysicalDeviceGroupProperties}. If {@code pPhysicalDeviceGroupCount} is less than the number of device groups available, at most {@code pPhysicalDeviceGroupCount} structures will be written. If {@code pPhysicalDeviceGroupCount} is smaller than the number of device groups available, #INCOMPLETE will be returned instead of #SUCCESS, to indicate that not all the available device groups were returned. diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_memory_capabilities.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_memory_capabilities.kt index ff95ec5950..0a6b75eef7 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_memory_capabilities.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_memory_capabilities.kt @@ -146,10 +146,11 @@ val KHX_external_memory_capabilities = "KHXExternalMemoryCapabilities".nativeCla
                                                                                                              C Specification
                                                                                                              To query the external handle types supported by buffers, call: -
                                                                                                              void vkGetPhysicalDeviceExternalBufferPropertiesKHX(
                                                                                                              +        
                                                                                                              +￿void vkGetPhysicalDeviceExternalBufferPropertiesKHX(
                                                                                                               ￿    VkPhysicalDevice                            physicalDevice,
                                                                                                               ￿    const VkPhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo,
                                                                                                              -￿    VkExternalBufferPropertiesKHX*              pExternalBufferProperties);
                                                                                                              +￿ VkExternalBufferPropertiesKHX* pExternalBufferProperties);
                                                                                                              Valid Usage (Implicit)
                                                                                                                diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_memory_fd.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_memory_fd.kt index c2835d0092..1567232bfd 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_memory_fd.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_memory_fd.kt @@ -79,11 +79,12 @@ val KHX_external_memory_fd = "KHXExternalMemoryFd".nativeClassVK("KHX_external_m
                                                                                                                C Specification
                                                                                                                To export a POSIX file descriptor representing the underlying resources of a Vulkan device memory object, call: -
                                                                                                                VkResult vkGetMemoryFdKHX(
                                                                                                                +        
                                                                                                                +￿VkResult vkGetMemoryFdKHX(
                                                                                                                 ￿    VkDevice                                    device,
                                                                                                                 ￿    VkDeviceMemory                              memory,
                                                                                                                 ￿    VkExternalMemoryHandleTypeFlagBitsKHX       handleType,
                                                                                                                -￿    int*                                        pFd);
                                                                                                                +￿ int* pFd);
                                                                                                                Description
                                                                                                                The properties of the file descriptor returned depend on the value of {@code handleType}. See {@code VkExternalMemoryHandleTypeFlagBitsKHX} for a description of the properties of the defined external memory handle types. @@ -134,11 +135,12 @@ val KHX_external_memory_fd = "KHXExternalMemoryFd".nativeClassVK("KHX_external_m
                                                                                                                C Specification
                                                                                                                POSIX file descriptor memory handles compatible with Vulkan may also be created by non-Vulkan APIs using methods beyond the scope of this specification. To determine the correct parameters to use when importing such handles, call: -
                                                                                                                VkResult vkGetMemoryFdPropertiesKHX(
                                                                                                                +        
                                                                                                                +￿VkResult vkGetMemoryFdPropertiesKHX(
                                                                                                                 ￿    VkDevice                                    device,
                                                                                                                 ￿    VkExternalMemoryHandleTypeFlagBitsKHX       handleType,
                                                                                                                 ￿    int                                         fd,
                                                                                                                -￿    VkMemoryFdPropertiesKHX*                    pMemoryFdProperties);
                                                                                                                +￿ VkMemoryFdPropertiesKHX* pMemoryFdProperties);
                                                                                                                Valid Usage
                                                                                                                  diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_memory_win32.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_memory_win32.kt index 034af77c47..e96d5b4bb5 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_memory_win32.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_memory_win32.kt @@ -82,11 +82,12 @@ val KHX_external_memory_win32 = "KHXExternalMemoryWin32".nativeClassVK("KHX_exte
                                                                                                                  C Specification
                                                                                                                  To export a Windows handle representing the underlying resources of a Vulkan device memory object, call: -
                                                                                                                  VkResult vkGetMemoryWin32HandleKHX(
                                                                                                                  +        
                                                                                                                  +￿VkResult vkGetMemoryWin32HandleKHX(
                                                                                                                   ￿    VkDevice                                    device,
                                                                                                                   ￿    VkDeviceMemory                              memory,
                                                                                                                   ￿    VkExternalMemoryHandleTypeFlagBitsKHX       handleType,
                                                                                                                  -￿    HANDLE*                                     pHandle);
                                                                                                                  +￿ HANDLE* pHandle);
                                                                                                                  Description
                                                                                                                  The properties of the handle returned depend on the value of {@code handleType}. See {@code VkExternalMemoryHandleTypeFlagBitsKHX} for a description of the properties of the defined external memory handle types. @@ -138,11 +139,12 @@ val KHX_external_memory_win32 = "KHXExternalMemoryWin32".nativeClassVK("KHX_exte
                                                                                                                  C Specification
                                                                                                                  Windows memory handles compatible with Vulkan may also be created by non-Vulkan APIs using methods beyond the scope of this specification. To determine the correct parameters to use when importing such handles, call: -
                                                                                                                  VkResult vkGetMemoryWin32HandlePropertiesKHX(
                                                                                                                  +        
                                                                                                                  +￿VkResult vkGetMemoryWin32HandlePropertiesKHX(
                                                                                                                   ￿    VkDevice                                    device,
                                                                                                                   ￿    VkExternalMemoryHandleTypeFlagBitsKHX       handleType,
                                                                                                                   ￿    HANDLE                                      handle,
                                                                                                                  -￿    VkMemoryWin32HandlePropertiesKHX*           pMemoryWin32HandleProperties);
                                                                                                                  +￿ VkMemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties);
                                                                                                                  Valid Usage
                                                                                                                    diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_semaphore_capabilities.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_semaphore_capabilities.kt index e32061f1a1..511573e65f 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_semaphore_capabilities.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_semaphore_capabilities.kt @@ -130,10 +130,11 @@ val KHX_external_semaphore_capabilities = "KHXExternalSemaphoreCapabilities".nat
                                                                                                                    C Specification
                                                                                                                    Semaphores may support import and export of external semaphore handles. To query the external handle types supported by semaphores, call: -
                                                                                                                    void vkGetPhysicalDeviceExternalSemaphorePropertiesKHX(
                                                                                                                    +        
                                                                                                                    +￿void vkGetPhysicalDeviceExternalSemaphorePropertiesKHX(
                                                                                                                     ￿    VkPhysicalDevice                            physicalDevice,
                                                                                                                     ￿    const VkPhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo,
                                                                                                                    -￿    VkExternalSemaphorePropertiesKHX*           pExternalSemaphoreProperties);
                                                                                                                    +￿ VkExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties);
                                                                                                                    Valid Usage (Implicit)
                                                                                                                      diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_semaphore_fd.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_semaphore_fd.kt index 3be7d4f789..f9731ee4f2 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_semaphore_fd.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_semaphore_fd.kt @@ -80,9 +80,10 @@ val KHX_external_semaphore_fd = "KHXExternalSemaphoreFd".nativeClassVK("KHX_exte
                                                                                                                      C Specification
                                                                                                                      To import semaphore state from a POSIX file descriptor, call: -
                                                                                                                      VkResult vkImportSemaphoreFdKHX(
                                                                                                                      +        
                                                                                                                      +￿VkResult vkImportSemaphoreFdKHX(
                                                                                                                       ￿    VkDevice                                    device,
                                                                                                                      -￿    const VkImportSemaphoreFdInfoKHX*           pImportSemaphoreFdInfo);
                                                                                                                      +￿ const VkImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo);
                                                                                                                      Description
                                                                                                                      Importing semaphore state from a file descriptor transfers ownership of the file descriptor from the application to the Vulkan implementation. The application must not perform any operations on the file descriptor after a successful import. @@ -128,11 +129,12 @@ val KHX_external_semaphore_fd = "KHXExternalSemaphoreFd".nativeClassVK("KHX_exte
                                                                                                                      C Specification
                                                                                                                      To export a POSIX file descriptor representing the state of a semaphore, call: -
                                                                                                                      VkResult vkGetSemaphoreFdKHX(
                                                                                                                      +        
                                                                                                                      +￿VkResult vkGetSemaphoreFdKHX(
                                                                                                                       ￿    VkDevice                                    device,
                                                                                                                       ￿    VkSemaphore                                 semaphore,
                                                                                                                       ￿    VkExternalSemaphoreHandleTypeFlagBitsKHX    handleType,
                                                                                                                      -￿    int*                                        pFd);
                                                                                                                      +￿ int* pFd);
                                                                                                                      Description
                                                                                                                      The properties of the file descriptor returned depend on the value of {@code handleType}. See {@code VkExternalSemaphoreHandleTypeFlagBitsKHX} for a description of the properties of the defined external semaphore handle types. diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_semaphore_win32.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_semaphore_win32.kt index eaa552bfe6..6633e48591 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_semaphore_win32.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/KHX_external_semaphore_win32.kt @@ -82,9 +82,10 @@ val KHX_external_semaphore_win32 = "KHXExternalSemaphoreWin32".nativeClassVK("KH
                                                                                                                      C Specification
                                                                                                                      To import semaphore state from a Windows handle, call: -
                                                                                                                      VkResult vkImportSemaphoreWin32HandleKHX(
                                                                                                                      +        
                                                                                                                      +￿VkResult vkImportSemaphoreWin32HandleKHX(
                                                                                                                       ￿    VkDevice                                    device,
                                                                                                                      -￿    const VkImportSemaphoreWin32HandleInfoKHX*  pImportSemaphoreWin32HandleInfo);
                                                                                                                      +￿ const VkImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo);
                                                                                                                      Description
                                                                                                                      Importing semaphore state from Windows handles does not transfer ownership of the handle to the Vulkan implementation. For handle types defined as NT handles, the application must release ownership using the fname:CloseHandle system call when the handle is no longer needed. @@ -125,11 +126,12 @@ val KHX_external_semaphore_win32 = "KHXExternalSemaphoreWin32".nativeClassVK("KH
                                                                                                                      C Specification
                                                                                                                      To export a Windows handle representing the state of a semaphore, call: -
                                                                                                                      VkResult vkGetSemaphoreWin32HandleKHX(
                                                                                                                      +        
                                                                                                                      +￿VkResult vkGetSemaphoreWin32HandleKHX(
                                                                                                                       ￿    VkDevice                                    device,
                                                                                                                       ￿    VkSemaphore                                 semaphore,
                                                                                                                       ￿    VkExternalSemaphoreHandleTypeFlagBitsKHX    handleType,
                                                                                                                      -￿    HANDLE*                                     pHandle);
                                                                                                                      +￿ HANDLE* pHandle);
                                                                                                                      Description
                                                                                                                      The properties of the handle returned depend on the value of {@code handleType}. See {@code VkExternalSemaphoreHandleTypeFlagBitsKHX} for a description of the properties of the defined external semaphore handle types. diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/MVK_ios_surface.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/MVK_ios_surface.kt index c5559fac0e..73e682039f 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/MVK_ios_surface.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/MVK_ios_surface.kt @@ -76,11 +76,12 @@ val MVK_ios_surface = "MVKIosSurface".nativeClassVK("MVK_ios_surface", type = "i
                                                                                                                      C Specification
                                                                                                                      To create a {@code VkSurfaceKHR} object for an iOS {@code UIView}, call: -
                                                                                                                      VkResult vkCreateIOSSurfaceMVK(
                                                                                                                      +        
                                                                                                                      +￿VkResult vkCreateIOSSurfaceMVK(
                                                                                                                       ￿    VkInstance                                  instance,
                                                                                                                       ￿    const VkIOSSurfaceCreateInfoMVK*            pCreateInfo,
                                                                                                                       ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                      -￿    VkSurfaceKHR*                               pSurface);
                                                                                                                      +￿ VkSurfaceKHR* pSurface);
                                                                                                                      Valid Usage (Implicit)
                                                                                                                        diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/MVK_macos_surface.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/MVK_macos_surface.kt index 783d8bc892..6d90ff53d1 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/MVK_macos_surface.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/MVK_macos_surface.kt @@ -76,11 +76,12 @@ val MVK_macos_surface = "MVKMacosSurface".nativeClassVK("MVK_macos_surface", typ
                                                                                                                        C Specification
                                                                                                                        To create a {@code VkSurfaceKHR} object for a macOS {@code NSView}, call: -
                                                                                                                        VkResult vkCreateMacOSSurfaceMVK(
                                                                                                                        +        
                                                                                                                        +￿VkResult vkCreateMacOSSurfaceMVK(
                                                                                                                         ￿    VkInstance                                  instance,
                                                                                                                         ￿    const VkMacOSSurfaceCreateInfoMVK*          pCreateInfo,
                                                                                                                         ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                        -￿    VkSurfaceKHR*                               pSurface);
                                                                                                                        +￿ VkSurfaceKHR* pSurface);
                                                                                                                        Valid Usage (Implicit)
                                                                                                                          diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NVX_device_generated_commands.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NVX_device_generated_commands.kt index 43733a1c7a..ce37456d88 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NVX_device_generated_commands.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NVX_device_generated_commands.kt @@ -48,7 +48,8 @@ val NVX_device_generated_commands = "NVXDeviceGeneratedCommands".nativeClassVK("
                                                                                                                          Example Code
                                                                                                                          TODO links to gameworks & designworks samples -
                                                                                                                          ￿  // setup secondary command buffer
                                                                                                                          +        
                                                                                                                          +￿  // setup secondary command buffer
                                                                                                                           ￿    vkBeginCommandBuffer(generatedCmdBuffer, &beginInfo);
                                                                                                                           ￿    ... setup its state as usual
                                                                                                                           ￿
                                                                                                                          @@ -104,7 +105,7 @@ val NVX_device_generated_commands = "NVXDeviceGeneratedCommands".nativeClassVK("
                                                                                                                           ￿                         // memoryBarrierCount1,
                                                                                                                           ￿                         // pMemoryBarriers&memoryBarrier,
                                                                                                                           ￿                         ...)
                                                                                                                          -￿    vkCmdExecuteCommands(mainCmd, 1, &generatedCmdBuffer);
                                                                                                                          +￿ vkCmdExecuteCommands(mainCmd, 1, &generatedCmdBuffer);
                                                                                                                          Name String
                                                                                                                          @@ -291,9 +292,10 @@ val NVX_device_generated_commands = "NVXDeviceGeneratedCommands".nativeClassVK("
                                                                                                                          C Specification
                                                                                                                          The actual generation on the device is handled with: -
                                                                                                                          void vkCmdProcessCommandsNVX(
                                                                                                                          +        
                                                                                                                          +￿void vkCmdProcessCommandsNVX(
                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                          -￿    const VkCmdProcessCommandsInfoNVX*          pProcessCommandsInfo);
                                                                                                                          +￿ const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo);
                                                                                                                          Valid Usage (Implicit)
                                                                                                                            @@ -332,9 +334,10 @@ val NVX_device_generated_commands = "NVXDeviceGeneratedCommands".nativeClassVK("
                                                                                                                            C Specification
                                                                                                                            Command space for generated commands recorded into a secondary command buffer must be reserved by calling: -
                                                                                                                            void vkCmdReserveSpaceForCommandsNVX(
                                                                                                                            +        
                                                                                                                            +￿void vkCmdReserveSpaceForCommandsNVX(
                                                                                                                             ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                            -￿    const VkCmdReserveSpaceForCommandsInfoNVX*  pReserveSpaceInfo);
                                                                                                                            +￿ const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo);
                                                                                                                            Valid Usage
                                                                                                                              @@ -380,11 +383,12 @@ val NVX_device_generated_commands = "NVXDeviceGeneratedCommands".nativeClassVK("
                                                                                                                              C Specification
                                                                                                                              Indirect command layouts are created by: -
                                                                                                                              VkResult vkCreateIndirectCommandsLayoutNVX(
                                                                                                                              +        
                                                                                                                              +￿VkResult vkCreateIndirectCommandsLayoutNVX(
                                                                                                                               ￿    VkDevice                                    device,
                                                                                                                               ￿    const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
                                                                                                                               ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                              -￿    VkIndirectCommandsLayoutNVX*                pIndirectCommandsLayout);
                                                                                                                              +￿ VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout);
                                                                                                                              Valid Usage (Implicit)
                                                                                                                                @@ -426,10 +430,11 @@ val NVX_device_generated_commands = "NVXDeviceGeneratedCommands".nativeClassVK("
                                                                                                                                C Specification
                                                                                                                                Indirect command layouts are destroyed by: -
                                                                                                                                void vkDestroyIndirectCommandsLayoutNVX(
                                                                                                                                +        
                                                                                                                                +￿void vkDestroyIndirectCommandsLayoutNVX(
                                                                                                                                 ￿    VkDevice                                    device,
                                                                                                                                 ￿    VkIndirectCommandsLayoutNVX                 indirectCommandsLayout,
                                                                                                                                -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                Valid Usage
                                                                                                                                  @@ -463,11 +468,12 @@ val NVX_device_generated_commands = "NVXDeviceGeneratedCommands".nativeClassVK("
                                                                                                                                  C Specification
                                                                                                                                  To create object tables, call: -
                                                                                                                                  VkResult vkCreateObjectTableNVX(
                                                                                                                                  +        
                                                                                                                                  +￿VkResult vkCreateObjectTableNVX(
                                                                                                                                   ￿    VkDevice                                    device,
                                                                                                                                   ￿    const VkObjectTableCreateInfoNVX*           pCreateInfo,
                                                                                                                                   ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                  -￿    VkObjectTableNVX*                           pObjectTable);
                                                                                                                                  +￿ VkObjectTableNVX* pObjectTable);
                                                                                                                                  Valid Usage (Implicit)
                                                                                                                                    @@ -509,10 +515,11 @@ val NVX_device_generated_commands = "NVXDeviceGeneratedCommands".nativeClassVK("
                                                                                                                                    C Specification
                                                                                                                                    To destroy an object table, call: -
                                                                                                                                    void vkDestroyObjectTableNVX(
                                                                                                                                    +        
                                                                                                                                    +￿void vkDestroyObjectTableNVX(
                                                                                                                                     ￿    VkDevice                                    device,
                                                                                                                                     ￿    VkObjectTableNVX                            objectTable,
                                                                                                                                    -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                    +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                    Valid Usage
                                                                                                                                      @@ -551,12 +558,13 @@ val NVX_device_generated_commands = "NVXDeviceGeneratedCommands".nativeClassVK("
                                                                                                                                      C Specification
                                                                                                                                      Resource bindings of Vulkan objects are registered at an arbitrary ftext:uint32_t index within an object table. As long as the object table references such objects, they must not be deleted. -
                                                                                                                                      VkResult vkRegisterObjectsNVX(
                                                                                                                                      +        
                                                                                                                                      +￿VkResult vkRegisterObjectsNVX(
                                                                                                                                       ￿    VkDevice                                    device,
                                                                                                                                       ￿    VkObjectTableNVX                            objectTable,
                                                                                                                                       ￿    uint32_t                                    objectCount,
                                                                                                                                       ￿    const VkObjectTableEntryNVX* const*         ppObjectTableEntries,
                                                                                                                                      -￿    const uint32_t*                             pObjectIndices);
                                                                                                                                      +￿ const uint32_t* pObjectIndices);
                                                                                                                                      Valid Usage
                                                                                                                                        @@ -613,12 +621,13 @@ val NVX_device_generated_commands = "NVXDeviceGeneratedCommands".nativeClassVK("
                                                                                                                                        C Specification
                                                                                                                                        Using the following command to unregister resources from an object table: -
                                                                                                                                        VkResult vkUnregisterObjectsNVX(
                                                                                                                                        +        
                                                                                                                                        +￿VkResult vkUnregisterObjectsNVX(
                                                                                                                                         ￿    VkDevice                                    device,
                                                                                                                                         ￿    VkObjectTableNVX                            objectTable,
                                                                                                                                         ￿    uint32_t                                    objectCount,
                                                                                                                                         ￿    const VkObjectEntryTypeNVX*                 pObjectEntryTypes,
                                                                                                                                        -￿    const uint32_t*                             pObjectIndices);
                                                                                                                                        +￿ const uint32_t* pObjectIndices);
                                                                                                                                        Valid Usage
                                                                                                                                          @@ -672,10 +681,11 @@ val NVX_device_generated_commands = "NVXDeviceGeneratedCommands".nativeClassVK("
                                                                                                                                          C Specification
                                                                                                                                          To query the support of related features and limitations, call: -
                                                                                                                                          void vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
                                                                                                                                          +        
                                                                                                                                          +￿void vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
                                                                                                                                           ￿    VkPhysicalDevice                            physicalDevice,
                                                                                                                                           ￿    VkDeviceGeneratedCommandsFeaturesNVX*       pFeatures,
                                                                                                                                          -￿    VkDeviceGeneratedCommandsLimitsNVX*         pLimits);
                                                                                                                                          +￿ VkDeviceGeneratedCommandsLimitsNVX* pLimits);
                                                                                                                                          Valid Usage (Implicit)
                                                                                                                                            diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NVX_multiview_per_view_attributes.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NVX_multiview_per_view_attributes.kt index 2afaaa4cef..d11896d158 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NVX_multiview_per_view_attributes.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NVX_multiview_per_view_attributes.kt @@ -22,22 +22,23 @@ val NVX_multiview_per_view_attributes = "NVXMultiviewPerViewAttributes".nativeCl If {@code VK_NV_viewport_array2} is not also supported and enabled, the per-view viewport mask must not be used.
                                                                                                                                            Examples
                                                                                                                                            -
                                                                                                                                            \#version 450 core
                                                                                                                                            +        
                                                                                                                                            +￿\#version 450 core
                                                                                                                                             ￿
                                                                                                                                            -\#extension GL_KHX_multiview : enable
                                                                                                                                            -\#extension GL_NVX_multiview_per_view_attributes : enable
                                                                                                                                            +￿\#extension GL_KHX_multiview : enable
                                                                                                                                            +￿\#extension GL_NVX_multiview_per_view_attributes : enable
                                                                                                                                             ￿
                                                                                                                                            -layout(location = 0) in vec4 position;
                                                                                                                                            -layout(set = 0, binding = 0) uniform Block { mat4 mvpPerView[2]; } buf;
                                                                                                                                            +￿layout(location = 0) in vec4 position;
                                                                                                                                            +￿layout(set = 0, binding = 0) uniform Block { mat4 mvpPerView[2]; } buf;
                                                                                                                                             ￿
                                                                                                                                            -void main()
                                                                                                                                            -{
                                                                                                                                            +￿void main()
                                                                                                                                            +￿{
                                                                                                                                             ￿    // Output both per-view positions and gl_Position as a function
                                                                                                                                             ￿    // of gl_ViewIndex
                                                                                                                                             ￿    gl_PositionPerViewNV[0] = buf.mvpPerView[0] * position;
                                                                                                                                             ￿    gl_PositionPerViewNV[1] = buf.mvpPerView[1] * position;
                                                                                                                                             ￿    gl_Position = buf.mvpPerView[gl_ViewIndex] * position;
                                                                                                                                            -}
                                                                                                                                            +￿}
                                                                                                                                            Name String
                                                                                                                                            diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_clip_space_w_scaling.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_clip_space_w_scaling.kt index fe6ebeddbd..a3d7aae723 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_clip_space_w_scaling.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_clip_space_w_scaling.kt @@ -20,11 +20,12 @@ val NV_clip_space_w_scaling = "NVClipSpaceWScaling".nativeClassVK("NV_clip_space In the intended use case for viewport position scaling, an application should use a set of 4 viewports, one for each of the 4 quadrants of a Cartesian coordinate system. Each viewport is set to the dimension of the image, but is scissored to the quadrant it represents. The application should specify A and B coefficients of the w-scaling equation above, that have the same value, but different signs, for each of the viewports. The signs of A and B should match the signs of X and Y for the quadrant that they represent such that the value of "w'" will always be greater than or equal to the original "w" value for the entire image. Since the offset to "w", (Ax + By), is always positive and increases with the absolute values of "x" and "y", the effective resolution will fall off linearly from the center of the image to its edges.
                                                                                                                                            Examples
                                                                                                                                            -
                                                                                                                                            VkViewport viewports[4];
                                                                                                                                            -VkRect2D scissors[4];
                                                                                                                                            -VkViewportWScalingNV scalings[4];
                                                                                                                                            +        
                                                                                                                                            +￿VkViewport viewports[4];
                                                                                                                                            +￿VkRect2D scissors[4];
                                                                                                                                            +￿VkViewportWScalingNV scalings[4];
                                                                                                                                             ￿
                                                                                                                                            -for (int i = 0; i < 4; i++) {
                                                                                                                                            +￿for (int i = 0; i < 4; i++) {
                                                                                                                                             ￿    int x = (i & 2) ? 0 : currentWindowWidth / 2;
                                                                                                                                             ￿    int y = (i & 1) ? 0 : currentWindowHeight / 2;
                                                                                                                                             ￿
                                                                                                                                            @@ -43,45 +44,46 @@ for (int i = 0; i < 4; i++) {
                                                                                                                                             ￿    const float factor = 0.15;
                                                                                                                                             ￿    scalings[i].xcoeff = ((i & 2) ? -1.0 : 1.0) * factor;
                                                                                                                                             ￿    scalings[i].ycoeff = ((i & 1) ? -1.0 : 1.0) * factor;
                                                                                                                                            -}
                                                                                                                                            +￿}
                                                                                                                                             ￿
                                                                                                                                            -VkPipelineViewportWScalingStateCreateInfoNV vpWScalingStateInfo = { VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV };
                                                                                                                                            +￿VkPipelineViewportWScalingStateCreateInfoNV vpWScalingStateInfo = { VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV };
                                                                                                                                             ￿
                                                                                                                                            -vpWScalingStateInfo.viewportWScalingEnable = VK_TRUE;
                                                                                                                                            -vpWScalingStateInfo.viewportCount = 4;
                                                                                                                                            -vpWScalingStateInfo.pViewportWScalings = &scalings[0];
                                                                                                                                            +￿vpWScalingStateInfo.viewportWScalingEnable = VK_TRUE;
                                                                                                                                            +￿vpWScalingStateInfo.viewportCount = 4;
                                                                                                                                            +￿vpWScalingStateInfo.pViewportWScalings = &scalings[0];
                                                                                                                                             ￿
                                                                                                                                            -VkPipelineViewportStateCreateInfo vpStateInfo = { VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO };
                                                                                                                                            -vpStateInfo.viewportCount = 4;
                                                                                                                                            -vpStateInfo.pViewports = &viewports[0];
                                                                                                                                            -vpStateInfo.scissorCount = 4;
                                                                                                                                            -vpStateInfo.pScissors = &scissors[0];
                                                                                                                                            -vpStateInfo.pNext = &vpWScalingStateInfo;
                                                                                                                                            +￿VkPipelineViewportStateCreateInfo vpStateInfo = { VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO }; +￿vpStateInfo.viewportCount = 4; +￿vpStateInfo.pViewports = &viewports[0]; +￿vpStateInfo.scissorCount = 4; +￿vpStateInfo.pScissors = &scissors[0]; +￿vpStateInfo.pNext = &vpWScalingStateInfo;
                                                                                                                                            Example shader to read from a w-scaled texture: -
                                                                                                                                            // Vertex Shader
                                                                                                                                            -// Draw a triangle that covers the whole screen
                                                                                                                                            -const vec4 positions[3] = vec4[3](vec4(-1, -1, 0, 1),
                                                                                                                                            +        
                                                                                                                                            +￿// Vertex Shader
                                                                                                                                            +￿// Draw a triangle that covers the whole screen
                                                                                                                                            +￿const vec4 positions[3] = vec4[3](vec4(-1, -1, 0, 1),
                                                                                                                                             ￿                                  vec4( 3, -1, 0, 1),
                                                                                                                                             ￿                                  vec4(-1,  3, 0, 1));
                                                                                                                                            -out vec2 uv;
                                                                                                                                            -void main()
                                                                                                                                            -{
                                                                                                                                            +￿out vec2 uv;
                                                                                                                                            +￿void main()
                                                                                                                                            +￿{
                                                                                                                                             ￿    vec4 pos = positions[ gl_VertexID ];
                                                                                                                                             ￿    gl_Position = pos;
                                                                                                                                             ￿    uv = pos.xy;
                                                                                                                                            -}
                                                                                                                                            +￿}
                                                                                                                                             ￿
                                                                                                                                            -// Fragment Shader
                                                                                                                                            -uniform sampler2D tex;
                                                                                                                                            -uniform float xcoeff;
                                                                                                                                            -uniform float ycoeff;
                                                                                                                                            -out vec4 Color;
                                                                                                                                            -in vec2 uv;
                                                                                                                                            +￿// Fragment Shader
                                                                                                                                            +￿uniform sampler2D tex;
                                                                                                                                            +￿uniform float xcoeff;
                                                                                                                                            +￿uniform float ycoeff;
                                                                                                                                            +￿out vec4 Color;
                                                                                                                                            +￿in vec2 uv;
                                                                                                                                             ￿
                                                                                                                                            -void main()
                                                                                                                                            -{
                                                                                                                                            +￿void main()
                                                                                                                                            +￿{
                                                                                                                                             ￿    // Handle uv as if upper right quadrant
                                                                                                                                             ￿    vec2 uvabs = abs(uv);
                                                                                                                                             ￿
                                                                                                                                            @@ -96,7 +98,7 @@ void main()
                                                                                                                                             ￿    P *= sign(uv);
                                                                                                                                             ￿
                                                                                                                                             ￿    Color = texture(tex, P * 0.5 + 0.5);
                                                                                                                                            -}
                                                                                                                                            +￿}
                                                                                                                                            Name String
                                                                                                                                            @@ -167,11 +169,12 @@ void main()
                                                                                                                                            C Specification
                                                                                                                                            If the bound pipeline state object was not created with the #DYNAMIC_STATE_VIEWPORT_W_SCALING_NV dynamic state enabled, viewport W scaling parameters are specified using the {@code pViewportWScalings} member of ##VkPipelineViewportWScalingStateCreateInfoNV in the pipeline state object. If the pipeline state object was created with the #DYNAMIC_STATE_VIEWPORT dynamic state enabled, the viewport transformation parameters are dynamically set and changed with the command: -
                                                                                                                                            void vkCmdSetViewportWScalingNV(
                                                                                                                                            +        
                                                                                                                                            +￿void vkCmdSetViewportWScalingNV(
                                                                                                                                             ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                             ￿    uint32_t                                    firstViewport,
                                                                                                                                             ￿    uint32_t                                    viewportCount,
                                                                                                                                            -￿    const VkViewportWScalingNV*                 pViewportWScalings);
                                                                                                                                            +￿ const VkViewportWScalingNV* pViewportWScalings);
                                                                                                                                            Description
                                                                                                                                            The viewport parameters taken from element i of {@code pViewportScalings} replace the current state for the viewport index firstViewport {plus} i, for i in [0, viewportCount). diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_dedicated_allocation.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_dedicated_allocation.kt index ddc0dcdf26..21d6e68a97 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_dedicated_allocation.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_dedicated_allocation.kt @@ -16,7 +16,8 @@ val NV_dedicated_allocation = "NVDedicatedAllocation".nativeClassVK("NV_dedicate This extension adds a few small structures to resource creation and memory allocation: a new structure that flags whether am image/buffer will have a dedicated allocation, and a structure indicating the image or buffer that an allocation will be bound to.
                                                                                                                                            Examples
                                                                                                                                            -
                                                                                                                                            ￿    // Create an image with
                                                                                                                                            +        
                                                                                                                                            +￿    // Create an image with
                                                                                                                                             ￿    // VkDedicatedAllocationImageCreateInfoNV::dedicatedAllocation
                                                                                                                                             ￿    // set to VK_TRUE
                                                                                                                                             ￿
                                                                                                                                            @@ -79,7 +80,7 @@ val NV_dedicated_allocation = "NVDedicatedAllocation".nativeClassVK("NV_dedicate
                                                                                                                                             ￿        device,
                                                                                                                                             ￿        image,
                                                                                                                                             ￿        memory,
                                                                                                                                            -￿        0);
                                                                                                                                            +￿ 0);
                                                                                                                                            Name String
                                                                                                                                            diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_external_memory.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_external_memory.kt index 23125fa2a5..c2d6cb944d 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_external_memory.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_external_memory.kt @@ -14,7 +14,8 @@ val NV_external_memory = "NVExternalMemory".nativeClassVK("NV_external_memory", Applications may wish to export memory to other Vulkan instances or other APIs, or import memory from other Vulkan instances or other APIs to enable Vulkan workloads to be split up across application module, process, or API boundaries. This extension enables applications to create exportable Vulkan memory objects such that the underlying resources can be referenced outside the Vulkan instance that created them.
                                                                                                                                            Examples
                                                                                                                                            -
                                                                                                                                            ￿    // TODO: Write some sample code here.
                                                                                                                                            +
                                                                                                                                            +￿    // TODO: Write some sample code here.
                                                                                                                                            Name String
                                                                                                                                            diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_external_memory_capabilities.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_external_memory_capabilities.kt index 19976ee558..45cdc41a62 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_external_memory_capabilities.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_external_memory_capabilities.kt @@ -112,7 +112,8 @@ val NV_external_memory_capabilities = "NVExternalMemoryCapabilities".nativeClass
                                                                                                                                            C Specification
                                                                                                                                            To determine the image capabilities compatible with an external memory handle type, call: -
                                                                                                                                            VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
                                                                                                                                            +        
                                                                                                                                            +￿VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
                                                                                                                                             ￿    VkPhysicalDevice                            physicalDevice,
                                                                                                                                             ￿    VkFormat                                    format,
                                                                                                                                             ￿    VkImageType                                 type,
                                                                                                                                            @@ -120,7 +121,7 @@ val NV_external_memory_capabilities = "NVExternalMemoryCapabilities".nativeClass
                                                                                                                                             ￿    VkImageUsageFlags                           usage,
                                                                                                                                             ￿    VkImageCreateFlags                          flags,
                                                                                                                                             ￿    VkExternalMemoryHandleTypeFlagsNV           externalHandleType,
                                                                                                                                            -￿    VkExternalImageFormatPropertiesNV*          pExternalImageFormatProperties);
                                                                                                                                            +￿ VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
                                                                                                                                            Description
                                                                                                                                            If {@code externalHandleType} is 0, {@code pExternalImageFormatProperties}::imageFormatProperties will return the same values as a call to #GetPhysicalDeviceImageFormatProperties(), and the other members of {@code pExternalImageFormatProperties} will all be 0. Otherwise, they are filled in as described for ##VkExternalImageFormatPropertiesNV. diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_external_memory_win32.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_external_memory_win32.kt index 32b0a46585..615bc9e55a 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_external_memory_win32.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_external_memory_win32.kt @@ -15,7 +15,8 @@ val NV_external_memory_win32 = "NVExternalMemoryWin32".nativeClassVK("NV_externa Applications may wish to export memory to other Vulkan instances or other APIs, or import memory from other Vulkan instances or other APIs to enable Vulkan workloads to be split up across application module, process, or API boundaries. This extension enables win32 applications to export win32 handles from Vulkan memory objects such that the underlying resources can be referenced outside the Vulkan instance that created them, and import win32 handles created in the Direct3D API to Vulkan memory objects.
                                                                                                                                            Examples
                                                                                                                                            -
                                                                                                                                            ￿    //
                                                                                                                                            +        
                                                                                                                                            +￿    //
                                                                                                                                             ￿    // Create an exportable memory object and export an external
                                                                                                                                             ￿    // handle from it.
                                                                                                                                             ￿    //
                                                                                                                                            @@ -145,7 +146,7 @@ val NV_external_memory_win32 = "NVExternalMemoryWin32".nativeClassVK("NV_externa
                                                                                                                                             ￿    }
                                                                                                                                             ￿
                                                                                                                                             ￿    // Get the external memory opaque FD handle
                                                                                                                                            -￿    vkGetMemoryWin32HandleNV(device, memory, &memoryHnd);
                                                                                                                                            +￿ vkGetMemoryWin32HandleNV(device, memory, &memoryHnd);
                                                                                                                                            Name String
                                                                                                                                            @@ -216,11 +217,12 @@ val NV_external_memory_win32 = "NVExternalMemoryWin32".nativeClassVK("NV_externa
                                                                                                                                            C Specification
                                                                                                                                            To retrieve the handle corresponding to a device memory object created with ##VkExportMemoryAllocateInfoNV{@code ::handleTypes} set to include #EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV or #EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV, call: -
                                                                                                                                            VkResult vkGetMemoryWin32HandleNV(
                                                                                                                                            +        
                                                                                                                                            +￿VkResult vkGetMemoryWin32HandleNV(
                                                                                                                                             ￿    VkDevice                                    device,
                                                                                                                                             ￿    VkDeviceMemory                              memory,
                                                                                                                                             ￿    VkExternalMemoryHandleTypeFlagsNV           handleType,
                                                                                                                                            -￿    HANDLE*                                     pHandle);
                                                                                                                                            +￿ HANDLE* pHandle);
                                                                                                                                            Valid Usage
                                                                                                                                              diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_geometry_shader_passthrough.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_geometry_shader_passthrough.kt index d0b01ce5bb..550283dafc 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_geometry_shader_passthrough.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_geometry_shader_passthrough.kt @@ -26,21 +26,22 @@ val NV_geometry_shader_passthrough = "NVGeometryShaderPassthrough".nativeClassVK
                                                                                                                                              Sample Code
                                                                                                                                              Consider the following simple geometry shader in unextended GLSL: -
                                                                                                                                              layout(triangles) in;
                                                                                                                                              -layout(triangle_strip) out;
                                                                                                                                              -layout(max_vertices=3) out;
                                                                                                                                              +        
                                                                                                                                              +￿layout(triangles) in;
                                                                                                                                              +￿layout(triangle_strip) out;
                                                                                                                                              +￿layout(max_vertices=3) out;
                                                                                                                                               ￿
                                                                                                                                              -in Inputs {
                                                                                                                                              +￿in Inputs {
                                                                                                                                               ￿    vec2 texcoord;
                                                                                                                                               ￿    vec4 baseColor;
                                                                                                                                              -} v_in[];
                                                                                                                                              -out Outputs {
                                                                                                                                              +￿} v_in[];
                                                                                                                                              +￿out Outputs {
                                                                                                                                               ￿    vec2 texcoord;
                                                                                                                                               ￿    vec4 baseColor;
                                                                                                                                              -};
                                                                                                                                              +￿};
                                                                                                                                               ￿
                                                                                                                                              -void main()
                                                                                                                                              -{
                                                                                                                                              +￿void main()
                                                                                                                                              +￿{
                                                                                                                                               ￿    int layer = compute_layer();
                                                                                                                                               ￿    for (int i = 0; i < 3; i++) {
                                                                                                                                               ￿        gl_Position = gl_in[i].gl_Position;
                                                                                                                                              @@ -49,36 +50,37 @@ void main()
                                                                                                                                               ￿        gl_Layer = layer;
                                                                                                                                               ￿        EmitVertex();
                                                                                                                                               ￿    }
                                                                                                                                              -}
                                                                                                                                              +￿}
                                                                                                                                              In this shader, the inputs "gl_Position", "Inputs.texcoord", and "Inputs.baseColor" are simply copied from the input vertex to the corresponding output vertex. The only "interesting" work done by the geometry shader is computing and emitting a gl_Layer value for the primitive. The following geometry shader, using this extension, is equivalent: -
                                                                                                                                              \#extension GL_NV_geometry_shader_passthrough : require
                                                                                                                                              +        
                                                                                                                                              +￿\#extension GL_NV_geometry_shader_passthrough : require
                                                                                                                                               ￿
                                                                                                                                              -layout(triangles) in;
                                                                                                                                              -// No output primitive layout qualifiers required.
                                                                                                                                              +￿layout(triangles) in;
                                                                                                                                              +￿// No output primitive layout qualifiers required.
                                                                                                                                               ￿
                                                                                                                                              -// Redeclare gl_PerVertex to pass through "gl_Position".
                                                                                                                                              -layout(passthrough) in gl_PerVertex {
                                                                                                                                              +￿// Redeclare gl_PerVertex to pass through "gl_Position".
                                                                                                                                              +￿layout(passthrough) in gl_PerVertex {
                                                                                                                                               ￿    vec4 gl_Position;
                                                                                                                                              -} gl_in[];
                                                                                                                                              +￿} gl_in[];
                                                                                                                                               ￿
                                                                                                                                              -// Declare "Inputs" with "passthrough" to automatically copy members.
                                                                                                                                              -layout(passthrough) in Inputs {
                                                                                                                                              +￿// Declare "Inputs" with "passthrough" to automatically copy members.
                                                                                                                                              +￿layout(passthrough) in Inputs {
                                                                                                                                               ￿    vec2 texcoord;
                                                                                                                                               ￿    vec4 baseColor;
                                                                                                                                              -} v_in[];
                                                                                                                                              +￿} v_in[];
                                                                                                                                               ￿
                                                                                                                                              -// No output block declaration required.
                                                                                                                                              +￿// No output block declaration required.
                                                                                                                                               ￿
                                                                                                                                              -void main()
                                                                                                                                              -{
                                                                                                                                              +￿void main()
                                                                                                                                              +￿{
                                                                                                                                               ￿    // The shader simply computes and writes gl_Layer.  We don't
                                                                                                                                               ￿    // loop over three vertices or call EmitVertex().
                                                                                                                                               ￿    gl_Layer = compute_layer();
                                                                                                                                              -}
                                                                                                                                              +￿}
                                                                                                                                              Name String
                                                                                                                                              diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_glsl_shader.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_glsl_shader.kt index 9420184f91..9c113cdf65 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_glsl_shader.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_glsl_shader.kt @@ -18,7 +18,8 @@ val NV_glsl_shader = "NVGLSLShader".nativeClassVK("NV_glsl_shader", type = "devi Passing in GLSL code -
                                                                                                                                              ￿    char const vss[] =
                                                                                                                                              +        
                                                                                                                                              +￿    char const vss[] =
                                                                                                                                               ￿        "\#version 450 core\n"
                                                                                                                                               ￿        "layout(location = 0) in vec2 aVertex;\n"
                                                                                                                                               ￿        "layout(location = 1) in vec4 aColor;\n"
                                                                                                                                              @@ -33,7 +34,7 @@ val NV_glsl_shader = "NVGLSLShader".nativeClassVK("NV_glsl_shader", type = "devi
                                                                                                                                               ￿    vertexShaderInfo.codeSize = sizeof vss;
                                                                                                                                               ￿    vertexShaderInfo.pCode = vss;
                                                                                                                                               ￿    VkShaderModule vertexShader;
                                                                                                                                              -￿    vkCreateShaderModule(device, &vertexShaderInfo, 0, &vertexShader);
                                                                                                                                              +￿ vkCreateShaderModule(device, &vertexShaderInfo, 0, &vertexShader);
                                                                                                                                              Name String
                                                                                                                                              diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_win32_keyed_mutex.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_win32_keyed_mutex.kt index a76c744464..6384d7fa1e 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_win32_keyed_mutex.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/NV_win32_keyed_mutex.kt @@ -14,7 +14,8 @@ val NV_win32_keyed_mutex = "NVWin32KeyedMutex".nativeClassVK("NV_win32_keyed_mut Applications that wish to import Direct3D 11 memory objects into the Vulkan API may wish to use the native keyed mutex mechanism to synchronize access to the memory between Vulkan and Direct3D. This extension provides a way for an application to access the keyed mutex associated with an imported Vulkan memory object when submitting command buffers to a queue.
                                                                                                                                              Examples
                                                                                                                                              -
                                                                                                                                              ￿    //
                                                                                                                                              +        
                                                                                                                                              +￿    //
                                                                                                                                               ￿    // Import a memory object from Direct3D 11, and synchronize
                                                                                                                                               ￿    // access to it in Vulkan using keyed mutex objects.
                                                                                                                                               ￿    //
                                                                                                                                              @@ -141,7 +142,7 @@ val NV_win32_keyed_mutex = "NVWin32KeyedMutex".nativeClassVK("NV_win32_keyed_mut
                                                                                                                                               ￿    VkSubmitInfo submit_info = { VK_STRUCTURE_TYPE_SUBMIT_INFO, &keyedMutex };
                                                                                                                                               ￿    submit_info.commandBufferCount = 1;
                                                                                                                                               ￿    submit_info.pCommandBuffers = &cmd_buf;
                                                                                                                                              -￿    vkQueueSubmit(queue, 1, &submit_info, VK_NULL_HANDLE);
                                                                                                                                              +￿ vkQueueSubmit(queue, 1, &submit_info, VK_NULL_HANDLE);
                                                                                                                                              Name
                                                                                                                                              diff --git a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/VK10.kt b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/VK10.kt index 274938c342..b1e60c5f10 100644 --- a/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/VK10.kt +++ b/modules/templates/src/main/kotlin/org/lwjgl/vulkan/templates/VK10.kt @@ -2617,10 +2617,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                              C Specification
                                                                                                                                              To create an instance object, call: -
                                                                                                                                              VkResult vkCreateInstance(
                                                                                                                                              +        
                                                                                                                                              +￿VkResult vkCreateInstance(
                                                                                                                                               ￿    const VkInstanceCreateInfo*                 pCreateInfo,
                                                                                                                                               ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                              -￿    VkInstance*                                 pInstance);
                                                                                                                                              +￿ VkInstance* pInstance);
                                                                                                                                              Description
                                                                                                                                              #CreateInstance() creates the instance, then enables and initializes global layers and extensions requested by the application. If an extension is provided by a layer, both the layer and extension must be specified at #CreateInstance() time. If a specified layer cannot be found, no {@code VkInstance} will be created and the function will return #ERROR_LAYER_NOT_PRESENT. Likewise, if a specified extension cannot be found the call will return #ERROR_EXTENSION_NOT_PRESENT. @@ -2667,9 +2668,10 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                              C Specification
                                                                                                                                              To destroy an instance, call: -
                                                                                                                                              void vkDestroyInstance(
                                                                                                                                              +        
                                                                                                                                              +￿void vkDestroyInstance(
                                                                                                                                               ￿    VkInstance                                  instance,
                                                                                                                                              -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                              +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                              Valid Usage
                                                                                                                                                @@ -2705,10 +2707,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                C Specification
                                                                                                                                                To retrieve a list of physical device objects representing the physical devices installed in the system, call: -
                                                                                                                                                VkResult vkEnumeratePhysicalDevices(
                                                                                                                                                +        
                                                                                                                                                +￿VkResult vkEnumeratePhysicalDevices(
                                                                                                                                                 ￿    VkInstance                                  instance,
                                                                                                                                                 ￿    uint32_t*                                   pPhysicalDeviceCount,
                                                                                                                                                -￿    VkPhysicalDevice*                           pPhysicalDevices);
                                                                                                                                                +￿ VkPhysicalDevice* pPhysicalDevices);
                                                                                                                                                Description
                                                                                                                                                If {@code pPhysicalDevices} is {@code NULL}, then the number of physical devices available is returned in {@code pPhysicalDeviceCount}. Otherwise, {@code pPhysicalDeviceCount} must point to a variable set by the user to the number of elements in the {@code pPhysicalDevices} array, and on return the variable is overwritten with the number of handles actually written to {@code pPhysicalDevices}. If {@code pPhysicalDeviceCount} is less than the number of physical devices available, at most {@code pPhysicalDeviceCount} structures will be written. If {@code pPhysicalDeviceCount} is smaller than the number of physical devices available, #INCOMPLETE will be returned instead of #SUCCESS, to indicate that not all the available physical devices were returned. @@ -2750,9 +2753,10 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                C Specification
                                                                                                                                                To query supported features, call: -
                                                                                                                                                void vkGetPhysicalDeviceFeatures(
                                                                                                                                                +        
                                                                                                                                                +￿void vkGetPhysicalDeviceFeatures(
                                                                                                                                                 ￿    VkPhysicalDevice                            physicalDevice,
                                                                                                                                                -￿    VkPhysicalDeviceFeatures*                   pFeatures);
                                                                                                                                                +￿ VkPhysicalDeviceFeatures* pFeatures);
                                                                                                                                                Valid Usage (Implicit)
                                                                                                                                                  @@ -2776,10 +2780,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                  C Specification
                                                                                                                                                  To query supported format features which are properties of the physical device, call: -
                                                                                                                                                  void vkGetPhysicalDeviceFormatProperties(
                                                                                                                                                  +        
                                                                                                                                                  +￿void vkGetPhysicalDeviceFormatProperties(
                                                                                                                                                   ￿    VkPhysicalDevice                            physicalDevice,
                                                                                                                                                   ￿    VkFormat                                    format,
                                                                                                                                                  -￿    VkFormatProperties*                         pFormatProperties);
                                                                                                                                                  +￿ VkFormatProperties* pFormatProperties);
                                                                                                                                                  Valid Usage (Implicit)
                                                                                                                                                    @@ -2805,14 +2810,15 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                    C Specification
                                                                                                                                                    To query additional capabilities specific to image types, call: -
                                                                                                                                                    VkResult vkGetPhysicalDeviceImageFormatProperties(
                                                                                                                                                    +        
                                                                                                                                                    +￿VkResult vkGetPhysicalDeviceImageFormatProperties(
                                                                                                                                                     ￿    VkPhysicalDevice                            physicalDevice,
                                                                                                                                                     ￿    VkFormat                                    format,
                                                                                                                                                     ￿    VkImageType                                 type,
                                                                                                                                                     ￿    VkImageTiling                               tiling,
                                                                                                                                                     ￿    VkImageUsageFlags                           usage,
                                                                                                                                                     ￿    VkImageCreateFlags                          flags,
                                                                                                                                                    -￿    VkImageFormatProperties*                    pImageFormatProperties);
                                                                                                                                                    +￿ VkImageFormatProperties* pImageFormatProperties);
                                                                                                                                                    Description
                                                                                                                                                    The {@code format}, {@code type}, {@code tiling}, {@code usage}, and {@code flags} parameters correspond to parameters that would be consumed by #CreateImage() (as members of ##VkImageCreateInfo). @@ -2869,9 +2875,10 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                    C Specification
                                                                                                                                                    To query general properties of physical devices once enumerated, call: -
                                                                                                                                                    void vkGetPhysicalDeviceProperties(
                                                                                                                                                    +        
                                                                                                                                                    +￿void vkGetPhysicalDeviceProperties(
                                                                                                                                                     ￿    VkPhysicalDevice                            physicalDevice,
                                                                                                                                                    -￿    VkPhysicalDeviceProperties*                 pProperties);
                                                                                                                                                    +￿ VkPhysicalDeviceProperties* pProperties);
                                                                                                                                                    Valid Usage (Implicit)
                                                                                                                                                      @@ -2895,10 +2902,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                      C Specification
                                                                                                                                                      To query properties of queues available on a physical device, call: -
                                                                                                                                                      void vkGetPhysicalDeviceQueueFamilyProperties(
                                                                                                                                                      +        
                                                                                                                                                      +￿void vkGetPhysicalDeviceQueueFamilyProperties(
                                                                                                                                                       ￿    VkPhysicalDevice                            physicalDevice,
                                                                                                                                                       ￿    uint32_t*                                   pQueueFamilyPropertyCount,
                                                                                                                                                      -￿    VkQueueFamilyProperties*                    pQueueFamilyProperties);
                                                                                                                                                      +￿ VkQueueFamilyProperties* pQueueFamilyProperties);
                                                                                                                                                      Description
                                                                                                                                                      If {@code pQueueFamilyProperties} is {@code NULL}, then the number of queue families available is returned in {@code pQueueFamilyPropertyCount}. Otherwise, {@code pQueueFamilyPropertyCount} must point to a variable set by the user to the number of elements in the {@code pQueueFamilyProperties} array, and on return the variable is overwritten with the number of structures actually written to {@code pQueueFamilyProperties}. If {@code pQueueFamilyPropertyCount} is less than the number of queue families available, at most {@code pQueueFamilyPropertyCount} structures will be written. @@ -2927,9 +2935,10 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                      C Specification
                                                                                                                                                      To query memory properties, call: -
                                                                                                                                                      void vkGetPhysicalDeviceMemoryProperties(
                                                                                                                                                      +        
                                                                                                                                                      +￿void vkGetPhysicalDeviceMemoryProperties(
                                                                                                                                                       ￿    VkPhysicalDevice                            physicalDevice,
                                                                                                                                                      -￿    VkPhysicalDeviceMemoryProperties*           pMemoryProperties);
                                                                                                                                                      +￿ VkPhysicalDeviceMemoryProperties* pMemoryProperties);
                                                                                                                                                      Valid Usage (Implicit)
                                                                                                                                                        @@ -2953,9 +2962,10 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                        C Specification
                                                                                                                                                        Vulkan commands are not necessarily exposed statically on a platform. Function pointers for all Vulkan commands can be obtained with the command: -
                                                                                                                                                        PFN_vkVoidFunction vkGetInstanceProcAddr(
                                                                                                                                                        +        
                                                                                                                                                        +￿PFN_vkVoidFunction vkGetInstanceProcAddr(
                                                                                                                                                         ￿    VkInstance                                  instance,
                                                                                                                                                        -￿    const char*                                 pName);
                                                                                                                                                        +￿ const char* pName);
                                                                                                                                                        Description
                                                                                                                                                        #GetInstanceProcAddr() itself is obtained in a platform- and loader- specific manner. Typically, the loader library will export this command as a function symbol, so applications can link against the loader library, or load it dynamically and look up the symbol using platform-specific APIs. Loaders are encouraged to export function symbols for all other core Vulkan commands as well; if this is done, then applications that use only the core Vulkan commands have no need to use #GetInstanceProcAddr(). @@ -3011,9 +3021,10 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                        C Specification
                                                                                                                                                        In order to support systems with multiple Vulkan implementations comprising heterogeneous collections of hardware and software, the function pointers returned by #GetInstanceProcAddr() may point to dispatch code, which calls a different real implementation for different {@code VkDevice} objects (and objects created from them). The overhead of this internal dispatch can be avoided by obtaining device-specific function pointers for any commands that use a device or device-child object as their dispatchable object. Such function pointers can be obtained with the command: -
                                                                                                                                                        PFN_vkVoidFunction vkGetDeviceProcAddr(
                                                                                                                                                        +        
                                                                                                                                                        +￿PFN_vkVoidFunction vkGetDeviceProcAddr(
                                                                                                                                                         ￿    VkDevice                                    device,
                                                                                                                                                        -￿    const char*                                 pName);
                                                                                                                                                        +￿ const char* pName);
                                                                                                                                                        Description
                                                                                                                                                        The returned function pointer is of type {@code PFN_vkVoidFunction}, and must be cast to the type of the command being queried. @@ -3060,11 +3071,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                        C Specification
                                                                                                                                                        A logical device is created as a connection to a physical device. To create a logical device, call: -
                                                                                                                                                        VkResult vkCreateDevice(
                                                                                                                                                        +        
                                                                                                                                                        +￿VkResult vkCreateDevice(
                                                                                                                                                         ￿    VkPhysicalDevice                            physicalDevice,
                                                                                                                                                         ￿    const VkDeviceCreateInfo*                   pCreateInfo,
                                                                                                                                                         ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                                        -￿    VkDevice*                                   pDevice);
                                                                                                                                                        +￿ VkDevice* pDevice);
                                                                                                                                                        Description
                                                                                                                                                        Multiple logical devices can be created from the same physical device. Logical device creation may fail due to lack of device-specific resources (in addition to the other errors). If that occurs, #CreateDevice() will return #ERROR_TOO_MANY_OBJECTS. @@ -3114,9 +3126,10 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                        C Specification
                                                                                                                                                        To destroy a device, call: -
                                                                                                                                                        void vkDestroyDevice(
                                                                                                                                                        +        
                                                                                                                                                        +￿void vkDestroyDevice(
                                                                                                                                                         ￿    VkDevice                                    device,
                                                                                                                                                        -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                                        +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                                        Description
                                                                                                                                                        To ensure that no work is active on the device, #DeviceWaitIdle() can be used to gate the destruction of the device. Prior to destroying a device, an application is responsible for destroying/freeing any Vulkan objects that were created using that device as the first parameter of the corresponding ftext:vkCreate* or ftext:vkAllocate* command. @@ -3161,10 +3174,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                        C Specification
                                                                                                                                                        To query the available instance extensions, call: -
                                                                                                                                                        VkResult vkEnumerateInstanceExtensionProperties(
                                                                                                                                                        +        
                                                                                                                                                        +￿VkResult vkEnumerateInstanceExtensionProperties(
                                                                                                                                                         ￿    const char*                                 pLayerName,
                                                                                                                                                         ￿    uint32_t*                                   pPropertyCount,
                                                                                                                                                        -￿    VkExtensionProperties*                      pProperties);
                                                                                                                                                        +￿ VkExtensionProperties* pProperties);
                                                                                                                                                        Description
                                                                                                                                                        When {@code pLayerName} parameter is NULL, only extensions provided by the Vulkan implementation or by implicitly enabled layers are returned. When {@code pLayerName} is the name of a layer, the instance extensions provided by that layer are returned. @@ -3213,11 +3227,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                        C Specification
                                                                                                                                                        To query the extensions available to a given physical device, call: -
                                                                                                                                                        VkResult vkEnumerateDeviceExtensionProperties(
                                                                                                                                                        +        
                                                                                                                                                        +￿VkResult vkEnumerateDeviceExtensionProperties(
                                                                                                                                                         ￿    VkPhysicalDevice                            physicalDevice,
                                                                                                                                                         ￿    const char*                                 pLayerName,
                                                                                                                                                         ￿    uint32_t*                                   pPropertyCount,
                                                                                                                                                        -￿    VkExtensionProperties*                      pProperties);
                                                                                                                                                        +￿ VkExtensionProperties* pProperties);
                                                                                                                                                        Description
                                                                                                                                                        When {@code pLayerName} parameter is NULL, only extensions provided by the Vulkan implementation or by implicitly enabled layers are returned. When {@code pLayerName} is the name of a layer, the device extensions provided by that layer are returned. @@ -3266,9 +3281,10 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                        C Specification
                                                                                                                                                        To query the available layers, call: -
                                                                                                                                                        VkResult vkEnumerateInstanceLayerProperties(
                                                                                                                                                        +        
                                                                                                                                                        +￿VkResult vkEnumerateInstanceLayerProperties(
                                                                                                                                                         ￿    uint32_t*                                   pPropertyCount,
                                                                                                                                                        -￿    VkLayerProperties*                          pProperties);
                                                                                                                                                        +￿ VkLayerProperties* pProperties);
                                                                                                                                                        Description
                                                                                                                                                        If {@code pProperties} is {@code NULL}, then the number of layer properties available is returned in {@code pPropertyCount}. Otherwise, {@code pPropertyCount} must point to a variable set by the user to the number of elements in the {@code pProperties} array, and on return the variable is overwritten with the number of structures actually written to {@code pProperties}. If {@code pPropertyCount} is less than the number of layer properties available, at most {@code pPropertyCount} structures will be written. If {@code pPropertyCount} is smaller than the number of layers available, #INCOMPLETE will be returned instead of #SUCCESS, to indicate that not all the available layer properties were returned. @@ -3312,10 +3328,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                        C Specification
                                                                                                                                                        To enumerate device layers, call: -
                                                                                                                                                        VkResult vkEnumerateDeviceLayerProperties(
                                                                                                                                                        +        
                                                                                                                                                        +￿VkResult vkEnumerateDeviceLayerProperties(
                                                                                                                                                         ￿    VkPhysicalDevice                            physicalDevice,
                                                                                                                                                         ￿    uint32_t*                                   pPropertyCount,
                                                                                                                                                        -￿    VkLayerProperties*                          pProperties);
                                                                                                                                                        +￿ VkLayerProperties* pProperties);
                                                                                                                                                        Description
                                                                                                                                                        If {@code pProperties} is {@code NULL}, then the number of layer properties available is returned in {@code pPropertyCount}. Otherwise, {@code pPropertyCount} must point to a variable set by the user to the number of elements in the {@code pProperties} array, and on return the variable is overwritten with the number of structures actually written to {@code pProperties}. If {@code pPropertyCount} is less than the number of layer properties available, at most {@code pPropertyCount} structures will be written. If {@code pPropertyCount} is smaller than the number of layers available, #INCOMPLETE will be returned instead of #SUCCESS, to indicate that not all the available layer properties were returned. @@ -3363,11 +3380,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                        C Specification
                                                                                                                                                        To retrieve a handle to a VkQueue object, call: -
                                                                                                                                                        void vkGetDeviceQueue(
                                                                                                                                                        +        
                                                                                                                                                        +￿void vkGetDeviceQueue(
                                                                                                                                                         ￿    VkDevice                                    device,
                                                                                                                                                         ￿    uint32_t                                    queueFamilyIndex,
                                                                                                                                                         ￿    uint32_t                                    queueIndex,
                                                                                                                                                        -￿    VkQueue*                                    pQueue);
                                                                                                                                                        +￿ VkQueue* pQueue);
                                                                                                                                                        Valid Usage
                                                                                                                                                          @@ -3396,11 +3414,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                          C Specification
                                                                                                                                                          To submit command buffers to a queue, call: -
                                                                                                                                                          VkResult vkQueueSubmit(
                                                                                                                                                          +        
                                                                                                                                                          +￿VkResult vkQueueSubmit(
                                                                                                                                                           ￿    VkQueue                                     queue,
                                                                                                                                                           ￿    uint32_t                                    submitCount,
                                                                                                                                                           ￿    const VkSubmitInfo*                         pSubmits,
                                                                                                                                                          -￿    VkFence                                     fence);
                                                                                                                                                          +￿ VkFence fence);
                                                                                                                                                          Description
                                                                                                                                                          Note
                                                                                                                                                          @@ -3490,8 +3509,9 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                          C Specification
                                                                                                                                                          To wait on the host for the completion of outstanding queue operations for a given queue, call: -
                                                                                                                                                          VkResult vkQueueWaitIdle(
                                                                                                                                                          -￿    VkQueue                                     queue);
                                                                                                                                                          +
                                                                                                                                                          +￿VkResult vkQueueWaitIdle(
                                                                                                                                                          +￿    VkQueue                                     queue);
                                                                                                                                                          Description
                                                                                                                                                          #QueueWaitIdle() is equivalent to submitting a fence to a queue and waiting with an infinite timeout for that fence to signal. @@ -3534,8 +3554,9 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                          C Specification
                                                                                                                                                          To wait on the host for the completion of outstanding queue operations for all queues on a given logical device, call: -
                                                                                                                                                          VkResult vkDeviceWaitIdle(
                                                                                                                                                          -￿    VkDevice                                    device);
                                                                                                                                                          +
                                                                                                                                                          +￿VkResult vkDeviceWaitIdle(
                                                                                                                                                          +￿    VkDevice                                    device);
                                                                                                                                                          Description
                                                                                                                                                          #DeviceWaitIdle() is equivalent to calling #QueueWaitIdle() for all queues owned by {@code device}. @@ -3579,11 +3600,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                          C Specification
                                                                                                                                                          To allocate memory objects, call: -
                                                                                                                                                          VkResult vkAllocateMemory(
                                                                                                                                                          +        
                                                                                                                                                          +￿VkResult vkAllocateMemory(
                                                                                                                                                           ￿    VkDevice                                    device,
                                                                                                                                                           ￿    const VkMemoryAllocateInfo*                 pAllocateInfo,
                                                                                                                                                           ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                                          -￿    VkDeviceMemory*                             pMemory);
                                                                                                                                                          +￿ VkDeviceMemory* pMemory);
                                                                                                                                                          Description
                                                                                                                                                          Allocations returned by #AllocateMemory() are guaranteed to meet any alignment requirement by the implementation. For example, if an implementation requires 128 byte alignment for images and 64 byte alignment for buffers, the device memory returned through this mechanism would be 128-byte aligned. This ensures that applications can correctly suballocate objects of different types (with potentially different alignment requirements) in the same memory object. @@ -3643,10 +3665,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                          C Specification
                                                                                                                                                          To free a memory object, call: -
                                                                                                                                                          void vkFreeMemory(
                                                                                                                                                          +        
                                                                                                                                                          +￿void vkFreeMemory(
                                                                                                                                                           ￿    VkDevice                                    device,
                                                                                                                                                           ￿    VkDeviceMemory                              memory,
                                                                                                                                                          -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                                          +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                                          Description
                                                                                                                                                          Before freeing a memory object, an application must ensure the memory object is no longer in use by the device--for example by command buffers queued for execution. The memory can remain bound to images or buffers at the time the memory object is freed, but any further use of them (on host or device) for anything other than destroying those objects will result in undefined behavior. If there are still any bound images or buffers, the memory may not be immediately released by the implementation, but must be released by the time all bound images and buffers have been destroyed. Once memory is released, it is returned to the heap from which it was allocated. @@ -3690,13 +3713,14 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                          C Specification
                                                                                                                                                          To retrieve a host virtual address pointer to a region of a mappable memory object, call: -
                                                                                                                                                          VkResult vkMapMemory(
                                                                                                                                                          +        
                                                                                                                                                          +￿VkResult vkMapMemory(
                                                                                                                                                           ￿    VkDevice                                    device,
                                                                                                                                                           ￿    VkDeviceMemory                              memory,
                                                                                                                                                           ￿    VkDeviceSize                                offset,
                                                                                                                                                           ￿    VkDeviceSize                                size,
                                                                                                                                                           ￿    VkMemoryMapFlags                            flags,
                                                                                                                                                          -￿    void**                                      ppData);
                                                                                                                                                          +￿ void** ppData);
                                                                                                                                                          Description
                                                                                                                                                          It is an application error to call #MapMemory() on a memory object that is already mapped. @@ -3769,9 +3793,10 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                          C Specification
                                                                                                                                                          To unmap a memory object once host access to it is no longer needed by the application, call: -
                                                                                                                                                          void vkUnmapMemory(
                                                                                                                                                          +        
                                                                                                                                                          +￿void vkUnmapMemory(
                                                                                                                                                           ￿    VkDevice                                    device,
                                                                                                                                                          -￿    VkDeviceMemory                              memory);
                                                                                                                                                          +￿ VkDeviceMemory memory);
                                                                                                                                                          Valid Usage
                                                                                                                                                            @@ -3803,10 +3828,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                            C Specification
                                                                                                                                                            To flush ranges of non-coherent memory from the host caches, call: -
                                                                                                                                                            VkResult vkFlushMappedMemoryRanges(
                                                                                                                                                            +        
                                                                                                                                                            +￿VkResult vkFlushMappedMemoryRanges(
                                                                                                                                                             ￿    VkDevice                                    device,
                                                                                                                                                             ￿    uint32_t                                    memoryRangeCount,
                                                                                                                                                            -￿    const VkMappedMemoryRange*                  pMemoryRanges);
                                                                                                                                                            +￿ const VkMappedMemoryRange* pMemoryRanges);
                                                                                                                                                            Description
                                                                                                                                                            #FlushMappedMemoryRanges() guarantees that host writes to the memory ranges described by {@code pMemoryRanges} can be made available to device access, via availability operations from the #ACCESS_HOST_WRITE_BIT access type. @@ -3853,10 +3879,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                            C Specification
                                                                                                                                                            To invalidate ranges of non-coherent memory from the host caches, call: -
                                                                                                                                                            VkResult vkInvalidateMappedMemoryRanges(
                                                                                                                                                            +        
                                                                                                                                                            +￿VkResult vkInvalidateMappedMemoryRanges(
                                                                                                                                                             ￿    VkDevice                                    device,
                                                                                                                                                             ￿    uint32_t                                    memoryRangeCount,
                                                                                                                                                            -￿    const VkMappedMemoryRange*                  pMemoryRanges);
                                                                                                                                                            +￿ const VkMappedMemoryRange* pMemoryRanges);
                                                                                                                                                            Description
                                                                                                                                                            #InvalidateMappedMemoryRanges() guarantees that device writes to the memory ranges described by {@code pMemoryRanges}, which have been made visible to the #ACCESS_HOST_WRITE_BIT and #ACCESS_HOST_READ_BIT access types, are made visible to the host. If a range of non-coherent memory is written by the host and then invalidated without first being flushed, its contents are undefined. @@ -3903,10 +3930,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                            C Specification
                                                                                                                                                            To determine the amount of lazily-allocated memory that is currently committed for a memory object, call: -
                                                                                                                                                            void vkGetDeviceMemoryCommitment(
                                                                                                                                                            +        
                                                                                                                                                            +￿void vkGetDeviceMemoryCommitment(
                                                                                                                                                             ￿    VkDevice                                    device,
                                                                                                                                                             ￿    VkDeviceMemory                              memory,
                                                                                                                                                            -￿    VkDeviceSize*                               pCommittedMemoryInBytes);
                                                                                                                                                            +￿ VkDeviceSize* pCommittedMemoryInBytes);
                                                                                                                                                            Description
                                                                                                                                                            The implementation may update the commitment at any time, and the value returned by this query may be out of date. @@ -3942,11 +3970,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                            C Specification
                                                                                                                                                            To attach memory to a buffer object, call: -
                                                                                                                                                            VkResult vkBindBufferMemory(
                                                                                                                                                            +        
                                                                                                                                                            +￿VkResult vkBindBufferMemory(
                                                                                                                                                             ￿    VkDevice                                    device,
                                                                                                                                                             ￿    VkBuffer                                    buffer,
                                                                                                                                                             ￿    VkDeviceMemory                              memory,
                                                                                                                                                            -￿    VkDeviceSize                                memoryOffset);
                                                                                                                                                            +￿ VkDeviceSize memoryOffset);
                                                                                                                                                            Description
                                                                                                                                                            #BindBufferMemory() is equivalent to passing the same parameters through ##VkBindBufferMemoryInfoKHX to #BindBufferMemory2KHX(), with {@code deviceIndexCount} equal to zero. @@ -4009,11 +4038,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                            C Specification
                                                                                                                                                            To attach memory to an image object, call: -
                                                                                                                                                            VkResult vkBindImageMemory(
                                                                                                                                                            +        
                                                                                                                                                            +￿VkResult vkBindImageMemory(
                                                                                                                                                             ￿    VkDevice                                    device,
                                                                                                                                                             ￿    VkImage                                     image,
                                                                                                                                                             ￿    VkDeviceMemory                              memory,
                                                                                                                                                            -￿    VkDeviceSize                                memoryOffset);
                                                                                                                                                            +￿ VkDeviceSize memoryOffset);
                                                                                                                                                            Description
                                                                                                                                                            #BindImageMemory() is equivalent to passing the same parameters through ##VkBindImageMemoryInfoKHX to #BindImageMemory2KHX(), with {@code deviceIndexCount} and {@code SFRRectCount} equal to zero. @@ -4073,10 +4103,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                            C Specification
                                                                                                                                                            To determine the memory requirements for a buffer resource, call: -
                                                                                                                                                            void vkGetBufferMemoryRequirements(
                                                                                                                                                            +        
                                                                                                                                                            +￿void vkGetBufferMemoryRequirements(
                                                                                                                                                             ￿    VkDevice                                    device,
                                                                                                                                                             ￿    VkBuffer                                    buffer,
                                                                                                                                                            -￿    VkMemoryRequirements*                       pMemoryRequirements);
                                                                                                                                                            +￿ VkMemoryRequirements* pMemoryRequirements);
                                                                                                                                                            Valid Usage (Implicit)
                                                                                                                                                              @@ -4103,10 +4134,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                              C Specification
                                                                                                                                                              To determine the memory requirements for an image resource, call: -
                                                                                                                                                              void vkGetImageMemoryRequirements(
                                                                                                                                                              +        
                                                                                                                                                              +￿void vkGetImageMemoryRequirements(
                                                                                                                                                               ￿    VkDevice                                    device,
                                                                                                                                                               ￿    VkImage                                     image,
                                                                                                                                                              -￿    VkMemoryRequirements*                       pMemoryRequirements);
                                                                                                                                                              +￿ VkMemoryRequirements* pMemoryRequirements);
                                                                                                                                                              Valid Usage (Implicit)
                                                                                                                                                                @@ -4135,11 +4167,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                C Specification
                                                                                                                                                                To query sparse memory requirements for an image, call: -
                                                                                                                                                                void vkGetImageSparseMemoryRequirements(
                                                                                                                                                                +        
                                                                                                                                                                +￿void vkGetImageSparseMemoryRequirements(
                                                                                                                                                                 ￿    VkDevice                                    device,
                                                                                                                                                                 ￿    VkImage                                     image,
                                                                                                                                                                 ￿    uint32_t*                                   pSparseMemoryRequirementCount,
                                                                                                                                                                -￿    VkSparseImageMemoryRequirements*            pSparseMemoryRequirements);
                                                                                                                                                                +￿ VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
                                                                                                                                                                Description
                                                                                                                                                                If {@code pSparseMemoryRequirements} is {@code NULL}, then the number of sparse memory requirements available is returned in {@code pSparseMemoryRequirementCount}. Otherwise, {@code pSparseMemoryRequirementCount} must point to a variable set by the user to the number of elements in the {@code pSparseMemoryRequirements} array, and on return the variable is overwritten with the number of structures actually written to {@code pSparseMemoryRequirements}. If {@code pSparseMemoryRequirementCount} is less than the number of sparse memory requirements available, at most {@code pSparseMemoryRequirementCount} structures will be written. @@ -4177,7 +4210,8 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                C Specification
                                                                                                                                                                #GetPhysicalDeviceSparseImageFormatProperties() returns an array of ##VkSparseImageFormatProperties. Each element will describe properties for one set of image aspects that are bound simultaneously in the image. This is usually one element for each aspect in the image, but for interleaved depth/stencil images there is only one element describing the combined aspects. -
                                                                                                                                                                void vkGetPhysicalDeviceSparseImageFormatProperties(
                                                                                                                                                                +        
                                                                                                                                                                +￿void vkGetPhysicalDeviceSparseImageFormatProperties(
                                                                                                                                                                 ￿    VkPhysicalDevice                            physicalDevice,
                                                                                                                                                                 ￿    VkFormat                                    format,
                                                                                                                                                                 ￿    VkImageType                                 type,
                                                                                                                                                                @@ -4185,7 +4219,7 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                 ￿    VkImageUsageFlags                           usage,
                                                                                                                                                                 ￿    VkImageTiling                               tiling,
                                                                                                                                                                 ￿    uint32_t*                                   pPropertyCount,
                                                                                                                                                                -￿    VkSparseImageFormatProperties*              pProperties);
                                                                                                                                                                +￿ VkSparseImageFormatProperties* pProperties);
                                                                                                                                                                Description
                                                                                                                                                                If {@code pProperties} is {@code NULL}, then the number of sparse format properties available is returned in {@code pPropertyCount}. Otherwise, {@code pPropertyCount} must point to a variable set by the user to the number of elements in the {@code pProperties} array, and on return the variable is overwritten with the number of structures actually written to {@code pProperties}. If {@code pPropertyCount} is less than the number of sparse format properties available, at most {@code pPropertyCount} structures will be written. @@ -4236,11 +4270,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                C Specification
                                                                                                                                                                To submit sparse binding operations to a queue, call: -
                                                                                                                                                                VkResult vkQueueBindSparse(
                                                                                                                                                                +        
                                                                                                                                                                +￿VkResult vkQueueBindSparse(
                                                                                                                                                                 ￿    VkQueue                                     queue,
                                                                                                                                                                 ￿    uint32_t                                    bindInfoCount,
                                                                                                                                                                 ￿    const VkBindSparseInfo*                     pBindInfo,
                                                                                                                                                                -￿    VkFence                                     fence);
                                                                                                                                                                +￿ VkFence fence);
                                                                                                                                                                Description
                                                                                                                                                                #QueueBindSparse() is a queue submission command, with each batch defined by an element of {@code pBindInfo} as an instance of the ##VkBindSparseInfo structure. Batches begin execution in the order they appear in {@code pBindInfo}, but may complete out of order. @@ -4321,11 +4356,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                C Specification
                                                                                                                                                                To create a fence, call: -
                                                                                                                                                                VkResult vkCreateFence(
                                                                                                                                                                +        
                                                                                                                                                                +￿VkResult vkCreateFence(
                                                                                                                                                                 ￿    VkDevice                                    device,
                                                                                                                                                                 ￿    const VkFenceCreateInfo*                    pCreateInfo,
                                                                                                                                                                 ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                                                -￿    VkFence*                                    pFence);
                                                                                                                                                                +￿ VkFence* pFence);
                                                                                                                                                                Valid Usage (Implicit)
                                                                                                                                                                  @@ -4367,10 +4403,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                  C Specification
                                                                                                                                                                  To destroy a fence, call: -
                                                                                                                                                                  void vkDestroyFence(
                                                                                                                                                                  +        
                                                                                                                                                                  +￿void vkDestroyFence(
                                                                                                                                                                   ￿    VkDevice                                    device,
                                                                                                                                                                   ￿    VkFence                                     fence,
                                                                                                                                                                  -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                                                  +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                                                  Valid Usage
                                                                                                                                                                    @@ -4409,10 +4446,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                    C Specification
                                                                                                                                                                    To set the state of fences to unsignaled from the host, call: -
                                                                                                                                                                    VkResult vkResetFences(
                                                                                                                                                                    +        
                                                                                                                                                                    +￿VkResult vkResetFences(
                                                                                                                                                                     ￿    VkDevice                                    device,
                                                                                                                                                                     ￿    uint32_t                                    fenceCount,
                                                                                                                                                                    -￿    const VkFence*                              pFences);
                                                                                                                                                                    +￿ const VkFence* pFences);
                                                                                                                                                                    Description
                                                                                                                                                                    When #ResetFences() is executed on the host, it defines a fence unsignal operation for each fence, which resets the fence to the unsignaled state. @@ -4465,9 +4503,10 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                    C Specification
                                                                                                                                                                    To query the status of a fence from the host, call: -
                                                                                                                                                                    VkResult vkGetFenceStatus(
                                                                                                                                                                    +        
                                                                                                                                                                    +￿VkResult vkGetFenceStatus(
                                                                                                                                                                     ￿    VkDevice                                    device,
                                                                                                                                                                    -￿    VkFence                                     fence);
                                                                                                                                                                    +￿ VkFence fence);
                                                                                                                                                                    Description
                                                                                                                                                                    Upon success, #GetFenceStatus() returns the status of the fence object, with the following return codes: @@ -4522,12 +4561,13 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                    C Specification
                                                                                                                                                                    To wait for one or more fences to enter the signaled state on the host, call: -
                                                                                                                                                                    VkResult vkWaitForFences(
                                                                                                                                                                    +        
                                                                                                                                                                    +￿VkResult vkWaitForFences(
                                                                                                                                                                     ￿    VkDevice                                    device,
                                                                                                                                                                     ￿    uint32_t                                    fenceCount,
                                                                                                                                                                     ￿    const VkFence*                              pFences,
                                                                                                                                                                     ￿    VkBool32                                    waitAll,
                                                                                                                                                                    -￿    uint64_t                                    timeout);
                                                                                                                                                                    +￿ uint64_t timeout);
                                                                                                                                                                    Description
                                                                                                                                                                    If the condition is satisfied when #WaitForFences() is called, then #WaitForFences() returns immediately. If the condition is not satisfied at the time #WaitForFences() is called, then #WaitForFences() will block and wait up to {@code timeout} nanoseconds for the condition to become satisfied. @@ -4584,11 +4624,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                    C Specification
                                                                                                                                                                    To create a semaphore, call: -
                                                                                                                                                                    VkResult vkCreateSemaphore(
                                                                                                                                                                    +        
                                                                                                                                                                    +￿VkResult vkCreateSemaphore(
                                                                                                                                                                     ￿    VkDevice                                    device,
                                                                                                                                                                     ￿    const VkSemaphoreCreateInfo*                pCreateInfo,
                                                                                                                                                                     ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                                                    -￿    VkSemaphore*                                pSemaphore);
                                                                                                                                                                    +￿ VkSemaphore* pSemaphore);
                                                                                                                                                                    Description
                                                                                                                                                                    When created, the semaphore is in the unsignaled state. @@ -4633,10 +4674,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                    C Specification
                                                                                                                                                                    To destroy a semaphore, call: -
                                                                                                                                                                    void vkDestroySemaphore(
                                                                                                                                                                    +        
                                                                                                                                                                    +￿void vkDestroySemaphore(
                                                                                                                                                                     ￿    VkDevice                                    device,
                                                                                                                                                                     ￿    VkSemaphore                                 semaphore,
                                                                                                                                                                    -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                                                    +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                                                    Valid Usage
                                                                                                                                                                      @@ -4677,11 +4719,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                      C Specification
                                                                                                                                                                      To create an event, call: -
                                                                                                                                                                      VkResult vkCreateEvent(
                                                                                                                                                                      +        
                                                                                                                                                                      +￿VkResult vkCreateEvent(
                                                                                                                                                                       ￿    VkDevice                                    device,
                                                                                                                                                                       ￿    const VkEventCreateInfo*                    pCreateInfo,
                                                                                                                                                                       ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                                                      -￿    VkEvent*                                    pEvent);
                                                                                                                                                                      +￿ VkEvent* pEvent);
                                                                                                                                                                      Description
                                                                                                                                                                      When created, the event object is in the unsignaled state. @@ -4726,10 +4769,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                      C Specification
                                                                                                                                                                      To destroy an event, call: -
                                                                                                                                                                      void vkDestroyEvent(
                                                                                                                                                                      +        
                                                                                                                                                                      +￿void vkDestroyEvent(
                                                                                                                                                                       ￿    VkDevice                                    device,
                                                                                                                                                                       ￿    VkEvent                                     event,
                                                                                                                                                                      -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                                                      +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                                                      Valid Usage
                                                                                                                                                                        @@ -4768,9 +4812,10 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                        C Specification
                                                                                                                                                                        To query the state of an event from the host, call: -
                                                                                                                                                                        VkResult vkGetEventStatus(
                                                                                                                                                                        +        
                                                                                                                                                                        +￿VkResult vkGetEventStatus(
                                                                                                                                                                         ￿    VkDevice                                    device,
                                                                                                                                                                        -￿    VkEvent                                     event);
                                                                                                                                                                        +￿ VkEvent event);
                                                                                                                                                                        Description
                                                                                                                                                                        Upon success, #GetEventStatus() returns the state of the event object with the following return codes: @@ -4824,9 +4869,10 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                        C Specification
                                                                                                                                                                        To set the state of an event to signaled from the host, call: -
                                                                                                                                                                        VkResult vkSetEvent(
                                                                                                                                                                        +        
                                                                                                                                                                        +￿VkResult vkSetEvent(
                                                                                                                                                                         ￿    VkDevice                                    device,
                                                                                                                                                                        -￿    VkEvent                                     event);
                                                                                                                                                                        +￿ VkEvent event);
                                                                                                                                                                        Description
                                                                                                                                                                        When #SetEvent() is executed on the host, it defines an event signal operation which sets the event to the signaled state. @@ -4872,9 +4918,10 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                        C Specification
                                                                                                                                                                        To set the state of an event to unsignaled from the host, call: -
                                                                                                                                                                        VkResult vkResetEvent(
                                                                                                                                                                        +        
                                                                                                                                                                        +￿VkResult vkResetEvent(
                                                                                                                                                                         ￿    VkDevice                                    device,
                                                                                                                                                                        -￿    VkEvent                                     event);
                                                                                                                                                                        +￿ VkEvent event);
                                                                                                                                                                        Description
                                                                                                                                                                        When #ResetEvent() is executed on the host, it defines an event unsignal operation which resets the event to the unsignaled state. @@ -4927,11 +4974,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                        C Specification
                                                                                                                                                                        To create a query pool, call: -
                                                                                                                                                                        VkResult vkCreateQueryPool(
                                                                                                                                                                        +        
                                                                                                                                                                        +￿VkResult vkCreateQueryPool(
                                                                                                                                                                         ￿    VkDevice                                    device,
                                                                                                                                                                         ￿    const VkQueryPoolCreateInfo*                pCreateInfo,
                                                                                                                                                                         ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                                                        -￿    VkQueryPool*                                pQueryPool);
                                                                                                                                                                        +￿ VkQueryPool* pQueryPool);
                                                                                                                                                                        Valid Usage (Implicit)
                                                                                                                                                                          @@ -4973,10 +5021,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                          C Specification
                                                                                                                                                                          To destroy a query pool, call: -
                                                                                                                                                                          void vkDestroyQueryPool(
                                                                                                                                                                          +        
                                                                                                                                                                          +￿void vkDestroyQueryPool(
                                                                                                                                                                           ￿    VkDevice                                    device,
                                                                                                                                                                           ￿    VkQueryPool                                 queryPool,
                                                                                                                                                                          -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                                                          +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                                                          Valid Usage
                                                                                                                                                                            @@ -5015,7 +5064,8 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                            C Specification
                                                                                                                                                                            To retrieve status and results for a set of queries, call: -
                                                                                                                                                                            VkResult vkGetQueryPoolResults(
                                                                                                                                                                            +        
                                                                                                                                                                            +￿VkResult vkGetQueryPoolResults(
                                                                                                                                                                             ￿    VkDevice                                    device,
                                                                                                                                                                             ￿    VkQueryPool                                 queryPool,
                                                                                                                                                                             ￿    uint32_t                                    firstQuery,
                                                                                                                                                                            @@ -5023,7 +5073,7 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                             ￿    size_t                                      dataSize,
                                                                                                                                                                             ￿    void*                                       pData,
                                                                                                                                                                             ￿    VkDeviceSize                                stride,
                                                                                                                                                                            -￿    VkQueryResultFlags                          flags);
                                                                                                                                                                            +￿ VkQueryResultFlags flags);
                                                                                                                                                                            Description
                                                                                                                                                                            If no bits are set in {@code flags}, and all requested queries are in the available state, results are written as an array of 32-bit unsigned integer values. The behavior when not all queries are available, is described below. @@ -5101,12 +5151,13 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V void_p.OUT("pData", "a pointer to a user-allocated buffer where the results will be written"), VkDeviceSize.IN("stride", "the stride in bytes between results for individual queries within {@code pData}."), VkQueryResultFlags.IN("flags", """a bitmask of {@code VkQueryResultFlagBits} specifying how and when results are returned. Bits which can be set include: -
                                                                                                                                                                            typedef enum VkQueryResultFlagBits {
                                                                                                                                                                            +
                                                                                                                                                                            +￿typedef enum VkQueryResultFlagBits {
                                                                                                                                                                             ￿    VK_QUERY_RESULT_64_BIT = 0x00000001,
                                                                                                                                                                             ￿    VK_QUERY_RESULT_WAIT_BIT = 0x00000002,
                                                                                                                                                                             ￿    VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004,
                                                                                                                                                                             ￿    VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008,
                                                                                                                                                                            -} VkQueryResultFlagBits;
                                                                                                                                                                            +￿} VkQueryResultFlagBits;
                                                                                                                                                                            • #QUERY_RESULT_64_BIT indicates the results will be written as an array of 64-bit unsigned integer values. If this bit is not set, the results will be written as an array of 32-bit unsigned integer values.
                                                                                                                                                                            • @@ -5126,11 +5177,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                              C Specification
                                                                                                                                                                              To create buffers, call: -
                                                                                                                                                                              VkResult vkCreateBuffer(
                                                                                                                                                                              +        
                                                                                                                                                                              +￿VkResult vkCreateBuffer(
                                                                                                                                                                               ￿    VkDevice                                    device,
                                                                                                                                                                               ￿    const VkBufferCreateInfo*                   pCreateInfo,
                                                                                                                                                                               ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                                                              -￿    VkBuffer*                                   pBuffer);
                                                                                                                                                                              +￿ VkBuffer* pBuffer);
                                                                                                                                                                              Valid Usage
                                                                                                                                                                                @@ -5177,10 +5229,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                C Specification
                                                                                                                                                                                To destroy a buffer, call: -
                                                                                                                                                                                void vkDestroyBuffer(
                                                                                                                                                                                +        
                                                                                                                                                                                +￿void vkDestroyBuffer(
                                                                                                                                                                                 ￿    VkDevice                                    device,
                                                                                                                                                                                 ￿    VkBuffer                                    buffer,
                                                                                                                                                                                -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                                                                +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                                                                Valid Usage
                                                                                                                                                                                  @@ -5221,11 +5274,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                  C Specification
                                                                                                                                                                                  To create a buffer view, call: -
                                                                                                                                                                                  VkResult vkCreateBufferView(
                                                                                                                                                                                  +        
                                                                                                                                                                                  +￿VkResult vkCreateBufferView(
                                                                                                                                                                                   ￿    VkDevice                                    device,
                                                                                                                                                                                   ￿    const VkBufferViewCreateInfo*               pCreateInfo,
                                                                                                                                                                                   ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                                                                  -￿    VkBufferView*                               pView);
                                                                                                                                                                                  +￿ VkBufferView* pView);
                                                                                                                                                                                  Valid Usage (Implicit)
                                                                                                                                                                                    @@ -5267,10 +5321,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                    C Specification
                                                                                                                                                                                    To destroy a buffer view, call: -
                                                                                                                                                                                    void vkDestroyBufferView(
                                                                                                                                                                                    +        
                                                                                                                                                                                    +￿void vkDestroyBufferView(
                                                                                                                                                                                     ￿    VkDevice                                    device,
                                                                                                                                                                                     ￿    VkBufferView                                bufferView,
                                                                                                                                                                                    -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                                                                    +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                                                                    Valid Usage
                                                                                                                                                                                      @@ -5311,11 +5366,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                      C Specification
                                                                                                                                                                                      To create images, call: -
                                                                                                                                                                                      VkResult vkCreateImage(
                                                                                                                                                                                      +        
                                                                                                                                                                                      +￿VkResult vkCreateImage(
                                                                                                                                                                                       ￿    VkDevice                                    device,
                                                                                                                                                                                       ￿    const VkImageCreateInfo*                    pCreateInfo,
                                                                                                                                                                                       ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                                                                      -￿    VkImage*                                    pImage);
                                                                                                                                                                                      +￿ VkImage* pImage);
                                                                                                                                                                                      Valid Usage
                                                                                                                                                                                        @@ -5362,10 +5418,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                        C Specification
                                                                                                                                                                                        To destroy an image, call: -
                                                                                                                                                                                        void vkDestroyImage(
                                                                                                                                                                                        +        
                                                                                                                                                                                        +￿void vkDestroyImage(
                                                                                                                                                                                         ￿    VkDevice                                    device,
                                                                                                                                                                                         ￿    VkImage                                     image,
                                                                                                                                                                                        -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                                                                        +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                                                                        Valid Usage
                                                                                                                                                                                          @@ -5404,11 +5461,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                          C Specification
                                                                                                                                                                                          To query the host access layout of an image subresource, for an image created with linear tiling, call: -
                                                                                                                                                                                          void vkGetImageSubresourceLayout(
                                                                                                                                                                                          +        
                                                                                                                                                                                          +￿void vkGetImageSubresourceLayout(
                                                                                                                                                                                           ￿    VkDevice                                    device,
                                                                                                                                                                                           ￿    VkImage                                     image,
                                                                                                                                                                                           ￿    const VkImageSubresource*                   pSubresource,
                                                                                                                                                                                          -￿    VkSubresourceLayout*                        pLayout);
                                                                                                                                                                                          +￿ VkSubresourceLayout* pLayout);
                                                                                                                                                                                          Description
                                                                                                                                                                                          #GetImageSubresourceLayout() is invariant for the lifetime of a single image. @@ -5448,11 +5506,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                          C Specification
                                                                                                                                                                                          To create an image view, call: -
                                                                                                                                                                                          VkResult vkCreateImageView(
                                                                                                                                                                                          +        
                                                                                                                                                                                          +￿VkResult vkCreateImageView(
                                                                                                                                                                                           ￿    VkDevice                                    device,
                                                                                                                                                                                           ￿    const VkImageViewCreateInfo*                pCreateInfo,
                                                                                                                                                                                           ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                                                                          -￿    VkImageView*                                pView);
                                                                                                                                                                                          +￿ VkImageView* pView);
                                                                                                                                                                                          Description
                                                                                                                                                                                          Some of the image creation parameters are inherited by the view. The remaining parameters are contained in the {@code pCreateInfo}. @@ -5497,10 +5556,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                          C Specification
                                                                                                                                                                                          To destroy an image view, call: -
                                                                                                                                                                                          void vkDestroyImageView(
                                                                                                                                                                                          +        
                                                                                                                                                                                          +￿void vkDestroyImageView(
                                                                                                                                                                                           ￿    VkDevice                                    device,
                                                                                                                                                                                           ￿    VkImageView                                 imageView,
                                                                                                                                                                                          -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                                                                          +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                                                                          Valid Usage
                                                                                                                                                                                            @@ -5541,11 +5601,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                            C Specification
                                                                                                                                                                                            To create a shader module, call: -
                                                                                                                                                                                            VkResult vkCreateShaderModule(
                                                                                                                                                                                            +        
                                                                                                                                                                                            +￿VkResult vkCreateShaderModule(
                                                                                                                                                                                             ￿    VkDevice                                    device,
                                                                                                                                                                                             ￿    const VkShaderModuleCreateInfo*             pCreateInfo,
                                                                                                                                                                                             ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                                                                            -￿    VkShaderModule*                             pShaderModule);
                                                                                                                                                                                            +￿ VkShaderModule* pShaderModule);
                                                                                                                                                                                            Description
                                                                                                                                                                                            Once a shader module has been created, any entry points it contains can be used in pipeline shader stages as described in Compute Pipelines and Graphics Pipelines. @@ -5593,10 +5654,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                            C Specification
                                                                                                                                                                                            To destroy a shader module, call: -
                                                                                                                                                                                            void vkDestroyShaderModule(
                                                                                                                                                                                            +        
                                                                                                                                                                                            +￿void vkDestroyShaderModule(
                                                                                                                                                                                             ￿    VkDevice                                    device,
                                                                                                                                                                                             ￿    VkShaderModule                              shaderModule,
                                                                                                                                                                                            -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                                                                            +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                                                                            Description
                                                                                                                                                                                            A shader module can be destroyed while pipelines created using its shaders are still in use. @@ -5639,11 +5701,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                            C Specification
                                                                                                                                                                                            To create pipeline cache objects, call: -
                                                                                                                                                                                            VkResult vkCreatePipelineCache(
                                                                                                                                                                                            +        
                                                                                                                                                                                            +￿VkResult vkCreatePipelineCache(
                                                                                                                                                                                             ￿    VkDevice                                    device,
                                                                                                                                                                                             ￿    const VkPipelineCacheCreateInfo*            pCreateInfo,
                                                                                                                                                                                             ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                                                                            -￿    VkPipelineCache*                            pPipelineCache);
                                                                                                                                                                                            +￿ VkPipelineCache* pPipelineCache);
                                                                                                                                                                                            Description
                                                                                                                                                                                            Note
                                                                                                                                                                                            @@ -5696,10 +5759,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                            C Specification
                                                                                                                                                                                            To destroy a pipeline cache, call: -
                                                                                                                                                                                            void vkDestroyPipelineCache(
                                                                                                                                                                                            +        
                                                                                                                                                                                            +￿void vkDestroyPipelineCache(
                                                                                                                                                                                             ￿    VkDevice                                    device,
                                                                                                                                                                                             ￿    VkPipelineCache                             pipelineCache,
                                                                                                                                                                                            -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                                                                            +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                                                                            Valid Usage
                                                                                                                                                                                              @@ -5737,11 +5801,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                              C Specification
                                                                                                                                                                                              Data can be retrieved from a pipeline cache object using the command: -
                                                                                                                                                                                              VkResult vkGetPipelineCacheData(
                                                                                                                                                                                              +        
                                                                                                                                                                                              +￿VkResult vkGetPipelineCacheData(
                                                                                                                                                                                               ￿    VkDevice                                    device,
                                                                                                                                                                                               ￿    VkPipelineCache                             pipelineCache,
                                                                                                                                                                                               ￿    size_t*                                     pDataSize,
                                                                                                                                                                                              -￿    void*                                       pData);
                                                                                                                                                                                              +￿ void* pData);
                                                                                                                                                                                              Description
                                                                                                                                                                                              If {@code pData} is {@code NULL}, then the maximum size of the data that can be retrieved from the pipeline cache, in bytes, is returned in {@code pDataSize}. Otherwise, {@code pDataSize} must point to a variable set by the user to the size of the buffer, in bytes, pointed to by {@code pData}, and on return the variable is overwritten with the amount of data actually written to {@code pData}. @@ -5768,9 +5833,10 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V The next four bytes encode the pipeline cache version. This field is interpreted as a {@code VkPipelineCacheHeaderVersion} value, and must have one of the following values: -
                                                                                                                                                                                              typedef enum VkPipelineCacheHeaderVersion {
                                                                                                                                                                                              +        
                                                                                                                                                                                              +￿typedef enum VkPipelineCacheHeaderVersion {
                                                                                                                                                                                               ￿    VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
                                                                                                                                                                                              -} VkPipelineCacheHeaderVersion;
                                                                                                                                                                                              +￿} VkPipelineCacheHeaderVersion;
                                                                                                                                                                                              A consumer of the pipeline cache should use the cache version to interpret the remainder of the cache header. @@ -5815,11 +5881,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                              C Specification
                                                                                                                                                                                              Pipeline cache objects can be merged using the command: -
                                                                                                                                                                                              VkResult vkMergePipelineCaches(
                                                                                                                                                                                              +        
                                                                                                                                                                                              +￿VkResult vkMergePipelineCaches(
                                                                                                                                                                                               ￿    VkDevice                                    device,
                                                                                                                                                                                               ￿    VkPipelineCache                             dstCache,
                                                                                                                                                                                               ￿    uint32_t                                    srcCacheCount,
                                                                                                                                                                                              -￿    const VkPipelineCache*                      pSrcCaches);
                                                                                                                                                                                              +￿ const VkPipelineCache* pSrcCaches);
                                                                                                                                                                                              Description
                                                                                                                                                                                              Note
                                                                                                                                                                                              @@ -5877,13 +5944,14 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                              C Specification
                                                                                                                                                                                              To create graphics pipelines, call: -
                                                                                                                                                                                              VkResult vkCreateGraphicsPipelines(
                                                                                                                                                                                              +        
                                                                                                                                                                                              +￿VkResult vkCreateGraphicsPipelines(
                                                                                                                                                                                               ￿    VkDevice                                    device,
                                                                                                                                                                                               ￿    VkPipelineCache                             pipelineCache,
                                                                                                                                                                                               ￿    uint32_t                                    createInfoCount,
                                                                                                                                                                                               ￿    const VkGraphicsPipelineCreateInfo*         pCreateInfos,
                                                                                                                                                                                               ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                                                                              -￿    VkPipeline*                                 pPipelines);
                                                                                                                                                                                              +￿ VkPipeline* pPipelines);
                                                                                                                                                                                              Description
                                                                                                                                                                                              The ##VkGraphicsPipelineCreateInfo structure includes an array of shader create info structures containing all the desired active shader stages, as well as creation info to define all relevant fixed-function stages, and a pipeline layout. @@ -5940,13 +6008,14 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                              C Specification
                                                                                                                                                                                              To create compute pipelines, call: -
                                                                                                                                                                                              VkResult vkCreateComputePipelines(
                                                                                                                                                                                              +        
                                                                                                                                                                                              +￿VkResult vkCreateComputePipelines(
                                                                                                                                                                                               ￿    VkDevice                                    device,
                                                                                                                                                                                               ￿    VkPipelineCache                             pipelineCache,
                                                                                                                                                                                               ￿    uint32_t                                    createInfoCount,
                                                                                                                                                                                               ￿    const VkComputePipelineCreateInfo*          pCreateInfos,
                                                                                                                                                                                               ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                                                                              -￿    VkPipeline*                                 pPipelines);
                                                                                                                                                                                              +￿ VkPipeline* pPipelines);
                                                                                                                                                                                              Valid Usage
                                                                                                                                                                                                @@ -6001,10 +6070,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                C Specification
                                                                                                                                                                                                To destroy a graphics or compute pipeline, call: -
                                                                                                                                                                                                void vkDestroyPipeline(
                                                                                                                                                                                                +        
                                                                                                                                                                                                +￿void vkDestroyPipeline(
                                                                                                                                                                                                 ￿    VkDevice                                    device,
                                                                                                                                                                                                 ￿    VkPipeline                                  pipeline,
                                                                                                                                                                                                -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                                                                                +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                                                                                Valid Usage
                                                                                                                                                                                                  @@ -6045,11 +6115,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                  C Specification
                                                                                                                                                                                                  To create a pipeline layout, call: -
                                                                                                                                                                                                  VkResult vkCreatePipelineLayout(
                                                                                                                                                                                                  +        
                                                                                                                                                                                                  +￿VkResult vkCreatePipelineLayout(
                                                                                                                                                                                                   ￿    VkDevice                                    device,
                                                                                                                                                                                                   ￿    const VkPipelineLayoutCreateInfo*           pCreateInfo,
                                                                                                                                                                                                   ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                                                                                  -￿    VkPipelineLayout*                           pPipelineLayout);
                                                                                                                                                                                                  +￿ VkPipelineLayout* pPipelineLayout);
                                                                                                                                                                                                  Valid Usage (Implicit)
                                                                                                                                                                                                    @@ -6091,10 +6162,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                    C Specification
                                                                                                                                                                                                    To destroy a pipeline layout, call: -
                                                                                                                                                                                                    void vkDestroyPipelineLayout(
                                                                                                                                                                                                    +        
                                                                                                                                                                                                    +￿void vkDestroyPipelineLayout(
                                                                                                                                                                                                     ￿    VkDevice                                    device,
                                                                                                                                                                                                     ￿    VkPipelineLayout                            pipelineLayout,
                                                                                                                                                                                                    -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                                                                                    +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                                                                                    Valid Usage
                                                                                                                                                                                                      @@ -6134,11 +6206,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                      C Specification
                                                                                                                                                                                                      To create a sampler object, call: -
                                                                                                                                                                                                      VkResult vkCreateSampler(
                                                                                                                                                                                                      +        
                                                                                                                                                                                                      +￿VkResult vkCreateSampler(
                                                                                                                                                                                                       ￿    VkDevice                                    device,
                                                                                                                                                                                                       ￿    const VkSamplerCreateInfo*                  pCreateInfo,
                                                                                                                                                                                                       ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                                                                                      -￿    VkSampler*                                  pSampler);
                                                                                                                                                                                                      +￿ VkSampler* pSampler);
                                                                                                                                                                                                      Valid Usage (Implicit)
                                                                                                                                                                                                        @@ -6181,10 +6254,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                        C Specification
                                                                                                                                                                                                        To destroy a sampler, call: -
                                                                                                                                                                                                        void vkDestroySampler(
                                                                                                                                                                                                        +        
                                                                                                                                                                                                        +￿void vkDestroySampler(
                                                                                                                                                                                                         ￿    VkDevice                                    device,
                                                                                                                                                                                                         ￿    VkSampler                                   sampler,
                                                                                                                                                                                                        -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                                                                                        +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                                                                                        Valid Usage
                                                                                                                                                                                                          @@ -6225,11 +6299,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                          To create descriptor set layout objects, call: -
                                                                                                                                                                                                          VkResult vkCreateDescriptorSetLayout(
                                                                                                                                                                                                          +        
                                                                                                                                                                                                          +￿VkResult vkCreateDescriptorSetLayout(
                                                                                                                                                                                                           ￿    VkDevice                                    device,
                                                                                                                                                                                                           ￿    const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
                                                                                                                                                                                                           ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                                                                                          -￿    VkDescriptorSetLayout*                      pSetLayout);
                                                                                                                                                                                                          +￿ VkDescriptorSetLayout* pSetLayout);
                                                                                                                                                                                                          Valid Usage (Implicit)
                                                                                                                                                                                                            @@ -6271,10 +6346,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                            C Specification
                                                                                                                                                                                                            To destroy a descriptor set layout, call: -
                                                                                                                                                                                                            void vkDestroyDescriptorSetLayout(
                                                                                                                                                                                                            +        
                                                                                                                                                                                                            +￿void vkDestroyDescriptorSetLayout(
                                                                                                                                                                                                             ￿    VkDevice                                    device,
                                                                                                                                                                                                             ￿    VkDescriptorSetLayout                       descriptorSetLayout,
                                                                                                                                                                                                            -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                                                                                            +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                                                                                            Valid Usage
                                                                                                                                                                                                              @@ -6312,11 +6388,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                              C Specification
                                                                                                                                                                                                              To create a descriptor pool object, call: -
                                                                                                                                                                                                              VkResult vkCreateDescriptorPool(
                                                                                                                                                                                                              +        
                                                                                                                                                                                                              +￿VkResult vkCreateDescriptorPool(
                                                                                                                                                                                                               ￿    VkDevice                                    device,
                                                                                                                                                                                                               ￿    const VkDescriptorPoolCreateInfo*           pCreateInfo,
                                                                                                                                                                                                               ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                                                                                              -￿    VkDescriptorPool*                           pDescriptorPool);
                                                                                                                                                                                                              +￿ VkDescriptorPool* pDescriptorPool);
                                                                                                                                                                                                              Description
                                                                                                                                                                                                              {@code pAllocator} controls host memory allocation as described in the Memory Allocation chapter. @@ -6363,10 +6440,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                              C Specification
                                                                                                                                                                                                              To destroy a descriptor pool, call: -
                                                                                                                                                                                                              void vkDestroyDescriptorPool(
                                                                                                                                                                                                              +        
                                                                                                                                                                                                              +￿void vkDestroyDescriptorPool(
                                                                                                                                                                                                               ￿    VkDevice                                    device,
                                                                                                                                                                                                               ￿    VkDescriptorPool                            descriptorPool,
                                                                                                                                                                                                              -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                                                                                              +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                                                                                              Description
                                                                                                                                                                                                              When a pool is destroyed, all descriptor sets allocated from the pool are implicitly freed and become invalid. Descriptor sets allocated from a given pool do not need to be freed before destroying that descriptor pool. @@ -6408,10 +6486,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                              C Specification
                                                                                                                                                                                                              To return all descriptor sets allocated from a given pool to the pool, rather than freeing individual descriptor sets, call: -
                                                                                                                                                                                                              VkResult vkResetDescriptorPool(
                                                                                                                                                                                                              +        
                                                                                                                                                                                                              +￿VkResult vkResetDescriptorPool(
                                                                                                                                                                                                               ￿    VkDevice                                    device,
                                                                                                                                                                                                               ￿    VkDescriptorPool                            descriptorPool,
                                                                                                                                                                                                              -￿    VkDescriptorPoolResetFlags                  flags);
                                                                                                                                                                                                              +￿ VkDescriptorPoolResetFlags flags);
                                                                                                                                                                                                              Description
                                                                                                                                                                                                              Resetting a descriptor pool recycles all of the resources from all of the descriptor sets allocated from the descriptor pool back to the descriptor pool, and the descriptor sets are implicitly freed. @@ -6463,10 +6542,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                              C Specification
                                                                                                                                                                                                              To allocate descriptor sets from a descriptor pool, call: -
                                                                                                                                                                                                              VkResult vkAllocateDescriptorSets(
                                                                                                                                                                                                              +        
                                                                                                                                                                                                              +￿VkResult vkAllocateDescriptorSets(
                                                                                                                                                                                                               ￿    VkDevice                                    device,
                                                                                                                                                                                                               ￿    const VkDescriptorSetAllocateInfo*          pAllocateInfo,
                                                                                                                                                                                                              -￿    VkDescriptorSet*                            pDescriptorSets);
                                                                                                                                                                                                              +￿ VkDescriptorSet* pDescriptorSets);
                                                                                                                                                                                                              Description
                                                                                                                                                                                                              The allocated descriptor sets are returned in {@code pDescriptorSets}. @@ -6530,11 +6610,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                              C Specification
                                                                                                                                                                                                              To free allocated descriptor sets, call: -
                                                                                                                                                                                                              VkResult vkFreeDescriptorSets(
                                                                                                                                                                                                              +        
                                                                                                                                                                                                              +￿VkResult vkFreeDescriptorSets(
                                                                                                                                                                                                               ￿    VkDevice                                    device,
                                                                                                                                                                                                               ￿    VkDescriptorPool                            descriptorPool,
                                                                                                                                                                                                               ￿    uint32_t                                    descriptorSetCount,
                                                                                                                                                                                                              -￿    const VkDescriptorSet*                      pDescriptorSets);
                                                                                                                                                                                                              +￿ const VkDescriptorSet* pDescriptorSets);
                                                                                                                                                                                                              Description
                                                                                                                                                                                                              After a successful call to #FreeDescriptorSets(), all descriptor sets in {@code pDescriptorSets} are invalid. @@ -6591,12 +6672,13 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                              C Specification
                                                                                                                                                                                                              Once allocated, descriptor sets can be updated with a combination of write and copy operations. To update descriptor sets, call: -
                                                                                                                                                                                                              void vkUpdateDescriptorSets(
                                                                                                                                                                                                              +        
                                                                                                                                                                                                              +￿void vkUpdateDescriptorSets(
                                                                                                                                                                                                               ￿    VkDevice                                    device,
                                                                                                                                                                                                               ￿    uint32_t                                    descriptorWriteCount,
                                                                                                                                                                                                               ￿    const VkWriteDescriptorSet*                 pDescriptorWrites,
                                                                                                                                                                                                               ￿    uint32_t                                    descriptorCopyCount,
                                                                                                                                                                                                              -￿    const VkCopyDescriptorSet*                  pDescriptorCopies);
                                                                                                                                                                                                              +￿ const VkCopyDescriptorSet* pDescriptorCopies);
                                                                                                                                                                                                              Description
                                                                                                                                                                                                              The operations described by {@code pDescriptorWrites} are performed first, followed by the operations described by {@code pDescriptorCopies}. Within each array, the operations are performed in the order they appear in the array. @@ -6646,11 +6728,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                              C Specification
                                                                                                                                                                                                              To create a framebuffer, call: -
                                                                                                                                                                                                              VkResult vkCreateFramebuffer(
                                                                                                                                                                                                              +        
                                                                                                                                                                                                              +￿VkResult vkCreateFramebuffer(
                                                                                                                                                                                                               ￿    VkDevice                                    device,
                                                                                                                                                                                                               ￿    const VkFramebufferCreateInfo*              pCreateInfo,
                                                                                                                                                                                                               ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                                                                                              -￿    VkFramebuffer*                              pFramebuffer);
                                                                                                                                                                                                              +￿ VkFramebuffer* pFramebuffer);
                                                                                                                                                                                                              Valid Usage (Implicit)
                                                                                                                                                                                                                @@ -6692,10 +6775,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                                C Specification
                                                                                                                                                                                                                To destroy a framebuffer, call: -
                                                                                                                                                                                                                void vkDestroyFramebuffer(
                                                                                                                                                                                                                +        
                                                                                                                                                                                                                +￿void vkDestroyFramebuffer(
                                                                                                                                                                                                                 ￿    VkDevice                                    device,
                                                                                                                                                                                                                 ￿    VkFramebuffer                               framebuffer,
                                                                                                                                                                                                                -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                                                                                                +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                                                                                                Valid Usage
                                                                                                                                                                                                                  @@ -6734,11 +6818,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                                  C Specification
                                                                                                                                                                                                                  To create a render pass, call: -
                                                                                                                                                                                                                  VkResult vkCreateRenderPass(
                                                                                                                                                                                                                  +        
                                                                                                                                                                                                                  +￿VkResult vkCreateRenderPass(
                                                                                                                                                                                                                   ￿    VkDevice                                    device,
                                                                                                                                                                                                                   ￿    const VkRenderPassCreateInfo*               pCreateInfo,
                                                                                                                                                                                                                   ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                                                                                                  -￿    VkRenderPass*                               pRenderPass);
                                                                                                                                                                                                                  +￿ VkRenderPass* pRenderPass);
                                                                                                                                                                                                                  Valid Usage (Implicit)
                                                                                                                                                                                                                    @@ -6780,10 +6865,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                                    C Specification
                                                                                                                                                                                                                    To destroy a render pass, call: -
                                                                                                                                                                                                                    void vkDestroyRenderPass(
                                                                                                                                                                                                                    +        
                                                                                                                                                                                                                    +￿void vkDestroyRenderPass(
                                                                                                                                                                                                                     ￿    VkDevice                                    device,
                                                                                                                                                                                                                     ￿    VkRenderPass                                renderPass,
                                                                                                                                                                                                                    -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                                                                                                    +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                                                                                                    Valid Usage
                                                                                                                                                                                                                      @@ -6822,10 +6908,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                                      C Specification
                                                                                                                                                                                                                      To query the render area granularity, call: -
                                                                                                                                                                                                                      void vkGetRenderAreaGranularity(
                                                                                                                                                                                                                      +        
                                                                                                                                                                                                                      +￿void vkGetRenderAreaGranularity(
                                                                                                                                                                                                                       ￿    VkDevice                                    device,
                                                                                                                                                                                                                       ￿    VkRenderPass                                renderPass,
                                                                                                                                                                                                                      -￿    VkExtent2D*                                 pGranularity);
                                                                                                                                                                                                                      +￿ VkExtent2D* pGranularity);
                                                                                                                                                                                                                      Description
                                                                                                                                                                                                                      The conditions leading to an optimal {@code renderArea} are: @@ -6866,11 +6953,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                                      C Specification
                                                                                                                                                                                                                      To create a command pool, call: -
                                                                                                                                                                                                                      VkResult vkCreateCommandPool(
                                                                                                                                                                                                                      +        
                                                                                                                                                                                                                      +￿VkResult vkCreateCommandPool(
                                                                                                                                                                                                                       ￿    VkDevice                                    device,
                                                                                                                                                                                                                       ￿    const VkCommandPoolCreateInfo*              pCreateInfo,
                                                                                                                                                                                                                       ￿    const VkAllocationCallbacks*                pAllocator,
                                                                                                                                                                                                                      -￿    VkCommandPool*                              pCommandPool);
                                                                                                                                                                                                                      +￿ VkCommandPool* pCommandPool);
                                                                                                                                                                                                                      Valid Usage (Implicit)
                                                                                                                                                                                                                        @@ -6912,10 +7000,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                                        C Specification
                                                                                                                                                                                                                        To destroy a command pool, call: -
                                                                                                                                                                                                                        void vkDestroyCommandPool(
                                                                                                                                                                                                                        +        
                                                                                                                                                                                                                        +￿void vkDestroyCommandPool(
                                                                                                                                                                                                                         ￿    VkDevice                                    device,
                                                                                                                                                                                                                         ￿    VkCommandPool                               commandPool,
                                                                                                                                                                                                                        -￿    const VkAllocationCallbacks*                pAllocator);
                                                                                                                                                                                                                        +￿ const VkAllocationCallbacks* pAllocator);
                                                                                                                                                                                                                        Description
                                                                                                                                                                                                                        When a pool is destroyed, all command buffers allocated from the pool are freed. @@ -6959,10 +7048,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                                        C Specification
                                                                                                                                                                                                                        To reset a command pool, call: -
                                                                                                                                                                                                                        VkResult vkResetCommandPool(
                                                                                                                                                                                                                        +        
                                                                                                                                                                                                                        +￿VkResult vkResetCommandPool(
                                                                                                                                                                                                                         ￿    VkDevice                                    device,
                                                                                                                                                                                                                         ￿    VkCommandPool                               commandPool,
                                                                                                                                                                                                                        -￿    VkCommandPoolResetFlags                     flags);
                                                                                                                                                                                                                        +￿ VkCommandPoolResetFlags flags);
                                                                                                                                                                                                                        Description
                                                                                                                                                                                                                        Resetting a command pool recycles all of the resources from all of the command buffers allocated from the command pool back to the command pool. All command buffers that have been allocated from the command pool are put in the initial state. @@ -7005,9 +7095,10 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V VkDevice.IN("device", "the logical device that owns the command pool."), VkCommandPool.IN("commandPool", "the command pool to reset."), VkCommandPoolResetFlags.IN("flags", """contains additional flags controlling the behavior of the reset. Bits which can be set include: -
                                                                                                                                                                                                                        typedef enum VkCommandPoolResetFlagBits {
                                                                                                                                                                                                                        +
                                                                                                                                                                                                                        +￿typedef enum VkCommandPoolResetFlagBits {
                                                                                                                                                                                                                         ￿    VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
                                                                                                                                                                                                                        -} VkCommandPoolResetFlagBits;
                                                                                                                                                                                                                        +￿} VkCommandPoolResetFlagBits;
                                                                                                                                                                                                                        If {@code flags} includes #COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT, resetting a command pool recycles all of the resources from the command pool back to the system.""") ) @@ -7022,10 +7113,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                                        C Specification
                                                                                                                                                                                                                        To allocate command buffers, call: -
                                                                                                                                                                                                                        VkResult vkAllocateCommandBuffers(
                                                                                                                                                                                                                        +        
                                                                                                                                                                                                                        +￿VkResult vkAllocateCommandBuffers(
                                                                                                                                                                                                                         ￿    VkDevice                                    device,
                                                                                                                                                                                                                         ￿    const VkCommandBufferAllocateInfo*          pAllocateInfo,
                                                                                                                                                                                                                        -￿    VkCommandBuffer*                            pCommandBuffers);
                                                                                                                                                                                                                        +￿ VkCommandBuffer* pCommandBuffers);
                                                                                                                                                                                                                        Description
                                                                                                                                                                                                                        #AllocateCommandBuffers() can be used to create multiple command buffers. If the creation of any of those command buffers fails, the implementation must destroy all successfully created command buffer objects from this command, set all entries of the {@code pCommandBuffers} array to {@code NULL} and return the error. @@ -7075,11 +7167,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                                        C Specification
                                                                                                                                                                                                                        To free command buffers, call: -
                                                                                                                                                                                                                        void vkFreeCommandBuffers(
                                                                                                                                                                                                                        +        
                                                                                                                                                                                                                        +￿void vkFreeCommandBuffers(
                                                                                                                                                                                                                         ￿    VkDevice                                    device,
                                                                                                                                                                                                                         ￿    VkCommandPool                               commandPool,
                                                                                                                                                                                                                         ￿    uint32_t                                    commandBufferCount,
                                                                                                                                                                                                                        -￿    const VkCommandBuffer*                      pCommandBuffers);
                                                                                                                                                                                                                        +￿ const VkCommandBuffer* pCommandBuffers);
                                                                                                                                                                                                                        Description
                                                                                                                                                                                                                        Any primary command buffer that is in the recording or executable state and has any element of {@code pCommandBuffers} recorded into it, becomes invalid. @@ -7120,9 +7213,10 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                                        C Specification
                                                                                                                                                                                                                        To begin recording a command buffer, call: -
                                                                                                                                                                                                                        VkResult vkBeginCommandBuffer(
                                                                                                                                                                                                                        +        
                                                                                                                                                                                                                        +￿VkResult vkBeginCommandBuffer(
                                                                                                                                                                                                                         ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                        -￿    const VkCommandBufferBeginInfo*             pBeginInfo);
                                                                                                                                                                                                                        +￿ const VkCommandBufferBeginInfo* pBeginInfo);
                                                                                                                                                                                                                        Valid Usage
                                                                                                                                                                                                                          @@ -7174,8 +7268,9 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                          To complete recording of a command buffer, call: -
                                                                                                                                                                                                                          VkResult vkEndCommandBuffer(
                                                                                                                                                                                                                          -￿    VkCommandBuffer                             commandBuffer);
                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          +￿VkResult vkEndCommandBuffer(
                                                                                                                                                                                                                          +￿    VkCommandBuffer                             commandBuffer);
                                                                                                                                                                                                                          Description
                                                                                                                                                                                                                          If there was an error during recording, the application will be notified by an unsuccessful return code returned by #EndCommandBuffer(). If the application wishes to further use the command buffer, the command buffer must be reset. The command buffer must have been in the recording state, and is moved to the executable state. @@ -7225,9 +7320,10 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                          To reset command buffers, call: -
                                                                                                                                                                                                                          VkResult vkResetCommandBuffer(
                                                                                                                                                                                                                          +        
                                                                                                                                                                                                                          +￿VkResult vkResetCommandBuffer(
                                                                                                                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                          -￿    VkCommandBufferResetFlags                   flags);
                                                                                                                                                                                                                          +￿ VkCommandBufferResetFlags flags);
                                                                                                                                                                                                                          Description
                                                                                                                                                                                                                          Any primary command buffer that is in the recording or executable state and has {@code commandBuffer} recorded into it, becomes invalid. @@ -7266,9 +7362,10 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V VkCommandBuffer.IN("commandBuffer", "the command buffer to reset. The command buffer can be in any state other than pending, and is moved into the initial state."), VkCommandBufferResetFlags.IN("flags", """a bitmask controlling the reset operation. Bits which can be set include: -
                                                                                                                                                                                                                          typedef enum VkCommandBufferResetFlagBits {
                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          +￿typedef enum VkCommandBufferResetFlagBits {
                                                                                                                                                                                                                           ￿    VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
                                                                                                                                                                                                                          -} VkCommandBufferResetFlagBits;
                                                                                                                                                                                                                          +￿} VkCommandBufferResetFlagBits;
                                                                                                                                                                                                                          If {@code flags} includes #COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT, then most or all memory resources currently owned by the command buffer should be returned to the parent command pool. If this flag is not set, then the command buffer may hold onto memory resources and reuse them when recording commands. {@code commandBuffer} is moved to the initial state.""") ) @@ -7283,10 +7380,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                          Once a pipeline has been created, it can be bound to the command buffer using the command: -
                                                                                                                                                                                                                          void vkCmdBindPipeline(
                                                                                                                                                                                                                          +        
                                                                                                                                                                                                                          +￿void vkCmdBindPipeline(
                                                                                                                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                           ￿    VkPipelineBindPoint                         pipelineBindPoint,
                                                                                                                                                                                                                          -￿    VkPipeline                                  pipeline);
                                                                                                                                                                                                                          +￿ VkPipeline pipeline);
                                                                                                                                                                                                                          Description
                                                                                                                                                                                                                          Once bound, a pipeline binding affects subsequent graphics or compute commands in the command buffer until a different pipeline is bound to the bind point. The pipeline bound to #PIPELINE_BIND_POINT_COMPUTE controls the behavior of #CmdDispatch() and #CmdDispatchIndirect(). The pipeline bound to #PIPELINE_BIND_POINT_GRAPHICS controls the behavior of #CmdDraw(), #CmdDrawIndexed(), #CmdDrawIndirect(), and #CmdDrawIndexedIndirect(). No other commands are affected by the pipeline state. @@ -7325,10 +7423,11 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V VkCommandBuffer.IN("commandBuffer", "the command buffer that the pipeline will be bound to."), VkPipelineBindPoint.IN("pipelineBindPoint", """specifies the bind point, and must have one of the values -
                                                                                                                                                                                                                          typedef enum VkPipelineBindPoint {
                                                                                                                                                                                                                          +
                                                                                                                                                                                                                          +￿typedef enum VkPipelineBindPoint {
                                                                                                                                                                                                                           ￿    VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
                                                                                                                                                                                                                           ￿    VK_PIPELINE_BIND_POINT_COMPUTE = 1,
                                                                                                                                                                                                                          -} VkPipelineBindPoint;
                                                                                                                                                                                                                          +￿} VkPipelineBindPoint;
                                                                                                                                                                                                                          specifying whether {@code pipeline} will be bound as a compute (#PIPELINE_BIND_POINT_COMPUTE) or graphics (#PIPELINE_BIND_POINT_GRAPHICS) pipeline. There are separate bind points for each of graphics and compute, so binding one does not disturb the other."""), VkPipeline.IN("pipeline", "the pipeline to be bound.") @@ -7342,11 +7441,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                          If the bound pipeline state object was not created with the #DYNAMIC_STATE_VIEWPORT dynamic state enabled, viewport transformation parameters are specified using the {@code pViewports} member of ##VkPipelineViewportStateCreateInfo in the pipeline state object. If the pipeline state object was created with the #DYNAMIC_STATE_VIEWPORT dynamic state enabled, the viewport transformation parameters are dynamically set and changed with the command: -
                                                                                                                                                                                                                          void vkCmdSetViewport(
                                                                                                                                                                                                                          +        
                                                                                                                                                                                                                          +￿void vkCmdSetViewport(
                                                                                                                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                           ￿    uint32_t                                    firstViewport,
                                                                                                                                                                                                                           ￿    uint32_t                                    viewportCount,
                                                                                                                                                                                                                          -￿    const VkViewport*                           pViewports);
                                                                                                                                                                                                                          +￿ const VkViewport* pViewports);
                                                                                                                                                                                                                          Description
                                                                                                                                                                                                                          The viewport parameters taken from element i of {@code pViewports} replace the current state for the viewport index firstViewport {plus} i, for i in [0, viewportCount). @@ -7399,11 +7499,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                          The scissor test determines if a fragment's framebuffer coordinates (xf,yf) lie within the scissor rectangle corresponding to the viewport index (see Controlling the Viewport) used by the primitive that generated the fragment. If the pipeline state object is created without #DYNAMIC_STATE_SCISSOR enabled then the scissor rectangles are set by the ##VkPipelineViewportStateCreateInfo state of the pipeline state object. Otherwise, to dynamically set the scissor rectangles call: -
                                                                                                                                                                                                                          void vkCmdSetScissor(
                                                                                                                                                                                                                          +        
                                                                                                                                                                                                                          +￿void vkCmdSetScissor(
                                                                                                                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                           ￿    uint32_t                                    firstScissor,
                                                                                                                                                                                                                           ￿    uint32_t                                    scissorCount,
                                                                                                                                                                                                                          -￿    const VkRect2D*                             pScissors);
                                                                                                                                                                                                                          +￿ const VkRect2D* pScissors);
                                                                                                                                                                                                                          Description
                                                                                                                                                                                                                          The scissor rectangles taken from element i of {@code pScissors} replace the current state for the scissor index firstScissor + i, for i in [0, scissorCount). @@ -7461,9 +7562,10 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                          The line width is set by the {@code lineWidth} property of ##VkPipelineRasterizationStateCreateInfo in the currently active pipeline if the pipeline was not created with #DYNAMIC_STATE_LINE_WIDTH enabled. Otherwise, the line width is set by calling #CmdSetLineWidth(): -
                                                                                                                                                                                                                          void vkCmdSetLineWidth(
                                                                                                                                                                                                                          +        
                                                                                                                                                                                                                          +￿void vkCmdSetLineWidth(
                                                                                                                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                          -￿    float                                       lineWidth);
                                                                                                                                                                                                                          +￿ float lineWidth);
                                                                                                                                                                                                                          Valid Usage
                                                                                                                                                                                                                            @@ -7503,11 +7605,12 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V
                                                                                                                                                                                                                            C Specification
                                                                                                                                                                                                                            The depth values of all fragments generated by the rasterization of a polygon can be offset by a single value that is computed for that polygon. This behavior is controlled by the {@code depthBiasEnable}, {@code depthBiasConstantFactor}, {@code depthBiasClamp}, and {@code depthBiasSlopeFactor} members of ##VkPipelineRasterizationStateCreateInfo, or by the corresponding parameters to the #CmdSetDepthBias() command if depth bias state is dynamic. -
                                                                                                                                                                                                                            void vkCmdSetDepthBias(
                                                                                                                                                                                                                            +        
                                                                                                                                                                                                                            +￿void vkCmdSetDepthBias(
                                                                                                                                                                                                                             ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                             ￿    float                                       depthBiasConstantFactor,
                                                                                                                                                                                                                             ￿    float                                       depthBiasClamp,
                                                                                                                                                                                                                            -￿    float                                       depthBiasSlopeFactor);
                                                                                                                                                                                                                            +￿ float depthBiasSlopeFactor);
                                                                                                                                                                                                                            Description
                                                                                                                                                                                                                            If {@code depthBiasEnable} is #FALSE, no depth bias is applied and the fragment's depth values are unchanged. @@ -7516,11 +7619,13 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V The maximum depth slope m of a triangle is -
                                                                                                                                                                                                                            ￿      m = sqrt((∂zf / ∂xf)2 + (∂zf / ∂yf)2)
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            +￿      m = sqrt((∂zf / ∂xf)2 + (∂zf / ∂yf)2)
                                                                                                                                                                                                                            where (xf, yf, zf) is a point on the triangle. m may be approximated as -
                                                                                                                                                                                                                            ￿      m = max(abs(∂zf / ∂xf), abs(∂zf / ∂yf))
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            +￿      m = max(abs(∂zf / ∂xf), abs(∂zf / ∂yf))
                                                                                                                                                                                                                            The minimum resolvable difference r is an implementation-dependent parameter that depends on the depth buffer representation. It is the smallest difference in framebuffer coordinate z values that is guaranteed to remain distinct throughout polygon rasterization and in the depth buffer. All pairs of fragments generated by the rasterization of two polygons with otherwise identical vertices, but zf values that differ by r, will have distinct depth values. @@ -7534,9 +7639,10 @@ val VK10 = "VK10".nativeClass(VULKAN_PACKAGE, "VK10", prefix = "VK", binding = V The bias value o for a polygon is -
                                                                                                                                                                                                                            ￿        m × depthBiasSlopeFactor + r × depthBiasConstantFactor                     depthBiasClamp = 0 or NaN
                                                                                                                                                                                                                            -o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, depthBiasClamp)    depthBiasClamp > 0
                                                                                                                                                                                                                            -￿    max(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, depthBiasClamp)    depthBiasClamp < 0
                                                                                                                                                                                                                            +
                                                                                                                                                                                                                            +￿        m × depthBiasSlopeFactor + r × depthBiasConstantFactor                     depthBiasClamp = 0 or NaN
                                                                                                                                                                                                                            +￿o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, depthBiasClamp)    depthBiasClamp > 0
                                                                                                                                                                                                                            +￿    max(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, depthBiasClamp)    depthBiasClamp < 0
                                                                                                                                                                                                                            m is computed as described above. If the depth buffer uses a fixed-point representation, m is a function of depth values in the range [0,1], and o is applied to depth values in the same range. @@ -7582,9 +7688,10 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                            C Specification
                                                                                                                                                                                                                            Otherwise, to dynamically set and change the blend constant, call: -
                                                                                                                                                                                                                            void vkCmdSetBlendConstants(
                                                                                                                                                                                                                            +        
                                                                                                                                                                                                                            +￿void vkCmdSetBlendConstants(
                                                                                                                                                                                                                             ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                            -￿    const float                                 blendConstants[4]);
                                                                                                                                                                                                                            +￿ const float blendConstants[4]);
                                                                                                                                                                                                                            Valid Usage
                                                                                                                                                                                                                              @@ -7623,10 +7730,11 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                              C Specification
                                                                                                                                                                                                                              The depth bounds test conditionally disables coverage of a sample based on the outcome of a comparison between the value za in the depth attachment at location (xf,yf) (for the appropriate sample) and a range of values. The test is enabled or disabled by the {@code depthBoundsTestEnable} member of ##VkPipelineDepthStencilStateCreateInfo: If the pipeline state object is created without the #DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then the range of values used in the depth bounds test are defined by the {@code minDepthBounds} and {@code maxDepthBounds} members of the ##VkPipelineDepthStencilStateCreateInfo structure. Otherwise, to dynamically set the depth bounds range values call: -
                                                                                                                                                                                                                              void vkCmdSetDepthBounds(
                                                                                                                                                                                                                              +        
                                                                                                                                                                                                                              +￿void vkCmdSetDepthBounds(
                                                                                                                                                                                                                               ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                               ￿    float                                       minDepthBounds,
                                                                                                                                                                                                                              -￿    float                                       maxDepthBounds);
                                                                                                                                                                                                                              +￿ float maxDepthBounds);
                                                                                                                                                                                                                              Valid Usage
                                                                                                                                                                                                                                @@ -7668,10 +7776,11 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                C Specification
                                                                                                                                                                                                                                If the pipeline state object is created with the #DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, then to dynamically set the stencil compare mask call: -
                                                                                                                                                                                                                                void vkCmdSetStencilCompareMask(
                                                                                                                                                                                                                                +        
                                                                                                                                                                                                                                +￿void vkCmdSetStencilCompareMask(
                                                                                                                                                                                                                                 ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                 ￿    VkStencilFaceFlags                          faceMask,
                                                                                                                                                                                                                                -￿    uint32_t                                    compareMask);
                                                                                                                                                                                                                                +￿ uint32_t compareMask);
                                                                                                                                                                                                                                Valid Usage
                                                                                                                                                                                                                                  @@ -7702,11 +7811,12 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept VkCommandBuffer.IN("commandBuffer", "the command buffer into which the command will be recorded."), VkStencilFaceFlags.IN("faceMask", """a bitmask specifying the set of stencil state for which to update the compare mask. Bits which can be set include: -
                                                                                                                                                                                                                                  typedef enum VkStencilFaceFlagBits {
                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                  +￿typedef enum VkStencilFaceFlagBits {
                                                                                                                                                                                                                                   ￿    VK_STENCIL_FACE_FRONT_BIT = 0x00000001,
                                                                                                                                                                                                                                   ￿    VK_STENCIL_FACE_BACK_BIT = 0x00000002,
                                                                                                                                                                                                                                   ￿    VK_STENCIL_FRONT_AND_BACK = 0x00000003,
                                                                                                                                                                                                                                  -} VkStencilFaceFlagBits;
                                                                                                                                                                                                                                  +￿} VkStencilFaceFlagBits;
                                                                                                                                                                                                                                  • #STENCIL_FACE_FRONT_BIT indicates that only the front set of stencil state is updated.
                                                                                                                                                                                                                                  • @@ -7724,10 +7834,11 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                    C Specification
                                                                                                                                                                                                                                    If the pipeline state object is created with the #DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, then to dynamically set the stencil write mask call: -
                                                                                                                                                                                                                                    void vkCmdSetStencilWriteMask(
                                                                                                                                                                                                                                    +        
                                                                                                                                                                                                                                    +￿void vkCmdSetStencilWriteMask(
                                                                                                                                                                                                                                     ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                     ￿    VkStencilFaceFlags                          faceMask,
                                                                                                                                                                                                                                    -￿    uint32_t                                    writeMask);
                                                                                                                                                                                                                                    +￿ uint32_t writeMask);
                                                                                                                                                                                                                                    Valid Usage
                                                                                                                                                                                                                                      @@ -7769,10 +7880,11 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                      C Specification
                                                                                                                                                                                                                                      If the pipeline state object is created with the #DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, then to dynamically set the stencil reference value call: -
                                                                                                                                                                                                                                      void vkCmdSetStencilReference(
                                                                                                                                                                                                                                      +        
                                                                                                                                                                                                                                      +￿void vkCmdSetStencilReference(
                                                                                                                                                                                                                                       ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                       ￿    VkStencilFaceFlags                          faceMask,
                                                                                                                                                                                                                                      -￿    uint32_t                                    reference);
                                                                                                                                                                                                                                      +￿ uint32_t reference);
                                                                                                                                                                                                                                      Valid Usage
                                                                                                                                                                                                                                        @@ -7814,7 +7926,8 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                        C Specification
                                                                                                                                                                                                                                        To bind one or more descriptor sets to a command buffer, call: -
                                                                                                                                                                                                                                        void vkCmdBindDescriptorSets(
                                                                                                                                                                                                                                        +        
                                                                                                                                                                                                                                        +￿void vkCmdBindDescriptorSets(
                                                                                                                                                                                                                                         ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                         ￿    VkPipelineBindPoint                         pipelineBindPoint,
                                                                                                                                                                                                                                         ￿    VkPipelineLayout                            layout,
                                                                                                                                                                                                                                        @@ -7822,7 +7935,7 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                         ￿    uint32_t                                    descriptorSetCount,
                                                                                                                                                                                                                                         ￿    const VkDescriptorSet*                      pDescriptorSets,
                                                                                                                                                                                                                                         ￿    uint32_t                                    dynamicOffsetCount,
                                                                                                                                                                                                                                        -￿    const uint32_t*                             pDynamicOffsets);
                                                                                                                                                                                                                                        +￿ const uint32_t* pDynamicOffsets);
                                                                                                                                                                                                                                        Description
                                                                                                                                                                                                                                        #CmdBindDescriptorSets() causes the sets numbered [{@code firstSet}.. {@code firstSet}+{@code descriptorSetCount}-1] to use the bindings stored in {@code pDescriptorSets}[0..{@code descriptorSetCount}-1] for subsequent rendering commands (either compute or graphics, according to the {@code pipelineBindPoint}). Any bindings that were previously applied via these sets are no longer valid. @@ -7892,11 +8005,12 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                        C Specification
                                                                                                                                                                                                                                        To bind an index buffer to a command buffer, call: -
                                                                                                                                                                                                                                        void vkCmdBindIndexBuffer(
                                                                                                                                                                                                                                        +        
                                                                                                                                                                                                                                        +￿void vkCmdBindIndexBuffer(
                                                                                                                                                                                                                                         ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                         ￿    VkBuffer                                    buffer,
                                                                                                                                                                                                                                         ￿    VkDeviceSize                                offset,
                                                                                                                                                                                                                                        -￿    VkIndexType                                 indexType);
                                                                                                                                                                                                                                        +￿ VkIndexType indexType);
                                                                                                                                                                                                                                        Valid Usage
                                                                                                                                                                                                                                          @@ -7933,10 +8047,11 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept VkBuffer.IN("buffer", "the buffer being bound."), VkDeviceSize.IN("offset", "the starting offset in bytes within {@code buffer} used in index buffer address calculations."), VkIndexType.IN("indexType", """selects whether indices are treated as 16 bits or 32 bits. Possible values include: -
                                                                                                                                                                                                                                          typedef enum VkIndexType {
                                                                                                                                                                                                                                          +
                                                                                                                                                                                                                                          +￿typedef enum VkIndexType {
                                                                                                                                                                                                                                           ￿    VK_INDEX_TYPE_UINT16 = 0,
                                                                                                                                                                                                                                           ￿    VK_INDEX_TYPE_UINT32 = 1,
                                                                                                                                                                                                                                          -} VkIndexType;
                                                                                                                                                                                                                                          """) +￿} VkIndexType;
                                                                                                                                                                                                                                          """) ) void( @@ -7947,12 +8062,13 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                                          To bind vertex buffers to a command buffer for use in subsequent draw commands, call: -
                                                                                                                                                                                                                                          void vkCmdBindVertexBuffers(
                                                                                                                                                                                                                                          +        
                                                                                                                                                                                                                                          +￿void vkCmdBindVertexBuffers(
                                                                                                                                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                           ￿    uint32_t                                    firstBinding,
                                                                                                                                                                                                                                           ￿    uint32_t                                    bindingCount,
                                                                                                                                                                                                                                           ￿    const VkBuffer*                             pBuffers,
                                                                                                                                                                                                                                          -￿    const VkDeviceSize*                         pOffsets);
                                                                                                                                                                                                                                          +￿ const VkDeviceSize* pOffsets);
                                                                                                                                                                                                                                          Description
                                                                                                                                                                                                                                          The values taken from elements i of {@code pBuffers} and {@code pOffsets} replace the current state for the vertex input binding firstBinding + i, for i in [0, bindingCount). The vertex input binding is updated to start at the offset indicated by {@code pOffsets}[i] from the start of the buffer {@code pBuffers}[i]. All vertex input attributes that use each of these bindings will use these updated addresses in their address calculations for subsequent draw commands. @@ -8005,12 +8121,13 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                                          To record a non-indexed draw, call: -
                                                                                                                                                                                                                                          void vkCmdDraw(
                                                                                                                                                                                                                                          +        
                                                                                                                                                                                                                                          +￿void vkCmdDraw(
                                                                                                                                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                           ￿    uint32_t                                    vertexCount,
                                                                                                                                                                                                                                           ￿    uint32_t                                    instanceCount,
                                                                                                                                                                                                                                           ￿    uint32_t                                    firstVertex,
                                                                                                                                                                                                                                          -￿    uint32_t                                    firstInstance);
                                                                                                                                                                                                                                          +￿ uint32_t firstInstance);
                                                                                                                                                                                                                                          Description
                                                                                                                                                                                                                                          When the command is executed, primitives are assembled using the current primitive topology and {@code vertexCount} consecutive vertex indices with the first {@code vertexIndex} value equal to {@code firstVertex}. The primitives are drawn {@code instanceCount} times with {@code instanceIndex} starting with {@code firstInstance} and increasing sequentially for each instance. The assembled primitives execute the currently bound graphics pipeline. @@ -8074,13 +8191,14 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                                          To record an indexed draw, call: -
                                                                                                                                                                                                                                          void vkCmdDrawIndexed(
                                                                                                                                                                                                                                          +        
                                                                                                                                                                                                                                          +￿void vkCmdDrawIndexed(
                                                                                                                                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                           ￿    uint32_t                                    indexCount,
                                                                                                                                                                                                                                           ￿    uint32_t                                    instanceCount,
                                                                                                                                                                                                                                           ￿    uint32_t                                    firstIndex,
                                                                                                                                                                                                                                           ￿    int32_t                                     vertexOffset,
                                                                                                                                                                                                                                          -￿    uint32_t                                    firstInstance);
                                                                                                                                                                                                                                          +￿ uint32_t firstInstance);
                                                                                                                                                                                                                                          Description
                                                                                                                                                                                                                                          When the command is executed, primitives are assembled using the current primitive topology and {@code indexCount} vertices whose indices are retrieved from the index buffer. The index buffer is treated as an array of tightly packed unsigned integers of size defined by the #CmdBindIndexBuffer(){@code ::indexType} parameter with which the buffer was bound. @@ -8150,12 +8268,13 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                                          To record a non-indexed indirect draw, call: -
                                                                                                                                                                                                                                          void vkCmdDrawIndirect(
                                                                                                                                                                                                                                          +        
                                                                                                                                                                                                                                          +￿void vkCmdDrawIndirect(
                                                                                                                                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                           ￿    VkBuffer                                    buffer,
                                                                                                                                                                                                                                           ￿    VkDeviceSize                                offset,
                                                                                                                                                                                                                                           ￿    uint32_t                                    drawCount,
                                                                                                                                                                                                                                          -￿    uint32_t                                    stride);
                                                                                                                                                                                                                                          +￿ uint32_t stride);
                                                                                                                                                                                                                                          Description
                                                                                                                                                                                                                                          #CmdDrawIndirect() behaves similarly to #CmdDraw() except that the parameters are read by the device from a buffer during execution. {@code drawCount} draws are executed by the command, with parameters taken from {@code buffer} starting at {@code offset} and increasing by {@code stride} bytes for each successive draw. The parameters of each draw are encoded in an array of ##VkDrawIndirectCommand structures. If {@code drawCount} is less than or equal to one, {@code stride} is ignored. @@ -8228,12 +8347,13 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                                          To record an indexed indirect draw, call: -
                                                                                                                                                                                                                                          void vkCmdDrawIndexedIndirect(
                                                                                                                                                                                                                                          +        
                                                                                                                                                                                                                                          +￿void vkCmdDrawIndexedIndirect(
                                                                                                                                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                           ￿    VkBuffer                                    buffer,
                                                                                                                                                                                                                                           ￿    VkDeviceSize                                offset,
                                                                                                                                                                                                                                           ￿    uint32_t                                    drawCount,
                                                                                                                                                                                                                                          -￿    uint32_t                                    stride);
                                                                                                                                                                                                                                          +￿ uint32_t stride);
                                                                                                                                                                                                                                          Description
                                                                                                                                                                                                                                          #CmdDrawIndexedIndirect() behaves similarly to #CmdDrawIndexed() except that the parameters are read by the device from a buffer during execution. {@code drawCount} draws are executed by the command, with parameters taken from {@code buffer} starting at {@code offset} and increasing by {@code stride} bytes for each successive draw. The parameters of each draw are encoded in an array of ##VkDrawIndexedIndirectCommand structures. If {@code drawCount} is less than or equal to one, {@code stride} is ignored. @@ -8306,11 +8426,12 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                                          To record a dispatch, call: -
                                                                                                                                                                                                                                          void vkCmdDispatch(
                                                                                                                                                                                                                                          +        
                                                                                                                                                                                                                                          +￿void vkCmdDispatch(
                                                                                                                                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                           ￿    uint32_t                                    groupCountX,
                                                                                                                                                                                                                                           ￿    uint32_t                                    groupCountY,
                                                                                                                                                                                                                                          -￿    uint32_t                                    groupCountZ);
                                                                                                                                                                                                                                          +￿ uint32_t groupCountZ);
                                                                                                                                                                                                                                          Description
                                                                                                                                                                                                                                          When the command is executed, a global workgroup consisting of groupCountX {times} groupCountY {times} groupCountZ local workgroups is assembled. @@ -8369,10 +8490,11 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                                          To record an indirect command dispatch, call: -
                                                                                                                                                                                                                                          void vkCmdDispatchIndirect(
                                                                                                                                                                                                                                          +        
                                                                                                                                                                                                                                          +￿void vkCmdDispatchIndirect(
                                                                                                                                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                           ￿    VkBuffer                                    buffer,
                                                                                                                                                                                                                                          -￿    VkDeviceSize                                offset);
                                                                                                                                                                                                                                          +￿ VkDeviceSize offset);
                                                                                                                                                                                                                                          Description
                                                                                                                                                                                                                                          #CmdDispatchIndirect() behaves similarly to #CmdDispatch() 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 {@code buffer} starting at {@code offset}. @@ -8433,12 +8555,13 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                                          To copy data between buffer objects, call: -
                                                                                                                                                                                                                                          void vkCmdCopyBuffer(
                                                                                                                                                                                                                                          +        
                                                                                                                                                                                                                                          +￿void vkCmdCopyBuffer(
                                                                                                                                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                           ￿    VkBuffer                                    srcBuffer,
                                                                                                                                                                                                                                           ￿    VkBuffer                                    dstBuffer,
                                                                                                                                                                                                                                           ￿    uint32_t                                    regionCount,
                                                                                                                                                                                                                                          -￿    const VkBufferCopy*                         pRegions);
                                                                                                                                                                                                                                          +￿ const VkBufferCopy* pRegions);
                                                                                                                                                                                                                                          Description
                                                                                                                                                                                                                                          Each region in {@code pRegions} is copied from the source buffer to the same region of the destination buffer. {@code srcBuffer} and {@code dstBuffer} can be the same buffer or alias the same memory, but the result is undefined if the copy regions overlap in memory. @@ -8501,14 +8624,15 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                                          To copy data between image objects, call: -
                                                                                                                                                                                                                                          void vkCmdCopyImage(
                                                                                                                                                                                                                                          +        
                                                                                                                                                                                                                                          +￿void vkCmdCopyImage(
                                                                                                                                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                           ￿    VkImage                                     srcImage,
                                                                                                                                                                                                                                           ￿    VkImageLayout                               srcImageLayout,
                                                                                                                                                                                                                                           ￿    VkImage                                     dstImage,
                                                                                                                                                                                                                                           ￿    VkImageLayout                               dstImageLayout,
                                                                                                                                                                                                                                           ￿    uint32_t                                    regionCount,
                                                                                                                                                                                                                                          -￿    const VkImageCopy*                          pRegions);
                                                                                                                                                                                                                                          +￿ const VkImageCopy* pRegions);
                                                                                                                                                                                                                                          Description
                                                                                                                                                                                                                                          Each region in {@code pRegions} is copied from the source image to the same region of the destination image. {@code srcImage} and {@code dstImage} can be the same image or alias the same memory. @@ -8606,7 +8730,8 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                                          To copy regions of a source image into a destination image, potentially performing format conversion, arbitrary scaling, and filtering, call: -
                                                                                                                                                                                                                                          void vkCmdBlitImage(
                                                                                                                                                                                                                                          +        
                                                                                                                                                                                                                                          +￿void vkCmdBlitImage(
                                                                                                                                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                           ￿    VkImage                                     srcImage,
                                                                                                                                                                                                                                           ￿    VkImageLayout                               srcImageLayout,
                                                                                                                                                                                                                                          @@ -8614,7 +8739,7 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                           ￿    VkImageLayout                               dstImageLayout,
                                                                                                                                                                                                                                           ￿    uint32_t                                    regionCount,
                                                                                                                                                                                                                                           ￿    const VkImageBlit*                          pRegions,
                                                                                                                                                                                                                                          -￿    VkFilter                                    filter);
                                                                                                                                                                                                                                          +￿ VkFilter filter);
                                                                                                                                                                                                                                          Description
                                                                                                                                                                                                                                          #CmdBlitImage() must not be used for multisampled source or destination images. Use #CmdResolveImage() for this purpose. @@ -8775,13 +8900,14 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                                          To copy data from a buffer object to an image object, call: -
                                                                                                                                                                                                                                          void vkCmdCopyBufferToImage(
                                                                                                                                                                                                                                          +        
                                                                                                                                                                                                                                          +￿void vkCmdCopyBufferToImage(
                                                                                                                                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                           ￿    VkBuffer                                    srcBuffer,
                                                                                                                                                                                                                                           ￿    VkImage                                     dstImage,
                                                                                                                                                                                                                                           ￿    VkImageLayout                               dstImageLayout,
                                                                                                                                                                                                                                           ￿    uint32_t                                    regionCount,
                                                                                                                                                                                                                                          -￿    const VkBufferImageCopy*                    pRegions);
                                                                                                                                                                                                                                          +￿ const VkBufferImageCopy* pRegions);
                                                                                                                                                                                                                                          Description
                                                                                                                                                                                                                                          Each region in {@code pRegions} is copied from the specified region of the source buffer to the specified region of the destination image. @@ -8847,13 +8973,14 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                                          To copy data from an image object to a buffer object, call: -
                                                                                                                                                                                                                                          void vkCmdCopyImageToBuffer(
                                                                                                                                                                                                                                          +        
                                                                                                                                                                                                                                          +￿void vkCmdCopyImageToBuffer(
                                                                                                                                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                           ￿    VkImage                                     srcImage,
                                                                                                                                                                                                                                           ￿    VkImageLayout                               srcImageLayout,
                                                                                                                                                                                                                                           ￿    VkBuffer                                    dstBuffer,
                                                                                                                                                                                                                                           ￿    uint32_t                                    regionCount,
                                                                                                                                                                                                                                          -￿    const VkBufferImageCopy*                    pRegions);
                                                                                                                                                                                                                                          +￿ const VkBufferImageCopy* pRegions);
                                                                                                                                                                                                                                          Description
                                                                                                                                                                                                                                          Each region in {@code pRegions} is copied from the specified region of the source image to the specified region of the destination buffer. @@ -8919,12 +9046,13 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                                          To update buffer data inline in a command buffer, call: -
                                                                                                                                                                                                                                          void vkCmdUpdateBuffer(
                                                                                                                                                                                                                                          +        
                                                                                                                                                                                                                                          +￿void vkCmdUpdateBuffer(
                                                                                                                                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                           ￿    VkBuffer                                    dstBuffer,
                                                                                                                                                                                                                                           ￿    VkDeviceSize                                dstOffset,
                                                                                                                                                                                                                                           ￿    VkDeviceSize                                dataSize,
                                                                                                                                                                                                                                          -￿    const void*                                 pData);
                                                                                                                                                                                                                                          +￿ const void* pData);
                                                                                                                                                                                                                                          Description
                                                                                                                                                                                                                                          {@code dataSize} must be less than or equal to 65536 bytes. For larger updates, applications can use buffer to buffer copies. @@ -8984,12 +9112,13 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                                          To clear buffer data, call: -
                                                                                                                                                                                                                                          void vkCmdFillBuffer(
                                                                                                                                                                                                                                          +        
                                                                                                                                                                                                                                          +￿void vkCmdFillBuffer(
                                                                                                                                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                           ￿    VkBuffer                                    dstBuffer,
                                                                                                                                                                                                                                           ￿    VkDeviceSize                                dstOffset,
                                                                                                                                                                                                                                           ￿    VkDeviceSize                                size,
                                                                                                                                                                                                                                          -￿    uint32_t                                    data);
                                                                                                                                                                                                                                          +￿ uint32_t data);
                                                                                                                                                                                                                                          Description
                                                                                                                                                                                                                                          #CmdFillBuffer() is treated as "{@code transfer}" operation for the purposes of synchronization barriers. The #BUFFER_USAGE_TRANSFER_DST_BIT must be specified in {@code usage} of ##VkBufferCreateInfo in order for the buffer to be compatible with #CmdFillBuffer(). @@ -9043,13 +9172,14 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                                          To clear one or more subranges of a color image, call: -
                                                                                                                                                                                                                                          void vkCmdClearColorImage(
                                                                                                                                                                                                                                          +        
                                                                                                                                                                                                                                          +￿void vkCmdClearColorImage(
                                                                                                                                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                           ￿    VkImage                                     image,
                                                                                                                                                                                                                                           ￿    VkImageLayout                               imageLayout,
                                                                                                                                                                                                                                           ￿    const VkClearColorValue*                    pColor,
                                                                                                                                                                                                                                           ￿    uint32_t                                    rangeCount,
                                                                                                                                                                                                                                          -￿    const VkImageSubresourceRange*              pRanges);
                                                                                                                                                                                                                                          +￿ const VkImageSubresourceRange* pRanges);
                                                                                                                                                                                                                                          Description
                                                                                                                                                                                                                                          Each specified range in {@code pRanges} is cleared to the value specified by {@code pColor}. @@ -9111,13 +9241,14 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                          C Specification
                                                                                                                                                                                                                                          To clear one or more subranges of a depth/stencil image, call: -
                                                                                                                                                                                                                                          void vkCmdClearDepthStencilImage(
                                                                                                                                                                                                                                          +        
                                                                                                                                                                                                                                          +￿void vkCmdClearDepthStencilImage(
                                                                                                                                                                                                                                           ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                           ￿    VkImage                                     image,
                                                                                                                                                                                                                                           ￿    VkImageLayout                               imageLayout,
                                                                                                                                                                                                                                           ￿    const VkClearDepthStencilValue*             pDepthStencil,
                                                                                                                                                                                                                                           ￿    uint32_t                                    rangeCount,
                                                                                                                                                                                                                                          -￿    const VkImageSubresourceRange*              pRanges);
                                                                                                                                                                                                                                          +￿ const VkImageSubresourceRange* pRanges);
                                                                                                                                                                                                                                          Valid Usage
                                                                                                                                                                                                                                            @@ -9176,12 +9307,13 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                            C Specification
                                                                                                                                                                                                                                            To clear one or more regions of color and depth/stencil attachments inside a render pass instance, call: -
                                                                                                                                                                                                                                            void vkCmdClearAttachments(
                                                                                                                                                                                                                                            +        
                                                                                                                                                                                                                                            +￿void vkCmdClearAttachments(
                                                                                                                                                                                                                                             ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                             ￿    uint32_t                                    attachmentCount,
                                                                                                                                                                                                                                             ￿    const VkClearAttachment*                    pAttachments,
                                                                                                                                                                                                                                             ￿    uint32_t                                    rectCount,
                                                                                                                                                                                                                                            -￿    const VkClearRect*                          pRects);
                                                                                                                                                                                                                                            +￿ const VkClearRect* pRects);
                                                                                                                                                                                                                                            Description
                                                                                                                                                                                                                                            #CmdClearAttachments() can clear multiple regions of each attachment used in the current subpass of a render pass instance. This command must be called only inside a render pass instance, and implicitly selects the images to clear based on the current framebuffer attachments and the command parameters. @@ -9237,14 +9369,15 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                            C Specification
                                                                                                                                                                                                                                            To resolve a multisample image to a non-multisample image, call: -
                                                                                                                                                                                                                                            void vkCmdResolveImage(
                                                                                                                                                                                                                                            +        
                                                                                                                                                                                                                                            +￿void vkCmdResolveImage(
                                                                                                                                                                                                                                             ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                             ￿    VkImage                                     srcImage,
                                                                                                                                                                                                                                             ￿    VkImageLayout                               srcImageLayout,
                                                                                                                                                                                                                                             ￿    VkImage                                     dstImage,
                                                                                                                                                                                                                                             ￿    VkImageLayout                               dstImageLayout,
                                                                                                                                                                                                                                             ￿    uint32_t                                    regionCount,
                                                                                                                                                                                                                                            -￿    const VkImageResolve*                       pRegions);
                                                                                                                                                                                                                                            +￿ const VkImageResolve* pRegions);
                                                                                                                                                                                                                                            Description
                                                                                                                                                                                                                                            During the resolve the samples corresponding to each pixel location in the source are converted to a single sample before being written to the destination. If the source formats are floating-point or normalized types, the sample values for each pixel are resolved in an implementation-dependent manner. If the source formats are integer types, a single sample's value is selected for each pixel. @@ -9318,10 +9451,11 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                            C Specification
                                                                                                                                                                                                                                            To set the state of an event to signaled from a device, call: -
                                                                                                                                                                                                                                            void vkCmdSetEvent(
                                                                                                                                                                                                                                            +        
                                                                                                                                                                                                                                            +￿void vkCmdSetEvent(
                                                                                                                                                                                                                                             ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                             ￿    VkEvent                                     event,
                                                                                                                                                                                                                                            -￿    VkPipelineStageFlags                        stageMask);
                                                                                                                                                                                                                                            +￿ VkPipelineStageFlags stageMask);
                                                                                                                                                                                                                                            Description
                                                                                                                                                                                                                                            When #CmdSetEvent() is submitted to a queue, it defines an execution dependency on commands that were submitted before it, and defines an event signal operation which sets the event to the signaled state. @@ -9378,10 +9512,11 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                            C Specification
                                                                                                                                                                                                                                            To set the state of an event to unsignaled from a device, call: -
                                                                                                                                                                                                                                            void vkCmdResetEvent(
                                                                                                                                                                                                                                            +        
                                                                                                                                                                                                                                            +￿void vkCmdResetEvent(
                                                                                                                                                                                                                                             ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                             ￿    VkEvent                                     event,
                                                                                                                                                                                                                                            -￿    VkPipelineStageFlags                        stageMask);
                                                                                                                                                                                                                                            +￿ VkPipelineStageFlags stageMask);
                                                                                                                                                                                                                                            Description
                                                                                                                                                                                                                                            When #CmdResetEvent() is submitted to a queue, it defines an execution dependency on commands that were submitted before it, and defines an event unsignal operation which resets the event to the unsignaled state. @@ -9439,7 +9574,8 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                            C Specification
                                                                                                                                                                                                                                            To wait for one or more events to enter the signaled state on a device, call: -
                                                                                                                                                                                                                                            void vkCmdWaitEvents(
                                                                                                                                                                                                                                            +        
                                                                                                                                                                                                                                            +￿void vkCmdWaitEvents(
                                                                                                                                                                                                                                             ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                             ￿    uint32_t                                    eventCount,
                                                                                                                                                                                                                                             ￿    const VkEvent*                              pEvents,
                                                                                                                                                                                                                                            @@ -9450,7 +9586,7 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                             ￿    uint32_t                                    bufferMemoryBarrierCount,
                                                                                                                                                                                                                                             ￿    const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
                                                                                                                                                                                                                                             ￿    uint32_t                                    imageMemoryBarrierCount,
                                                                                                                                                                                                                                            -￿    const VkImageMemoryBarrier*                 pImageMemoryBarriers);
                                                                                                                                                                                                                                            +￿ const VkImageMemoryBarrier* pImageMemoryBarriers);
                                                                                                                                                                                                                                            Description
                                                                                                                                                                                                                                            When #CmdWaitEvents() is submitted to a queue, it defines a memory dependency between prior event signal operations, and subsequent commands. @@ -9539,7 +9675,8 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                            C Specification
                                                                                                                                                                                                                                            To record a pipeline barrier, call: -
                                                                                                                                                                                                                                            void vkCmdPipelineBarrier(
                                                                                                                                                                                                                                            +        
                                                                                                                                                                                                                                            +￿void vkCmdPipelineBarrier(
                                                                                                                                                                                                                                             ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                             ￿    VkPipelineStageFlags                        srcStageMask,
                                                                                                                                                                                                                                             ￿    VkPipelineStageFlags                        dstStageMask,
                                                                                                                                                                                                                                            @@ -9549,7 +9686,7 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                             ￿    uint32_t                                    bufferMemoryBarrierCount,
                                                                                                                                                                                                                                             ￿    const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
                                                                                                                                                                                                                                             ￿    uint32_t                                    imageMemoryBarrierCount,
                                                                                                                                                                                                                                            -￿    const VkImageMemoryBarrier*                 pImageMemoryBarriers);
                                                                                                                                                                                                                                            +￿ const VkImageMemoryBarrier* pImageMemoryBarriers);
                                                                                                                                                                                                                                            Description
                                                                                                                                                                                                                                            When #CmdPipelineBarrier() is submitted to a queue, it defines a memory dependency between commands that were submitted before it, and those submitted after it. @@ -9626,11 +9763,12 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept VkPipelineStageFlags.IN("srcStageMask", "defines a source stage mask."), VkPipelineStageFlags.IN("dstStageMask", "defines a destination stage mask."), VkDependencyFlags.IN("dependencyFlags", """a bitmask of {@code VkDependencyFlagBits}. The bits that can be included in {@code dependencyFlags} are: -
                                                                                                                                                                                                                                            typedef enum VkDependencyFlagBits {
                                                                                                                                                                                                                                            +
                                                                                                                                                                                                                                            +￿typedef enum VkDependencyFlagBits {
                                                                                                                                                                                                                                             ￿    VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
                                                                                                                                                                                                                                             ￿    VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX = 0x00000002,
                                                                                                                                                                                                                                             ￿    VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX = 0x00000004,
                                                                                                                                                                                                                                            -} VkDependencyFlagBits;
                                                                                                                                                                                                                                            +￿} VkDependencyFlagBits;
                                                                                                                                                                                                                                            • #DEPENDENCY_BY_REGION_BIT signifies that dependencies will be framebuffer-local.
                                                                                                                                                                                                                                            • @@ -9651,11 +9789,12 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                              C Specification
                                                                                                                                                                                                                                              To begin a query, call: -
                                                                                                                                                                                                                                              void vkCmdBeginQuery(
                                                                                                                                                                                                                                              +        
                                                                                                                                                                                                                                              +￿void vkCmdBeginQuery(
                                                                                                                                                                                                                                               ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                               ￿    VkQueryPool                                 queryPool,
                                                                                                                                                                                                                                               ￿    uint32_t                                    query,
                                                                                                                                                                                                                                              -￿    VkQueryControlFlags                         flags);
                                                                                                                                                                                                                                              +￿ VkQueryControlFlags flags);
                                                                                                                                                                                                                                              Description
                                                                                                                                                                                                                                              If the {@code queryType} of the pool is #QUERY_TYPE_OCCLUSION and {@code flags} contains #QUERY_CONTROL_PRECISE_BIT, an implementation must return a result that matches the actual number of samples passed. This is described in more detail in Occlusion Queries. @@ -9704,9 +9843,10 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept VkQueryPool.IN("queryPool", "the query pool that will manage the results of the query."), uint32_t.IN("query", "the query index within the query pool that will contain the results."), VkQueryControlFlags.IN("flags", """a bitmask indicating constraints on the types of queries that can be performed. Bits which can be set include: -
                                                                                                                                                                                                                                              typedef enum VkQueryControlFlagBits {
                                                                                                                                                                                                                                              +
                                                                                                                                                                                                                                              +￿typedef enum VkQueryControlFlagBits {
                                                                                                                                                                                                                                               ￿    VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
                                                                                                                                                                                                                                              -} VkQueryControlFlagBits;
                                                                                                                                                                                                                                              """) +￿} VkQueryControlFlagBits;
                                                                                                                                                                                                                                              """) ) void( @@ -9717,10 +9857,11 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                              C Specification
                                                                                                                                                                                                                                              To end a query after the set of desired draw or dispatch commands is executed, call: -
                                                                                                                                                                                                                                              void vkCmdEndQuery(
                                                                                                                                                                                                                                              +        
                                                                                                                                                                                                                                              +￿void vkCmdEndQuery(
                                                                                                                                                                                                                                               ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                               ￿    VkQueryPool                                 queryPool,
                                                                                                                                                                                                                                              -￿    uint32_t                                    query);
                                                                                                                                                                                                                                              +￿ uint32_t query);
                                                                                                                                                                                                                                              Description
                                                                                                                                                                                                                                              As queries operate asynchronously, ending a query does not immediately set the query's status to available. A query is considered finished when the final results of the query are ready to be retrieved by #GetQueryPoolResults() and #CmdCopyQueryPoolResults(), and this is when the query's status is set to available. @@ -9770,11 +9911,12 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                              C Specification
                                                                                                                                                                                                                                              To reset a range of queries in a query pool, call: -
                                                                                                                                                                                                                                              void vkCmdResetQueryPool(
                                                                                                                                                                                                                                              +        
                                                                                                                                                                                                                                              +￿void vkCmdResetQueryPool(
                                                                                                                                                                                                                                               ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                               ￿    VkQueryPool                                 queryPool,
                                                                                                                                                                                                                                               ￿    uint32_t                                    firstQuery,
                                                                                                                                                                                                                                              -￿    uint32_t                                    queryCount);
                                                                                                                                                                                                                                              +￿ uint32_t queryCount);
                                                                                                                                                                                                                                              Description
                                                                                                                                                                                                                                              When executed on a queue, this command sets the status of query indices [firstQuery, firstQuery + queryCount - 1] to unavailable. @@ -9822,11 +9964,12 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                              C Specification
                                                                                                                                                                                                                                              To request a timestamp, call: -
                                                                                                                                                                                                                                              void vkCmdWriteTimestamp(
                                                                                                                                                                                                                                              +        
                                                                                                                                                                                                                                              +￿void vkCmdWriteTimestamp(
                                                                                                                                                                                                                                               ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                               ￿    VkPipelineStageFlagBits                     pipelineStage,
                                                                                                                                                                                                                                               ￿    VkQueryPool                                 queryPool,
                                                                                                                                                                                                                                              -￿    uint32_t                                    query);
                                                                                                                                                                                                                                              +￿ uint32_t query);
                                                                                                                                                                                                                                              Description
                                                                                                                                                                                                                                              #CmdWriteTimestamp() latches the value of the timer when all previous commands have completed executing as far as the specified pipeline stage, and writes the timestamp value to memory. When the timestamp value is written, the availability status of the query is set to available. @@ -9893,7 +10036,8 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                              C Specification
                                                                                                                                                                                                                                              To copy query statuses and numerical results directly to buffer memory, call: -
                                                                                                                                                                                                                                              void vkCmdCopyQueryPoolResults(
                                                                                                                                                                                                                                              +        
                                                                                                                                                                                                                                              +￿void vkCmdCopyQueryPoolResults(
                                                                                                                                                                                                                                               ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                               ￿    VkQueryPool                                 queryPool,
                                                                                                                                                                                                                                               ￿    uint32_t                                    firstQuery,
                                                                                                                                                                                                                                              @@ -9901,7 +10045,7 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                               ￿    VkBuffer                                    dstBuffer,
                                                                                                                                                                                                                                               ￿    VkDeviceSize                                dstOffset,
                                                                                                                                                                                                                                               ￿    VkDeviceSize                                stride,
                                                                                                                                                                                                                                              -￿    VkQueryResultFlags                          flags);
                                                                                                                                                                                                                                              +￿ VkQueryResultFlags flags);
                                                                                                                                                                                                                                              Description
                                                                                                                                                                                                                                              #CmdCopyQueryPoolResults() is guaranteed to see the effect of previous uses of #CmdResetQueryPool() in the same queue, without any additional synchronization. Thus, the results will always reflect the most recent use of the query. @@ -9978,13 +10122,14 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                              C Specification
                                                                                                                                                                                                                                              To update push constants, call: -
                                                                                                                                                                                                                                              void vkCmdPushConstants(
                                                                                                                                                                                                                                              +        
                                                                                                                                                                                                                                              +￿void vkCmdPushConstants(
                                                                                                                                                                                                                                               ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                               ￿    VkPipelineLayout                            layout,
                                                                                                                                                                                                                                               ￿    VkShaderStageFlags                          stageFlags,
                                                                                                                                                                                                                                               ￿    uint32_t                                    offset,
                                                                                                                                                                                                                                               ￿    uint32_t                                    size,
                                                                                                                                                                                                                                              -￿    const void*                                 pValues);
                                                                                                                                                                                                                                              +￿ const void* pValues);
                                                                                                                                                                                                                                              Valid Usage
                                                                                                                                                                                                                                                @@ -10037,10 +10182,11 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                                C Specification
                                                                                                                                                                                                                                                To begin a render pass instance, call: -
                                                                                                                                                                                                                                                void vkCmdBeginRenderPass(
                                                                                                                                                                                                                                                +        
                                                                                                                                                                                                                                                +￿void vkCmdBeginRenderPass(
                                                                                                                                                                                                                                                 ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                                 ￿    const VkRenderPassBeginInfo*                pRenderPassBegin,
                                                                                                                                                                                                                                                -￿    VkSubpassContents                           contents);
                                                                                                                                                                                                                                                +￿ VkSubpassContents contents);
                                                                                                                                                                                                                                                Description
                                                                                                                                                                                                                                                After beginning a render pass instance, the command buffer is ready to record the commands for the first subpass of that render pass. @@ -10086,10 +10232,11 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept VkCommandBuffer.IN("commandBuffer", "the command buffer in which to record the command."), const..VkRenderPassBeginInfo.p.IN("pRenderPassBegin", "a pointer to a ##VkRenderPassBeginInfo structure (defined below) which indicates the render pass to begin an instance of, and the framebuffer the instance uses."), VkSubpassContents.IN("contents", """specifies how the commands in the first subpass will be provided, and is one of the values: -
                                                                                                                                                                                                                                                typedef enum VkSubpassContents {
                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                +￿typedef enum VkSubpassContents {
                                                                                                                                                                                                                                                 ￿    VK_SUBPASS_CONTENTS_INLINE = 0,
                                                                                                                                                                                                                                                 ￿    VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
                                                                                                                                                                                                                                                -} VkSubpassContents;
                                                                                                                                                                                                                                                +￿} VkSubpassContents;
                                                                                                                                                                                                                                                If {@code contents} is #SUBPASS_CONTENTS_INLINE, the contents of the subpass will be recorded inline in the primary command buffer, and secondary command buffers must not be executed within the subpass. If {@code contents} is #SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS, the contents are recorded in secondary command buffers that will be called from the primary command buffer, and #CmdExecuteCommands() is the only valid command on the command buffer until #CmdNextSubpass() or #CmdEndRenderPass().""") ) @@ -10102,9 +10249,10 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                                C Specification
                                                                                                                                                                                                                                                To transition to the next subpass in the render pass instance after recording the commands for a subpass, call: -
                                                                                                                                                                                                                                                void vkCmdNextSubpass(
                                                                                                                                                                                                                                                +        
                                                                                                                                                                                                                                                +￿void vkCmdNextSubpass(
                                                                                                                                                                                                                                                 ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                                -￿    VkSubpassContents                           contents);
                                                                                                                                                                                                                                                +￿ VkSubpassContents contents);
                                                                                                                                                                                                                                                Description
                                                                                                                                                                                                                                                The subpass index for a render pass begins at zero when #CmdBeginRenderPass() is recorded, and increments each time #CmdNextSubpass() is recorded. @@ -10153,8 +10301,9 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                                C Specification
                                                                                                                                                                                                                                                To record a command to end a render pass instance after recording the commands for the last subpass, call: -
                                                                                                                                                                                                                                                void vkCmdEndRenderPass(
                                                                                                                                                                                                                                                -￿    VkCommandBuffer                             commandBuffer);
                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                +￿void vkCmdEndRenderPass(
                                                                                                                                                                                                                                                +￿    VkCommandBuffer                             commandBuffer);
                                                                                                                                                                                                                                                Description
                                                                                                                                                                                                                                                Ending a render pass instance performs any multisample resolve operations on the final subpass. @@ -10197,10 +10346,11 @@ o = min(m × depthBiasSlopeFactor + r × depthBiasConstantFactor, dept
                                                                                                                                                                                                                                                C Specification
                                                                                                                                                                                                                                                A secondary command buffer must not be directly submitted to a queue. Instead, secondary command buffers are recorded to execute as part of a primary command buffer with the command: -
                                                                                                                                                                                                                                                void vkCmdExecuteCommands(
                                                                                                                                                                                                                                                +        
                                                                                                                                                                                                                                                +￿void vkCmdExecuteCommands(
                                                                                                                                                                                                                                                 ￿    VkCommandBuffer                             commandBuffer,
                                                                                                                                                                                                                                                 ￿    uint32_t                                    commandBufferCount,
                                                                                                                                                                                                                                                -￿    const VkCommandBuffer*                      pCommandBuffers);
                                                                                                                                                                                                                                                +￿ const VkCommandBuffer* pCommandBuffers);
                                                                                                                                                                                                                                                Description
                                                                                                                                                                                                                                                If any element of {@code pCommandBuffers} was not recorded with the #COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT flag, and it was recorded into any other primary command buffer which is currently in the executable or recording state, that primary command buffer becomes invalid.